<?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>119489</bug_id>
          
          <creation_ts>2013-08-05 10:28:32 -0700</creation_ts>
          <short_desc>Move TypedArray implementation into JSC</short_desc>
          <delta_ts>2013-09-03 02:29:17 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>119064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xinchao.peng</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>914621</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 10:28:32 -0700</bug_when>
    <thetext>Move TypedArray implementation into JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914622</commentid>
    <comment_count>1</comment_count>
      <attachid>208135</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 10:30:18 -0700</bug_when>
    <thetext>Created attachment 208135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914624</commentid>
    <comment_count>2</comment_count>
      <attachid>208135</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 10:43:16 -0700</bug_when>
    <thetext>Comment on attachment 208135
Patch

Attachment 208135 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1386130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914625</commentid>
    <comment_count>3</comment_count>
      <attachid>208135</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 10:47:38 -0700</bug_when>
    <thetext>Comment on attachment 208135
Patch

Attachment 208135 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1374176</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914631</commentid>
    <comment_count>4</comment_count>
      <attachid>208135</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-05 11:14:39 -0700</bug_when>
    <thetext>Comment on attachment 208135
Patch

Attachment 208135 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1375168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914635</commentid>
    <comment_count>5</comment_count>
      <attachid>208135</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-05 11:59:08 -0700</bug_when>
    <thetext>Comment on attachment 208135
Patch

Attachment 208135 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1383190</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914640</commentid>
    <comment_count>6</comment_count>
      <attachid>208138</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 12:20:19 -0700</bug_when>
    <thetext>Created attachment 208138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914641</commentid>
    <comment_count>7</comment_count>
      <attachid>208138</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-05 12:27:27 -0700</bug_when>
    <thetext>Comment on attachment 208138
Patch

Thanks bro!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914642</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 12:29:49 -0700</bug_when>
    <thetext>waiting for so many builds :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914644</commentid>
    <comment_count>9</comment_count>
      <attachid>208138</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 12:32:12 -0700</bug_when>
    <thetext>Comment on attachment 208138
Patch

Attachment 208138 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1362038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914646</commentid>
    <comment_count>10</comment_count>
      <attachid>208138</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 12:33:47 -0700</bug_when>
    <thetext>Comment on attachment 208138
Patch

Attachment 208138 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1343033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914647</commentid>
    <comment_count>11</comment_count>
      <attachid>208138</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-05 12:35:11 -0700</bug_when>
    <thetext>Comment on attachment 208138
Patch

Attachment 208138 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1328039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914654</commentid>
    <comment_count>12</comment_count>
      <attachid>208141</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 12:47:24 -0700</bug_when>
    <thetext>Created attachment 208141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914661</commentid>
    <comment_count>13</comment_count>
      <attachid>208141</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 13:04:50 -0700</bug_when>
    <thetext>Comment on attachment 208141
Patch

Attachment 208141 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1363042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914662</commentid>
    <comment_count>14</comment_count>
      <attachid>208141</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 13:08:07 -0700</bug_when>
    <thetext>Comment on attachment 208141
Patch

Attachment 208141 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1364051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914663</commentid>
    <comment_count>15</comment_count>
      <attachid>208141</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-05 13:10:32 -0700</bug_when>
    <thetext>Comment on attachment 208141
Patch

Attachment 208141 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1327053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914664</commentid>
    <comment_count>16</comment_count>
      <attachid>208142</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 13:13:01 -0700</bug_when>
    <thetext>Created attachment 208142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914668</commentid>
    <comment_count>17</comment_count>
      <attachid>208144</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 13:23:07 -0700</bug_when>
    <thetext>Created attachment 208144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914671</commentid>
    <comment_count>18</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 13:26:47 -0700</bug_when>
    <thetext>sigh, lost project file changes going from one machine to the other, let&apos;s try this again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914690</commentid>
    <comment_count>19</comment_count>
      <attachid>208144</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-05 14:27:32 -0700</bug_when>
    <thetext>Comment on attachment 208144
Patch

Attachment 208144 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1366074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914692</commentid>
    <comment_count>20</comment_count>
      <attachid>208148</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 14:31:23 -0700</bug_when>
    <thetext>Created attachment 208148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914701</commentid>
    <comment_count>21</comment_count>
      <attachid>208148</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 14:47:55 -0700</bug_when>
    <thetext>Comment on attachment 208148
Patch

Attachment 208148 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1346072</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914703</commentid>
    <comment_count>22</comment_count>
      <attachid>208151</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 14:48:51 -0700</bug_when>
    <thetext>Created attachment 208151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914710</commentid>
    <comment_count>23</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-05 15:10:45 -0700</bug_when>
    <thetext>Committed r153728: &lt;http://trac.webkit.org/changeset/153728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917426</commentid>
    <comment_count>24</comment_count>
    <who name="Peng Xinchao">xinchao.peng</who>
    <bug_when>2013-08-14 22:59:45 -0700</bug_when>
    <thetext>
    (In reply to comment #0)
&gt; Move TypedArray implementation into JSC

I have a quession :
   Why do you do this? What is its advantage ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917434</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-08-14 23:29:18 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt;     (In reply to comment #0)
&gt; &gt; Move TypedArray implementation into JSC
&gt; 
&gt; I have a quession :
&gt;    Why do you do this? What is its advantage ?

It was explained on the mailing list. Please check:
[webkit-dev] Heads up: large typed array rewrite</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923916</commentid>
    <comment_count>26</comment_count>
    <who name="Peng Xinchao">xinchao.peng</who>
    <bug_when>2013-09-03 02:29:17 -0700</bug_when>
    <thetext>GNUmake build failed :
log info :
    ./.libs/../DerivedSources/WebCore/.libs/libWebCoreInternals_la-JSInternals.o: In function `_ZN7WebCore43jsInternalsPrototypeFunctionSerializeObjectEPN3JSC9ExecStateE&apos;:
JSInternals.cpp:(.text+0x7f78): undefined reference to `_ZN7WebCore21SerializedScriptValue6createEPN3JSC9ExecStateENS1_7JSValueEPN3WTF6VectorINS5_6RefPtrINS_11MessagePortEEELj1ENS5_15CrashOnOverflowEEEPNS6_INS7_INS1_11ArrayBufferEEELj1ESA_EENS_22SerializationErrorModeE&apos;
JSInternals.cpp:(.text+0x8028): undefined reference to `_ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEPNS0_11ArrayBufferE&apos;
collect2: error: ld returned 1 exit status</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208135</attachid>
            <date>2013-08-05 10:30:18 -0700</date>
            <delta_ts>2013-08-05 12:20:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119489-20130805103018.patch</filename>
            <type>text/plain</type>
            <size>261948</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTJkNjNhZGQ3NjI5YjQyNjhjOTkzNGEwM2YzZGNjYjdlYzRlNzUzLi5hZWRlMzc1NmZmOWQ2YmJh
YmNiYWY2ODBkNmI4ZWRjOTUwOTViYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQyBpbiBhZHZhbmNlIG9mIHJlLWltcGxlbWVudGF0aW9u
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEpTQ1R5cGVkQXJy
YXlTdHVicy5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Ojp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjphZGRWaWV3KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmguCisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpkYXRhKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM6OmNvcHlUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjppc05ldXRlcmVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6On5BcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZSk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpzbGljZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp+
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaC4KKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJhc2VBZGRyZXNz
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXROZXV0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojppc05ldXRlcmFibGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeVN1YlJhbmdlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojpz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6CisgICAgICAg
ICogcnVudGltZS9GbG9hdDMyQXJyYXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0Zs
b2F0MzJBcnJheS5oLgorICAgICAgICAoSlNDOjpGbG9hdDMyQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OkZsb2F0MzJBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OkZsb2F0MzJBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpGbG9hdDMyQXJyYXkpOgorICAgICAg
ICAoSlNDOjpGbG9hdDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0Zsb2F0
NjRBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmguCisg
ICAgICAgIChKU0M6OkZsb2F0NjRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFycmF5OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheSk6CisgICAgICAgIChKU0M6OkZsb2F0NjRB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSW50MTZBcnJheS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oLgorICAgICAgICAoSlNDOjpJbnQxNkFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkludDE2QXJyYXk6OkludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpJbnQxNkFycmF5OjpzdWJh
cnJheSk6CisgICAgICAgICogcnVudGltZS9JbnQzMkFycmF5Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9JbnQzMkFycmF5LmguCisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OmdldFR5
cGUpOgorICAgICAgICAoSlNDOjpJbnQzMkFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJ
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50MzJBcnJh
eTo6SW50MzJBcnJheSk6CisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OnN1YmFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL0ludDhBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYv
SW50OEFycmF5LmguCisgICAgICAgIChKU0M6OkludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAg
IChKU0M6OkludDhBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpJbnQ4QXJyYXkpOgor
ICAgICAgICAoSlNDOjpJbnQ4QXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTo6SW50ZWdyYWxU
eXBlZEFycmF5QmFzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QmFzZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6
VHlwZWRBcnJheUJhc2U6OmRhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c2V0
KToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OnNldFJhbmdlKToKKyAgICAgICAgKEpT
Qzo6VHlwZWRBcnJheUJhc2U6Onplcm9SYW5nZSk6CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlC
YXNlOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlCYXNlOjppdGVtKToKKyAgICAgICAgKEpTQzo6VHlw
ZWRBcnJheUJhc2U6OmNoZWNrSW5ib3VuZERhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5
QmFzZTo6VHlwZWRBcnJheUJhc2UpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c3ViYXJyYXlJbXBsKToKKyAgICAgICAg
KEpTQzo6VHlwZWRBcnJheUJhc2U6Om5ldXRlcik6CisgICAgICAgICogcnVudGltZS9VaW50MTZB
cnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaC4KKyAgICAg
ICAgKEpTQzo6VWludDE2QXJyYXk6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJheTo6VWludDE2QXJyYXkpOgorICAgICAgICAo
SlNDOjpVaW50MTZBcnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDMyQXJy
YXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQzMkFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6OlVpbnQzMkFycmF5KToKKyAgICAgICAgKEpT
Qzo6VWludDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL1VpbnQ4QXJyYXku
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaC4KKyAgICAgICAgKEpT
Qzo6VWludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpVaW50OEFycmF5OjpVaW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6VWludDhB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6Onpl
cm9GaWxsKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheSk6CisgICAgICAgIChK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDEzLTA4LTAyICBDaHJpcyBDdXJ0aXMgIDxjaHJpc19jdXJ0aXNAYXBwbGUuY29tPgog
CiAgICAgICAgIEdpdmUgdGhlIGVycm9yIG9iamVjdCdzIHN0YWNrIHByb3BlcnR5IGFjY2Vzc29y
IGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGJmODMyMDM2MTFkYzM4ZWYwMzFkNGQwMWQwM2NjYTEzNzNlZTQw
YWYuLmVkYTAyMWI3N2MxODU3NDIwMzFmNDVlMGQ4ZjAwNGY4MDdmZDdiMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBUeXBlZEFycmF5
IGltcGxlbWVudGF0aW9uIGZyb20gV1RGCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0
Zi9Gb3J3YXJkLmg6CisKIDIwMTMtMDgtMDIgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBhIGJ1bmNoIG9mIHJlZHVuZGFudCBjaGVja3Mg
Zm9yIGVtcHR5IHN0cmluZyBpbiBTdHJpbmdJbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5NmYzMzc4YWE5
YzI3ZDJjNzI3MjVjYTY0YzU3MDcwNDM0NmQwNy4uMTI2Yzk3Y2I3YTA5YzhkZWE0MTg1ZjljOGNi
MzhmNjI5YWU3NmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxMy0wOC0wNSAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYkNvcmUgZm9yIG5ldyBsb2NhdGlvbiBvZiBUeXBl
ZEFycmF5IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9BcnJheUJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0Zsb2F0NjRBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0ludDE2QXJyYXkuaDogQWRkZWQuCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9JbnQzMkFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50OEFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IEFkZGVk
LgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDE2QXJyYXkuaDogQWRk
ZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaDog
QWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENsYW1wZWRB
cnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5o
OgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRGbG9hdEZyZXF1ZW5jeURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEJ5dGVUaW1lRG9tYWluRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9EYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyUHJvY2Vzc29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmg6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1
ZmZlclZpZXdIZWxwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRmlsZVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRy
YW5zZmVyQXJyYXlCdWZmZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEFkZEluY2x1ZGVzRm9yVHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZl
bnQuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyU3luYy5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5o
OgorICAgICAgICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAqIGZp
bGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXIuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FycmF5QnVmZmVyVmll
dy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9EYXRhVmlldy5oOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0Zsb2F0MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQ4QXJy
YXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWlu
dDhBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTEJ1ZmZlcjo6ZWxlbWVudEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0NyeXB0by5j
cHA6CisgICAgICAgICogcGFnZS9DcnlwdG8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b3B0
aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKToKKwogMjAxMy0wOC0wMyAgWW9hdiBXZWlzcyAgPHlv
YXZAeW9hdi53cz4KIAogICAgICAgICBQcmVsb2FkU2Nhbm5lciBwcmVsb2FkcyBleHRlcm5hbCBD
U1Mgd2l0aCBub24tbWF0Y2hpbmcgbWVkaWEgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDBmOWVlY2I1ZGNlZjVlMDY2OTZkZDJmZGE1Mjc0
Yzc4NDkxODcxZWQuLjIwYjMwZGI4YjJiMjNiMzBmN2FhY2YyNWFiZGM0ODI4ZmFmODBhOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zMiw3ICszMiw3
IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAKIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAotICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJU2hpbXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaCBcCkBAIC02NDMsNiArNjQzLDEwIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29udmVudGlvbnMuaCBcCkBA
IC03MDQsNiArNzA4LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0aW9uSGFybmVzcy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
bG9hdDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQ2NEFy
cmF5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZUR1bXAuY3BwIFwKQEAgLTcyMiw2ICs3MjgsMTAgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXkuaCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnQ4QXJyYXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCkBAIC04ODEsOCArODkxLDEzIEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHJhY2luZy5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5RGVzY3JpcHRvci5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9VaW50MTZBcnJheS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VaW50MTZXaXRoRnJhY3Rpb24uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVWludDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWlu
dDhBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OENsYW1wZWRB
cnJheS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVN0YWNrQm91bmRzLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKaW5kZXggZDdhYzFlZjcyZWNhYzZhMmU2ZGM3MjgzYTc4
MWU1YWJlNTViZjcyMS4uMzkzZTEyMWIyYmZmNzAwOGQ4N2IyMzA5YzdkZTkzZTcxYjhmNjVkYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5U3R1YnMuaApAQCAtMjYsMTkg
KzI2LDIwIEBACiAjaWZuZGVmIEpTQ1R5cGVkQXJyYXlTdHVic19oCiAjZGVmaW5lIEpTQ1R5cGVk
QXJyYXlTdHVic19oCiAKKyNpbmNsdWRlICJGbG9hdDMyQXJyYXkuaCIKKyNpbmNsdWRlICJGbG9h
dDY0QXJyYXkuaCIKKyNpbmNsdWRlICJJbnQxNkFycmF5LmgiCisjaW5jbHVkZSAiSW50MzJBcnJh
eS5oIgorI2luY2x1ZGUgIkludDhBcnJheS5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQ2
NEFycmF5Lmg+CisjaW5jbHVkZSAiVWludDE2QXJyYXkuaCIKKyNpbmNsdWRlICJVaW50MzJBcnJh
eS5oIgorI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRlICJVaW50OENsYW1wZWRBcnJh
eS5oIgorCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSW50MTZBcnJh
eS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDhBcnJh
eS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MTZBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MzJB
cnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4
Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1Yjk5NjNjOTFhZDQ2NzE4ZTg4MjRlOGNjYmIzZDYwMjY3ZjU2NGY1
Li5hYjRmOTdjNDI1MjIwNDYwYmE5ZGYyNzdhZGU4YzExNzgzZDRlNmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODE0LDYgKzgxNCwyMSBAQAogCQlBN0E0QUUwRDE3OTczQjRE
MDA1NjEyQjEgLyogSklUU3R1YnNNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwOTE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1YnNNSVBT
LmggKi87IH07CiAJCUE3QTRBRTBGMTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic1NINC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBNEFFMEIxNzk3
M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzU0g0LmggKi87IH07CiAJCUE3QTRBRTEwMTc5NzNCNEQw
MDU2MTJCMSAvKiBKSVRTdHVic1g4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBNEFFMEMxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJz
WDg2Q29tbW9uLmggKi87IH07CisJCUE3QThBRjM0MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICovOyB9OworCQlBN0E4
QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBB
cnJheUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE3QThBRjM2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMjcxN0FE
QjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi87IH07CisJCUE3QThBRjM3MTdB
REI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJh
eUJ1ZmZlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyOTE3QURCNUYz
MDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdB
OEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNBMTdBREI1RjMwMDVBQjE3
NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzQjE3QURCNUYz
MDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdBOEFGMkMxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYz
QzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkQxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMy
QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBN0E4QUYzRDE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkUxN0FE
QjVGMzAwNUFCMTc0IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzRTE3QURCNUYzMDA1QUIx
NzQgLyogVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5QmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThB
RjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMDE3QURCNUYzMDA1QUIxNzQgLyogVWlu
dDhBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3QThBRjQwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMzExN0FEQjVG
MzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGNDExN0FEQjVGMzAwNUFCMTc0IC8qIFVp
bnQxNkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUY0MjE3QURCNUYzMDA1
QUIxNzQgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3QjQ4RjQ5
MEVFODkzNkYwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4REI2MEVFNzRDRkMwMERDQkRC
NiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQTdCNEFDQUYxNDg0QzlDRTAw
QjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0I0QUNBRTE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNy
b3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
N0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxvY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OUU3ODFGMTVFRUNCQTgwMDQ3
Qzg1NSAvKiBVbmxpbmtlZENvZGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xOTAxLDYgKzE5MTYsMjEgQEAKIAkJQTdBNEFFMEMxNzk3
M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVFN0dWJzWDg2Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3QTdFRTc0MTFCOThCOEQwMDY1QTE0RiAvKiBBU1RCdWlsZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFTVEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTdBN0VFNzcxMUI5OEI4RDAwNjVBMTRGIC8qIFN5bnRheENoZWNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ludGF4Q2hlY2tlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNjE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXJyYXlCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMjcxN0FE
QjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyVmlldy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxv
YXQzMkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZsb2F0MzJBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyQTE3QURCNUYzMDA1QUIx
NzQgLyogRmxvYXQ2NEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZs
b2F0NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyQjE3QURC
NUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyQzE3
QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThB
RjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludDMyQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdBOEFGMkUxN0FEQjVGMzAwNUFCMTc0IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyRjE3QURCNUYzMDA1QUIxNzQgLyog
VHlwZWRBcnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRB
cnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMzAxN0FEQjVG
MzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVWludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYzMTE3
QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVWludDhDbGFtcGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MzJBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0
YWJsZUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRh
YmxlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QjQ4REI2MEVF
NzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0I0QUNBRTE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRN
YWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeHBvcnRNYWNyb3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3OTUsNiArMjgyNSwyMSBAQAogCQk3
RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdBOEFGMjUxN0FEQjVGMjAwNUFCMTc0IC8qIEFy
cmF5QnVmZmVyLmNwcCAqLywKKwkJCQlBN0E4QUYyNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXIuaCAqLywKKwkJCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJW
aWV3LmNwcCAqLywKKwkJCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJW
aWV3LmggKi8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5o
ICovLAorCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywK
KwkJCQlBN0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggKi8sCisJCQkJQTdB
OEFGMkMxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyRDE3
QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oICovLAorCQkJCUE3QThBRjJFMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8sCisJCQkJQTdBOEFGMkYxN0FE
QjVGMzAwNUFCMTc0IC8qIFR5cGVkQXJyYXlCYXNlLmggKi8sCisJCQkJQTdBOEFGMzAxN0FEQjVG
MzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYzMTE3QURCNUYzMDA1QUIx
NzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIx
NzQgLyogVWludDE2QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyog
VWludDMyQXJyYXkuaCAqLywKIAkJCQk2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9u
U2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJNjU1M0EzMzAxN0ExRjFFRTAwOENGNkYz
IC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCkBAIC0zNTEwLDYgKzM1NTUsNyBAQAogCQkJCUJD
NkFBQUU1MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzNEN0FGMTY1QTE0MzAwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NjlBMDc5NzBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUY0MjE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEY5NDQxMTY2NzYzMzIwMEQ2MTk3MSAvKiBDb2Rl
QmxvY2tIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2RUJCMzE2Njc2RUY2MDA4QkFERTMg
LyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODIyMTY0
MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzU5NCw3ICsz
NjQwLDkgQEAKIAkJCQkwRkJDMEFFODE0OTZDN0M3MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEE5Nzc1MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWls
ZWRGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QkZGM0MwMTc5ODY4OTQwMDAyRjQ2
MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzQzE3
QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3
NzcxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQkRDMTYxNTFDNUQ0RjAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3RDg5Q0Y4MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkExN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNo
TGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2NTksNiArMzcwNyw3
IEBACiAJCQkJMEYyQkRDNDkxNTIyODA5NjAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkJEQzRCMTUyMjgwOUQwMENEODkxMCAvKiBERkdWYXJpYWJs
ZUV2ZW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxRTE2RDAyRjQ3MDA1NUE1
REIgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0Ex
N0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5
NjAxNEVGOTBCRDAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQjJDRTgxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmts
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0MjczMTE1OEVCRDU0MDA0Q0I5RkYgLyogRGlz
YXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM2NzYsNiArMzcyNSw3IEBACiAJCQkJMEZC
MTA1ODYxNjc1NDgxMjAwRjhBQjZFIC8qIEV4aXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEQjJDQzkxNzNEQTUyMDAwN0IzQzFCIC8qIEZUTEFiYnJldmlhdGVkVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50
OEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyog
RlRMQWJicmV2aWF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAw
QkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzcyNiw2ICszNzc2LDcgQEAKIAkJCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMg
LyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkE3QTk4MTNBQURGRjgwMDVC
N0MyQyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkM4RDAzMTE0QTNDRUZDMDA1NzhF
NjUgLyogSGVhcEJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzNzE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEY5NzQ0NzEz
OEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MjREMzFFMzE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyRTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzg0OSw5ICszOTAwLDEyIEBACiAJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcy
IC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MEEzMTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0E4QUYzRTE3QURCNUYzMDA1QUIxNzQgLyogVHlwZWRBcnJheUJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRDI4N0IyMTVFQzlBNTcwMERBODE2MSAvKiBMTElu
dE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8q
IExMSW50U2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzOTE3QURCNUYzMDA1
QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODM5RDE0QkNG
NDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTVBQjM4
MTc5OUU0QjIwMEQyODMzRCAvKiBMTFZNRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDJFMzEzOTEzNEZGMEE2MDBBRkFEQjUgLyogTG9jYWwuaCBpbiBIZWFkZXJzICovLApAQCAt
MzkxMiw2ICszOTY2LDcgQEAKIAkJCQkxNDk3MjA5MTE0RUI4MzE1MDBGRUIxQjcgLyogUGFzc1dl
YWsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzRCMTRDMTZENDNFMEQwMDFDREE1QSAvKiBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM0
MTRFMUI2MDAwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOTgyMDYxMTZCRkUzODMwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdl
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2
YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTAwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzkzOSwxNCArMzk5NCwxNyBAQAogCQkJCTBG
QjdGMzlDMTVFRDhFNDYwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm90ZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBN0E4QUY0MDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRC
eUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAg
LyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFC
NjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
NjBBQzIxNjc0MEY4MzAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3QThBRjNEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QTBFMTZGNUNEMDBCMzQ0NjAgLyogUmVnRXhw
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhw
Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2QTcwMDJDN0U4MiAvKiBS
ZWdFeHBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGMzUxN0FEQjVGMzAw
NUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDJENjBFMTcw
NzA4MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ1QjBFMTZGNUNEMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTQ2MTksNiArNDY3Nyw3IEBACiAJCQkJMTQ2QUFCMzgwQjY2QTk0NDAwRTU1RjE2
IC8qIEpTU3RyaW5nUmVmQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMEMxNTdFRTA5
RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODZFM0M2MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlBN0E4QUYzNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQ3MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1ZhcmlhYmxl
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFDMTY3QkFCRUUwMDZENzYwQSAv
KiBKU1ZpcnR1YWxNYWNoaW5lLm1tIGluIFNvdXJjZXMgKi8sCkBAIC00NjMwLDYgKzQ2ODksNyBA
QAogCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAv
KiBMZWdhY3lQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0E4QUYzNDE3QURCNUYz
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4RjIxQjAx
MDdFQzU0MTAwNDJFQzJDIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzU3
MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RTJFQTZDMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZiZWI2YmU2NjU3OGY4YTQ0NGUyMmZhNGM2ZTEzYTEwZDQyMGRiYzEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAK
QEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBcnJheUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworYm9vbCBBcnJheUJ1ZmZlcjo6dHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYg
cmVzdWx0LCBWZWN0b3I8UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cykK
K3sKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGtlZXBBbGl2ZSh0aGlzKTsKKworICAgIGlmICgh
bV9jb250ZW50cy5tX2RhdGEpIHsKKyAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IDA7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIGFsbFZpZXdzQXJlTmV1dGVyYWJsZSA9
IHRydWU7CisgICAgZm9yIChBcnJheUJ1ZmZlclZpZXcqIGkgPSBtX2ZpcnN0VmlldzsgaTsgaSA9
IGktPm1fbmV4dFZpZXcpIHsKKyAgICAgICAgaWYgKCFpLT5pc05ldXRlcmFibGUoKSkKKyAgICAg
ICAgICAgIGFsbFZpZXdzQXJlTmV1dGVyYWJsZSA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChh
bGxWaWV3c0FyZU5ldXRlcmFibGUpCisgICAgICAgIG1fY29udGVudHMudHJhbnNmZXIocmVzdWx0
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9jb250ZW50cy5jb3B5VG8ocmVzdWx0KTsKKyAgICAg
ICAgaWYgKCFyZXN1bHQubV9kYXRhKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHdoaWxlIChtX2ZpcnN0VmlldykgeworICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIGN1
cnJlbnQgPSBtX2ZpcnN0VmlldzsKKyAgICAgICAgcmVtb3ZlVmlldyhjdXJyZW50KTsKKyAgICAg
ICAgaWYgKGFsbFZpZXdzQXJlTmV1dGVyYWJsZSB8fCBjdXJyZW50LT5pc05ldXRlcmFibGUoKSkK
KyAgICAgICAgICAgIGN1cnJlbnQtPm5ldXRlcigpOworICAgICAgICBuZXV0ZXJlZFZpZXdzLmFw
cGVuZChjdXJyZW50KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXJyYXlC
dWZmZXI6OmFkZFZpZXcoQXJyYXlCdWZmZXJWaWV3KiB2aWV3KQoreworICAgIHZpZXctPm1fYnVm
ZmVyID0gdGhpczsKKyAgICB2aWV3LT5tX3ByZXZWaWV3ID0gMDsKKyAgICB2aWV3LT5tX25leHRW
aWV3ID0gbV9maXJzdFZpZXc7CisgICAgaWYgKG1fZmlyc3RWaWV3KQorICAgICAgICBtX2ZpcnN0
Vmlldy0+bV9wcmV2VmlldyA9IHZpZXc7CisgICAgbV9maXJzdFZpZXcgPSB2aWV3OworfQorCit2
b2lkIEFycmF5QnVmZmVyOjpyZW1vdmVWaWV3KEFycmF5QnVmZmVyVmlldyogdmlldykKK3sKKyAg
ICBBU1NFUlQodGhpcyA9PSB2aWV3LT5tX2J1ZmZlcik7CisgICAgaWYgKHZpZXctPm1fbmV4dFZp
ZXcpCisgICAgICAgIHZpZXctPm1fbmV4dFZpZXctPm1fcHJldlZpZXcgPSB2aWV3LT5tX3ByZXZW
aWV3OworICAgIGlmICh2aWV3LT5tX3ByZXZWaWV3KQorICAgICAgICB2aWV3LT5tX3ByZXZWaWV3
LT5tX25leHRWaWV3ID0gdmlldy0+bV9uZXh0VmlldzsKKyAgICBpZiAobV9maXJzdFZpZXcgPT0g
dmlldykKKyAgICAgICAgbV9maXJzdFZpZXcgPSB2aWV3LT5tX25leHRWaWV3OworICAgIHZpZXct
Pm1fcHJldlZpZXcgPSB2aWV3LT5tX25leHRWaWV3ID0gMDsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdjNzM0YzY3MzQ4
MTA5N2M4MTc2ZGQ2NGE4ZGEwYmRiMzRjNmVjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTAsMCArMSwyNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEFycmF5QnVmZmVyX2gKKyNkZWZpbmUgQXJyYXlCdWZmZXJfaAorCisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7
CisKK2NsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFycmF5QnVmZmVyQ29udGVudHMpOworcHVibGljOgorICAgIEFycmF5QnVmZmVyQ29udGVudHMo
KSAKKyAgICAgICAgOiBtX2RhdGEoMCkKKyAgICAgICAgLCBtX3NpemVJbkJ5dGVzKDApCisgICAg
eyB9CisKKyAgICBpbmxpbmUgfkFycmF5QnVmZmVyQ29udGVudHMoKTsKKworICAgIHZvaWQqIGRh
dGEoKSB7IHJldHVybiBtX2RhdGE7IH0KKyAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIHsgcmV0
dXJuIG1fc2l6ZUluQnl0ZXM7IH0KKworcHJpdmF0ZToKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
KHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzKSAKKyAgICAgICAgOiBtX2RhdGEoZGF0
YSkKKyAgICAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQorICAgIHsgfQorCisgICAg
ZnJpZW5kIGNsYXNzIEFycmF5QnVmZmVyOworCisgICAgZW51bSBJbml0aWFsaXphdGlvblBvbGlj
eSB7CisgICAgICAgIFplcm9Jbml0aWFsaXplLAorICAgICAgICBEb250SW5pdGlhbGl6ZQorICAg
IH07CisKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3ksIEFy
cmF5QnVmZmVyQ29udGVudHMmKTsKKyAgICB2b2lkIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVu
dHMmIG90aGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOworICAgICAg
ICBvdGhlci5tX2RhdGEgPSBtX2RhdGE7CisgICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBt
X3NpemVJbkJ5dGVzOworICAgICAgICBtX2RhdGEgPSAwOworICAgICAgICBtX3NpemVJbkJ5dGVz
ID0gMDsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhl
cikKKyAgICB7CisgICAgICAgIEFTU0VSVCghb3RoZXIubV9kYXRhKTsKKyAgICAgICAgQXJyYXlC
dWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUobV9zaXplSW5CeXRlcywgc2l6ZW9mKGNoYXIpLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSwgb3RoZXIpOworICAgICAgICBpZiAo
IW90aGVyLm1fZGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbWVtY3B5KG90aGVy
Lm1fZGF0YSwgbV9kYXRhLCBtX3NpemVJbkJ5dGVzKTsKKyAgICAgICAgb3RoZXIubV9zaXplSW5C
eXRlcyA9IG1fc2l6ZUluQnl0ZXM7CisgICAgfQorCisgICAgdm9pZCogbV9kYXRhOworICAgIHVu
c2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cit9OworCitjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXIqKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFy
cmF5QnVmZmVyQ29udGVudHMmKTsKKworICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisKKyAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwor
ICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7CisgICAgaW5saW5lIHVuc2lnbmVk
IGJ5dGVMZW5ndGgoKSBjb25zdDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBzbGljZShpbnQgYmVnaW4sIGludCBlbmQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4pIGNvbnN0OworCisgICAgdm9pZCBhZGRWaWV3
KEFycmF5QnVmZmVyVmlldyopOworICAgIHZvaWQgcmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcq
KTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29u
dGVudHMmLCBWZWN0b3I8UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cyk7
CisgICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fY29udGVudHMubV9kYXRhOyB9CisK
KyAgICB+QXJyYXlCdWZmZXIoKSB7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSk7CisKKyAgICBpbmxpbmUgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYpOwor
ICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVn
aW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgo
aW50IGluZGV4KSBjb25zdDsKKyAgICBzdGF0aWMgaW5saW5lIGludCBjbGFtcFZhbHVlKGludCB4
LCBpbnQgbGVmdCwgaW50IHJpZ2h0KTsKKworICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250
ZW50czsKKyAgICBBcnJheUJ1ZmZlclZpZXcqIG1fZmlyc3RWaWV3OworfTsKKworaW50IEFycmF5
QnVmZmVyOjpjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KQoreworICAgIEFT
U0VSVChsZWZ0IDw9IHJpZ2h0KTsKKyAgICBpZiAoeCA8IGxlZnQpCisgICAgICAgIHggPSBsZWZ0
OworICAgIGlmIChyaWdodCA8IHgpCisgICAgICAgIHggPSByaWdodDsKKyAgICByZXR1cm4geDsK
K30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQoreworICAgIHJldHVybiBj
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
WmVyb0luaXRpYWxpemUpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKEFycmF5QnVmZmVyKiBvdGhlcikKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShvdGhlci0+ZGF0YSgpLCBvdGhlci0+Ynl0ZUxlbmd0aCgpKTsKK30KKworUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCit7CisgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50
czsKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6ZSwgY29udGVudHMpOworICAgIGlmICgh
Y29udGVudHMubV9kYXRhKQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOworICAgIG1l
bWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiBjb250ZW50cykKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCit7CisgICAgcmV0dXJuIGNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlh
bGl6ZSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQoreworICAgIEFycmF5QnVm
ZmVyQ29udGVudHMgY29udGVudHM7CisgICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2Nh
dGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5LCBjb250ZW50cyk7CisgICAg
aWYgKCFjb250ZW50cy5tX2RhdGEpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVudHMpKTsKK30KKworQXJyYXlCdWZmZXI6OkFycmF5
QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIGNvbnRlbnRzKQorICAgIDogbV9maXJzdFZpZXco
MCkKK3sKKyAgICBjb250ZW50cy50cmFuc2ZlcihtX2NvbnRlbnRzKTsKK30KKwordm9pZCogQXJy
YXlCdWZmZXI6OmRhdGEoKQoreworICAgIHJldHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKK30KKwor
Y29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nv
bnRlbnRzLm1fZGF0YTsKK30KKwordW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBj
b25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzLm1fc2l6ZUluQnl0ZXM7Cit9CisKK1Bhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShpbnQgYmVnaW4sIGludCBlbmQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJ
bmRleChlbmQpKTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlKGludCBiZWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgo
YmVnaW4pLCBieXRlTGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Cit7
CisgICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKKyAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKSArIGJlZ2luLCBzaXplKTsKK30KKwordW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoaW50IGluZGV4KSBjb25zdAoreworICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRl
TGVuZ3RoKCk7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSBjdXJyZW50TGVu
Z3RoICsgaW5kZXg7CisgICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5n
dGgpOworfQorCit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVu
dHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVz
dWx0KQoreworICAgIC8vIERvIG5vdCBhbGxvdyAzMi1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFs
IHNpemUuCisgICAgLy8gRklYTUU6IFdoeSBub3Q/IFRoZSB0cnlGYXN0Q2FsbG9jIGZ1bmN0aW9u
IGFscmVhZHkgY2hlY2tzIGl0cyBhcmd1bWVudHMsCisgICAgLy8gYW5kIHdpbGwgZmFpbCBpZiB0
aGVyZSBpcyBhbnkgb3ZlcmZsb3csIHNvIHdoeSBzaG91bGQgd2UgaW5jbHVkZSBhCisgICAgLy8g
cmVkdWRhbnQgdW5uZWNlc3NhcmlseSByZXN0cmljdGl2ZSBjaGVjayBoZXJlPworICAgIGlmIChu
dW1FbGVtZW50cykgeworICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAq
IGVsZW1lbnRCeXRlU2l6ZTsKKyAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9
IGVsZW1lbnRCeXRlU2l6ZSkgeworICAgICAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IDA7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgYm9vbCBhbGxvY2F0aW9uU3Vj
Y2VlZGVkID0gZmFsc2U7CisgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKKyAgICAg
ICAgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IFdURjo6dHJ5RmFzdENhbGxvYyhudW1FbGVtZW50cywg
ZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1bHQubV9kYXRhKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKHBvbGljeSA9PSBEb250SW5pdGlhbGl6ZSk7CisgICAgICAgIGFsbG9jYXRp
b25TdWNjZWVkZWQgPSBXVEY6OnRyeUZhc3RNYWxsb2MobnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0
ZVNpemUpLmdldFZhbHVlKHJlc3VsdC5tX2RhdGEpOworICAgIH0KKworICAgIGlmIChhbGxvY2F0
aW9uU3VjY2VlZGVkKSB7CisgICAgICAgIHJlc3VsdC5tX3NpemVJbkJ5dGVzID0gbnVtRWxlbWVu
dHMgKiBlbGVtZW50Qnl0ZVNpemU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVzdWx0
Lm1fZGF0YSA9IDA7Cit9CisKK0FycmF5QnVmZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRl
bnRzKCkKK3sKKyAgICBXVEY6OmZhc3RGcmVlKG1fZGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCit1c2luZyBKU0M6OkFycmF5QnVmZmVyOwordXNpbmcgSlNDOjpBcnJheUJ1ZmZlckNv
bnRlbnRzOworCisjZW5kaWYgLy8gQXJyYXlCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ4NmFmOThl
ZDAyZWM0MGYzZjNjNzc2NzQ5NjgzYzVjMjJiNmZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcnJheUJ1ZmZl
clZpZXcuaCIKKworI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCisgICAgOiBtX2J5dGVPZmZzZXQoYnl0ZU9m
ZnNldCkKKyAgICAsIG1faXNOZXV0ZXJhYmxlKHRydWUpCisgICAgLCBtX2J1ZmZlcihidWZmZXIp
CisgICAgLCBtX3ByZXZWaWV3KDApCisgICAgLCBtX25leHRWaWV3KDApCit7CisgICAgbV9iYXNl
QWRkcmVzcyA9IG1fYnVmZmVyID8gKHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgp
KSArIG1fYnl0ZU9mZnNldCkgOiAwOworICAgIGlmIChtX2J1ZmZlcikgCisgICAgICAgIG1fYnVm
ZmVyLT5hZGRWaWV3KHRoaXMpOworfQorCitBcnJheUJ1ZmZlclZpZXc6On5BcnJheUJ1ZmZlclZp
ZXcoKQoreworICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9idWZmZXItPnJlbW92ZVZpZXco
dGhpcyk7Cit9CisKK3ZvaWQgQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKQoreworICAgIG1fYnVm
ZmVyID0gMDsKKyAgICBtX2J5dGVPZmZzZXQgPSAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMWFjM2Ez
MTQ3MjQ3YjU4OWM0ZTJjNTcxYmU3YzliNGE1NTc5NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMCwwICsxLDIw
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgQXJyYXlCdWZmZXJWaWV3X2gKKyNkZWZpbmUgQXJyYXlC
dWZmZXJWaWV3X2gKKworI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEFycmF5QnVmZmVyVmlldz4geworcHVibGljOgorICAgIGVudW0gVmlld1R5cGUgeworICAg
ICAgICBUeXBlSW50OCwKKyAgICAgICAgVHlwZVVpbnQ4LAorICAgICAgICBUeXBlVWludDhDbGFt
cGVkLAorICAgICAgICBUeXBlSW50MTYsCisgICAgICAgIFR5cGVVaW50MTYsCisgICAgICAgIFR5
cGVJbnQzMiwKKyAgICAgICAgVHlwZVVpbnQzMiwKKyAgICAgICAgVHlwZUZsb2F0MzIsCisgICAg
ICAgIFR5cGVGbG9hdDY0LAorICAgICAgICBUeXBlRGF0YVZpZXcKKyAgICB9OworICAgIHZpcnR1
YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0ID0gMDsKKworICAgIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9idWZmZXI7Cisg
ICAgfQorCisgICAgdm9pZCogYmFzZUFkZHJlc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYmFzZUFkZHJlc3M7CisgICAgfQorCisgICAgdW5zaWduZWQgYnl0ZU9mZnNldCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OworICAgIH0KKworICAgIHZp
cnR1YWwgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0ID0gMDsKKworICAgIHZvaWQgc2V0TmV1
dGVyYWJsZShib29sIGZsYWcpIHsgbV9pc05ldXRlcmFibGUgPSBmbGFnOyB9CisgICAgYm9vbCBp
c05ldXRlcmFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzTmV1dGVyYWJsZTsgfQorCisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOworCitwcm90ZWN0ZWQ6
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBs
KEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworCisgICAgaW5saW5lIGJv
b2wgc2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwg
dW5zaWduZWQgYnl0ZU9mZnNldCk7CisKKyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOworCisgICAgc3RhdGlj
IGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQs
IHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7
CisKKyAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4g
QXJyYXlCdWZmZXIgaXMKKyAgICAvLyB3aXRoaW4gcmFuZ2UuCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2UoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cykK
KyAgICB7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoc2l6ZW9mKFQpID4gMSAmJiBieXRlT2Zmc2V0ICUgc2l6ZW9mKFQpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoYnl0ZU9mZnNldCA+IGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1bnNpZ25l
ZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIGJ5dGVPZmZzZXQp
IC8gc2l6ZW9mKFQpOworICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgLy8gSW5wdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBmcm9tIHRo
aXMgYXJyYXkncyB2aWV3OworICAgIC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5
dGVzIGZyb20gdGhlIHVuZGVybHlpbmcgYnVmZmVyJ3Mgdmlldy4KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgICBzdGF0aWMgdm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LCB1bnNp
Z25lZCAqb2Zmc2V0LCB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgeworICAgICAgICB1bnNp
Z25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQp
OworICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgeworICAgICAgICAgICAgKm9mZnNl
dCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAqb2Zmc2V0ID0gYXJyYXlC
eXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKKyAgICAgICAgKm9mZnNldCA9IHN0ZDo6
bWluKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKKyAgICAgICAgdW5zaWduZWQgcmVt
YWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVv
ZihUKTsKKyAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMs
ICpudW1FbGVtZW50cyk7CisgICAgfQorCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
dm9pZCBuZXV0ZXIoKTsKKworICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFycmF5
QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCisgICAgdm9pZCogbV9iYXNl
QWRkcmVzczsKKworICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6IDMxOworICAgIGJvb2wgbV9p
c05ldXRlcmFibGUgOiAxOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZl
cjsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOworICAgIEFycmF5QnVmZmVyVmll
dyogbV9wcmV2VmlldzsKKyAgICBBcnJheUJ1ZmZlclZpZXcqIG1fbmV4dFZpZXc7Cit9OworCiti
b29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1bnNp
Z25lZCBieXRlT2Zmc2V0KQoreworICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCisg
ICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgp
CisgICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNl
dCkgeworICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0
PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKKyAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBh
cnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQoreworICAg
IGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCisgICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBk
YXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0
YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7CisgICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZz
ZXQgb3Igb3ZlcmZsb3cKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBj
aGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOworICAgIG1lbW1v
dmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQg
Ynl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK3sKKyAgICBpZiAoYnl0ZU9mZnNl
dCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3Ro
ID4gYnl0ZUxlbmd0aCgpCisgICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGgg
PCBieXRlT2Zmc2V0KSB7CisgICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZs
b3cKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBjaGFyKiBiYXNlID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOworICAgIG1lbXNldChiYXNlICsgYnl0
ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGlu
dCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxl
bmd0aCkKK3sKKyAgICBpZiAoc3RhcnQgPCAwKQorICAgICAgICBzdGFydCArPSBhcnJheVNpemU7
CisgICAgaWYgKHN0YXJ0IDwgMCkKKyAgICAgICAgc3RhcnQgPSAwOworICAgIGlmIChlbmQgPCAw
KQorICAgICAgICBlbmQgKz0gYXJyYXlTaXplOworICAgIGlmIChlbmQgPCAwKQorICAgICAgICBl
bmQgPSAwOworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFycmF5U2l6ZSkK
KyAgICAgICAgZW5kID0gYXJyYXlTaXplOworICAgIGlmIChlbmQgPCBzdGFydCkKKyAgICAgICAg
ZW5kID0gc3RhcnQ7CisgICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydCk7
CisgICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkFycmF5QnVmZmVyVmlldzsKKworI2Vu
ZGlmIC8vIEFycmF5QnVmZmVyVmlld19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Zsb2F0MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNTI1NzQxN2NhMjc1MmU2NjI4ODkzOGZiZjY5
N2U3MzNiOGVkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GbG9hdDMyQXJyYXkuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBG
bG9hdDMyQXJyYXlfaAorI2RlZmluZSBGbG9hdDMyQXJyYXlfaAorCisjaW5jbHVkZSAiVHlwZWRB
cnJheUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgRmxvYXQzMkFycmF5IDogcHVibGljIFR5cGVkQXJyYXlCYXNlPGZsb2F0PiB7
CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0
MzJBcnJheT4gY3JlYXRlKGNvbnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisK
KyAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBh
cnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMg
ZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpzZXQ7CisK
KyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6bV9sZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6ZGF0YSgpW2luZGV4
XSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSk7CisgICAgfQorCisgICAgaW5saW5lIFBhc3NS
ZWZQdHI8RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGlu
ZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdDsKKworICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gVHlwZUZsb2F0MzI7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBG
bG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1
cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGZsb2F0PjsKK307CisK
K1Bhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZsb2F0
MzJBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJB
cnJheTo6Y3JlYXRlKGNvbnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGFycmF5
LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5Ojpj
cmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6
Y3JlYXRlPEZsb2F0MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+Ojpj
cmVhdGVVbmluaXRpYWxpemVkPEZsb2F0MzJBcnJheT4obGVuZ3RoKTsKK30KKworRmxvYXQzMkFy
cmF5OjpGbG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBUeXBlZEFycmF5QmFzZTxmbG9h
dD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQz
MkFycmF5PiBGbG9hdDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDMy
QXJyYXk+IEZsb2F0MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAor
eworICAgIHJldHVybiBzdWJhcnJheUltcGw8RmxvYXQzMkFycmF5PihzdGFydCwgZW5kKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6RmxvYXQzMkFycmF5OworCisjZW5k
aWYgLy8gRmxvYXQzMkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Zsb2F0NjRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxv
YXQ2NEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3ZWRiZDNiOGU1OWM1MjgxODM3NDExOWY4YTlkOTdj
MjI3MWE0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Zsb2F0NjRBcnJheS5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmxvYXQ2
NEFycmF5X2gKKyNkZWZpbmUgRmxvYXQ2NEFycmF5X2gKKworI2luY2x1ZGUgIlR5cGVkQXJyYXlC
YXNlLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEZsb2F0NjRBcnJheSA6IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxkb3VibGU+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVhdGUo
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFy
cmF5PiBjcmVhdGUoY29uc3QgZG91YmxlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAg
ICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJh
eSB3aWxsIGJlIGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGly
ZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6c2V0OworCisg
ICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAg
IGlmIChpbmRleCA+PSBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjptX2xlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6ZGF0YSgpW2luZGV4
XSA9IHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpOworICAgIH0KKworICAgIGlubGluZSBQYXNz
UmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxp
bmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkg
Y29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFR5cGVGbG9hdDY0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUg
RmxvYXQ2NEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIAorICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJs
ZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxkb3VibGU+
OworfTsKKworUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6Y3Jl
YXRlPEZsb2F0NjRBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+
IEZsb2F0NjRBcnJheTo6Y3JlYXRlKGNvbnN0IGRvdWJsZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6Y3JlYXRlPEZsb2F0NjRB
cnJheT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9h
dDY0QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8ZG91YmxlPjo6Y3JlYXRlPEZsb2F0NjRBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOworfQorCitQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8ZG91YmxlPjo6Y3JlYXRlVW5pbml0aWFsaXplZDxGbG9hdDY0QXJyYXk+KGxlbmd0aCk7Cit9
CisKK0Zsb2F0NjRBcnJheTo6RmxvYXQ2NEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogVHlwZWRB
cnJheUJhc2U8ZG91YmxlPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKK3sKK30KKworUGFz
c1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBj
b25zdAoreworICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNz
UmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGlu
dCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxGbG9hdDY0QXJyYXk+KHN0
YXJ0LCBlbmQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpGbG9hdDY0
QXJyYXk7CisKKyNlbmRpZiAvLyBGbG9hdDY0QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MTZBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50MTZBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NjZhZTRkYTdlMjMyYjU2N2Y5YTI0
ZWYzZjliYzhmMWZiYTMwMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnQxNkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEludDE2QXJyYXlfaAorI2RlZmluZSBJbnQxNkFycmF5X2gKKworI2luY2x1ZGUgIkludGVn
cmFsVHlwZWRBcnJheUJhc2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVm
ZmVyOworCitjbGFzcyBJbnQxNkFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8
aW50MTZfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFy
cmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8SW50MTZBcnJheT4gY3JlYXRlKGNvbnN0IGludDE2X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGUoUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCk7CisKKyAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVu
dGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJl
c3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+Ojpz
ZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6c2V0OworCisg
ICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25z
dDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQs
IGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBUeXBlSW50MTY7CisgICAgfQorCitwcml2YXRlOgorICAg
IGlubGluZSBJbnQxNkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNp
YmxlIHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGludDE2
X3Q+OworfTsKKworUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6Y3Jl
YXRlPEludDE2QXJyYXk+KGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50
MTZBcnJheTo6Y3JlYXRlKGNvbnN0IGludDE2X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+OjpjcmVhdGU8SW50MTZBcnJheT4o
YXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6
Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQxNl90
Pjo6Y3JlYXRlPEludDE2QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKwor
UGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50MTZBcnJheT4obGVuZ3RoKTsKK30KKworSW50MTZBcnJheTo6
SW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50
MTZfdD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8SW50
MTZBcnJheT4gSW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJl
dHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPEludDE2QXJy
YXk+IEludDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDE2QXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpJbnQxNkFycmF5OworCisjZW5kaWYgLy8gSW50
MTZBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQz
MkFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQzMkFycmF5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmY2NTkyNzg4MjZiM2YyNmIzMTE5NGQwMjJhOGU4YzZhMjZjNTc1MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDMyQXJyYXkuaApA
QCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQzMkFycmF5X2gKKyNkZWZpbmUg
SW50MzJBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnQzMkFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRB
cnJheUJhc2U8aW50PiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPElu
dDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgaW50KiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlKFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBl
bnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSBy
ZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxpbnQ+OjpzZXQ7
CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ+OjpzZXQ7CisKKyAgICBpbmxp
bmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAg
IGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5l
IEludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1
cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGludD47Cit9OworCitQ
YXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludD46OmNyZWF0ZTxJbnQzMkFycmF5Pihs
ZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZShj
b25zdCBpbnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPGludD46OmNyZWF0ZTxJbnQzMkFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFz
c1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludD46OmNyZWF0ZTxJbnQzMkFycmF5PihidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJu
IFR5cGVkQXJyYXlCYXNlPGludD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50MzJBcnJheT4obGVu
Z3RoKTsKK30KKworSW50MzJBcnJheTo6SW50MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IElu
dGVncmFsVHlwZWRBcnJheUJhc2U8aW50PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKK3sK
K30KKworUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3Rh
cnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisK
K1Bhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBp
bnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheUltcGw8SW50MzJBcnJheT4oc3Rh
cnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkludDMyQXJy
YXk7CisKKyNlbmRpZiAvLyBJbnQzMkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludDhBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50OEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBmMjI4NjY2NTk0NmIzZDM5OGM5OTJhZTg1ODBi
YzU3Y2I0Y2VjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludDhBcnJheS5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEludDhB
cnJheV9oCisjZGVmaW5lIEludDhBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xh
c3MgSW50OEFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50OF90PiB7Citw
dWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4g
Y3JlYXRlKGNvbnN0IGludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hv
dWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBi
ZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRv
IEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsK
KworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGludDhfdD46OnNldDsKKyAgICB1c2luZyBJbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlPGludDhfdD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRy
PEludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1Jl
ZlB0cjxJbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IFR5cGVJbnQ4OworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgSW50OEFycmF5KFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworCisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCisgICAg
ZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGludDhfdD47Cit9OworCitQYXNzUmVmUHRyPElu
dDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVy
biBUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+OjpjcmVhdGU8SW50OEFycmF5PihsZW5ndGgpOworfQor
CitQYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGUoY29uc3QgaW50OF90KiBh
cnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ4
X3Q+OjpjcmVhdGU8SW50OEFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJ
bnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTxpbnQ4X3Q+OjpjcmVhdGU8SW50OEFycmF5PihidWZmZXIsIGJ5dGVPZmZz
ZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTxpbnQ4X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDhBcnJheT4obGVuZ3RoKTsKK30K
KworSW50OEFycmF5OjpJbnQ4QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlPGludDhfdD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bh
c3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0
cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25z
dAoreworICAgIHJldHVybiBzdWJhcnJheUltcGw8SW50OEFycmF5PihzdGFydCwgZW5kKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6SW50OEFycmF5OworCisjZW5kaWYg
Ly8gSW50OEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWM5ODllYzdmMjMwN2Q4Nzhm
YTEyZWI1YmUwY2Q0OTY5ZTFmYjFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEludGVncmFsVHlwZWRBcnJheUJhc2VfaAorI2RlZmluZSBJbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlX2gKKworI2luY2x1ZGUgIlR5cGVkQXJyYXlCYXNlLmgiCisjaW5j
bHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKKy8vIEJhc2UgY2xh
c3MgZm9yIGFsbCBXZWJHTDxUPkFycmF5IHR5cGVzIGhvbGRpbmcgaW50ZWdyYWwKKy8vIChub24t
ZmxvYXRpbmctcG9pbnQpIHZhbHVlcy4KKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgSW50ZWdyYWxUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBUeXBlZEFy
cmF5QmFzZTxUPiB7CitwdWJsaWM6CisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJs
ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBUeXBlZEFycmF5QmFzZTxUPjo6
bV9sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZh
bHVlKSkgLy8gQ2xhbXAgTmFOIHRvIDAKKyAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAg
Ly8gVGhlIGRvdWJsZSBjYXN0IGlzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGNvcnJlY3Qgd3JhcHBp
bmcKKyAgICAgICAgLy8gZm9yIG91dC1vZi1yYW5nZSB2YWx1ZXMgd2l0aCBJbnQzMkFycmF5IGFu
ZCBVaW50MzJBcnJheS4KKyAgICAgICAgVHlwZWRBcnJheUJhc2U8VD46OmRhdGEoKVtpbmRleF0g
PSBzdGF0aWNfY2FzdDxUPihzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpOworICAgIH0KKwor
cHJvdGVjdGVkOgorICAgIEludGVncmFsVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
ICAgIDogVHlwZWRBcnJheUJhc2U8VD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCisgICAg
eworICAgIH0KKworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
ZEFycmF5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmZTdhNmMxYTU2Njk1NzhlZTFkNWE2MDZjY2RkOGQ2
NDBkYzExODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlZEFycmF5QmFzZS5oCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBU
eXBlZEFycmF5QmFzZV9oCisjZGVmaW5lIFR5cGVkQXJyYXlCYXNlX2gKKworI2luY2x1ZGUgIkFy
cmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVi
bGljIEFycmF5QnVmZmVyVmlldyB7CitwdWJsaWM6CisgICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFQqPihiYXNlQWRkcmVzcygpKTsgfQorCisgICAgYm9vbCBzZXQoVHlw
ZWRBcnJheUJhc2U8VD4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgeworICAgICAgICBy
ZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBi
b29sIHNldFJhbmdlKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBv
ZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBkYXRhTGVuZ3RoICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBz
aXplb2YoVCkpOworICAgIH0KKworICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNl
dCAqIHNpemVvZihUKSwgbGVuZ3RoICogc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICAvLyBPdmVy
cmlkZGVuIGZyb20gQXJyYXlCdWZmZXJWaWV3LiBUaGlzIG11c3QgYmUgcHVibGljIGJlY2F1c2Ug
b2YKKyAgICAvLyBydWxlcyBhYm91dCBpbmhlcml0YW5jZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRl
IGNsYXNzZXMsIGFuZAorICAgIC8vIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJz
IHRvIHN1YmNsYXNzZXMuCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2xlbmd0aDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQp
OworICAgIH0KKworICAgIC8vIEludm9rZWQgYnkgdGhlIGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5v
dCBwZXJmb3JtIHJhbmdlIGNoZWNrczsgY2FsbGVyCisgICAgLy8gaXMgcmVzcG9uc2libGUgZm9y
IGRvaW5nIHNvIGFuZCByZXR1cm5pbmcgdW5kZWZpbmVkIGFzIG5lY2Vzc2FyeS4KKyAgICBUIGl0
ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpbmRleCA8IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCk7Cisg
ICAgICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XTsKKyAgICB9CisK
KyAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3Mp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBtX2xlbmd0aAorICAgICAg
ICAgICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3RoCisgICAgICAgICAgICAvLyBjaGVjayBv
dmVyZmxvdworICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zID49IG9mZnNldCk7CisgICAgfQor
Citwcm90ZWN0ZWQ6CisgICAgVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgICAgIDog
QXJyYXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCkKKyAgICAgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShsZW5ndGgsIHNpemVvZihUKSk7CisgICAgICAgIGlmICghYnVmZmVyLmdldCgpKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZl
ciwgMCwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZShjb25zdCBUKiBhcnJheSwgdW5z
aWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgUmVmUHRyPFN1YmNsYXNzPiBhID0gY3JlYXRl
PFN1YmNsYXNzPihsZW5ndGgpOworICAgICAgICBpZiAoYSkKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBhLT5zZXQoaSwg
YXJyYXlbaV0pOworICAgICAgICByZXR1cm4gYTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgU3ViY2xhc3M+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmKGJ1ZmZlcik7
CisgICAgICAgIGlmICghdmVyaWZ5U3ViUmFuZ2U8VD4oYnVmLCBieXRlT2Zmc2V0LCBsZW5ndGgp
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dWJjbGFzcyhidWYsIGJ5dGVPZmZzZXQsIGxlbmd0aCkpOworICAgIH0KKworICAgIHRlbXBsYXRl
IDxjbGFzcyBTdWJjbGFzcz4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCwgc2l6ZW9mKFQpKTsKKyAgICAgICAgaWYgKCFidWZmZXIuZ2V0KCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVyLCAwLCBsZW5n
dGgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KKyAgICBQYXNzUmVm
UHRyPFN1YmNsYXNzPiBzdWJhcnJheUltcGwoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7CisgICAgICAgIGNhbGN1bGF0ZU9m
ZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCBtX2xlbmd0aCwgJm9mZnNldCwgJmxlbmd0aCk7Cisg
ICAgICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8VD4oYnVmZmVyKCksIG1fYnl0ZU9mZnNl
dCwgJm9mZnNldCwgJmxlbmd0aCk7CisgICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1
ZmZlcigpLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG5ldXRl
cigpCisgICAgeworICAgICAgICBBcnJheUJ1ZmZlclZpZXc6Om5ldXRlcigpOworICAgICAgICBt
X2xlbmd0aCA9IDA7CisgICAgfQorCisgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gaGF2ZSB0byBh
Y2Nlc3MgdGhpcyB2aWEgYSB2aXJ0dWFsIGZ1bmN0aW9uIGluIHN1YmNsYXNzZXMsCisgICAgLy8g
d2hpY2ggaXMgd2h5IGl0IGlzIHByb3RlY3RlZCByYXRoZXIgdGhhbiBwcml2YXRlLgorICAgIHVu
c2lnbmVkIG1fbGVuZ3RoOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6
VHlwZWRBcnJheUJhc2U7CisKKyNlbmRpZiAvLyBUeXBlZEFycmF5QmFzZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZBcnJheS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDE2QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjJmYWIxYjI3
Yjg2MmE5YTA4ZDkxOTFjOGI0MjgzNDU0Y2JkZGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDE2QXJyYXkuaApAQCAtMCwwICsxLDEwMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBVaW50MTZBcnJheV9oCisjZGVmaW5lIFVpbnQxNkFycmF5X2gKKwor
I2luY2x1ZGUgIkludGVncmFsVHlwZWRBcnJheUJhc2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEFycmF5QnVmZmVyOworCitjbGFzcyBVaW50MTZBcnJheSA6IHB1YmxpYyBJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90PiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQxNkFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IGNyZWF0ZShjb25zdCB1aW50MTZfdCog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVp
bnQxNkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdo
ZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KKyAgICAv
LyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0
IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5
PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2luZyBUeXBl
ZEFycmF5QmFzZTx1aW50MTZfdD46OnNldDsKKyAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlPHVpbnQxNl90Pjo6c2V0OworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2QXJyYXk+
IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVVaW50
MTY7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBVaW50MTZBcnJheShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQg
Y2xhc3MgVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OworfTsKKworUGFzc1JlZlB0cjxVaW50MTZB
cnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJu
IFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90Pjo6Y3JlYXRlPFVpbnQxNkFycmF5PihsZW5ndGgpOwor
fQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlKGNvbnN0IHVp
bnQxNl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTx1aW50MTZfdD46OmNyZWF0ZTxVaW50MTZBcnJheT4oYXJyYXksIGxlbmd0aCk7Cit9CisK
K1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90Pjo6Y3JlYXRlPFVpbnQxNkFy
cmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDE2
QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OjpjcmVhdGVVbmluaXRpYWxp
emVkPFVpbnQxNkFycmF5PihsZW5ndGgpOworfQorCitVaW50MTZBcnJheTo6VWludDE2QXJyYXko
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90PihidWZm
ZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKK3sKK30KKworUGFzc1JlZlB0cjxVaW50MTZBcnJheT4g
VWludDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3Vi
YXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWlu
dDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1
cm4gc3ViYXJyYXlJbXBsPFVpbnQxNkFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6VWludDE2QXJyYXk7CisKKyNlbmRpZiAvLyBVaW50MTZB
cnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MzJB
cnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZWIwMWUwMWExY2FkNGViZGU0OTlkYTEzMmYzOTcwYTU5MTI4M2VjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaApA
QCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBVaW50MzJBcnJheV9oCisjZGVmaW5l
IFVpbnQzMkFycmF5X2gKKworI2luY2x1ZGUgIkludGVncmFsVHlwZWRBcnJheUJhc2UuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVmZmVyOworCitjbGFzcyBVaW50MzJBcnJh
eSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90PiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0
ZShjb25zdCB1aW50MzJfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBTaG91
bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJl
IGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8g
SmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7
CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OnNldDsKKyAgICB1c2luZyBJ
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6c2V0OworCisgICAgaW5saW5lIFBhc3NS
ZWZQdHI8VWludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5l
IFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFR5cGVVaW50MzI7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBVaW50
MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJj
bGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+OworfTsKKwor
UGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6Y3JlYXRlPFVpbnQz
MkFycmF5PihsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJh
eTo6Y3JlYXRlKGNvbnN0IHVpbnQzMl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJBcnJheT4oYXJy
YXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5Ojpj
cmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90
Pjo6Y3JlYXRlPFVpbnQzMkFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisK
K1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+
OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQzMkFycmF5PihsZW5ndGgpOworfQorCitVaW50MzJB
cnJheTo6VWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlPHVpbnQzMl90PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKK3sKK30KKworUGFzc1Jl
ZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0
cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPFVpbnQzMkFycmF5PihzdGFydCwgZW5k
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6VWludDMyQXJyYXk7CisK
KyNlbmRpZiAvLyBVaW50MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VaW50OEFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9V
aW50OEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY1ZjllMTcwNTM4ZGMwYzI2YWY4MTU0ZTY5ZGRlMGFm
NmIwMmJjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1VpbnQ4QXJyYXkuaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBVaW50OEFy
cmF5X2gKKyNkZWZpbmUgVWludDhBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xh
c3MgVWludDhBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJy
YXk+IGNyZWF0ZShjb25zdCB1aW50OF90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAg
Ly8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkg
d2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVj
dGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6c2V0OworICAgIHVz
aW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8dWludDhfdD46OnNldDsKKworICAgIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5s
aW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdDsKKworICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gVHlwZVVpbnQ4OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIGlubGluZSBV
aW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBl
cmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTx1aW50OF90PjsKK307CisK
K1Bhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZTxVaW50OEFy
cmF5PihsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShjb25zdCB1aW50OF90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVy
biBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlPFVpbnQ4QXJyYXk+KGFycmF5LCBsZW5n
dGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZTxV
aW50OEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8
VWludDhBcnJheT4gVWludDhBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGVVbmluaXRp
YWxpemVkPFVpbnQ4QXJyYXk+KGxlbmd0aCk7Cit9CisKK1VpbnQ4QXJyYXk6OlVpbnQ4QXJyYXko
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCis6IEludGVncmFsVHlwZWRBcnJheUJhc2U8dWludDhfdD4oYnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheShz
dGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6
OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJy
YXlJbXBsPFVpbnQ4QXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwordXNpbmcgSlNDOjpVaW50OEFycmF5OworCisjZW5kaWYgLy8gVWludDhBcnJheV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OENsYW1wZWRBcnJheS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZmZmYWU3NDdjYWVlOGFlM2IwZDVlMTQxMTBhZTExOGM4ZDlmZDI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhDbGFtcGVkQXJy
YXkuaApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVaW50
OENsYW1wZWRBcnJheV9oCisjZGVmaW5lIFVpbnQ4Q2xhbXBlZEFycmF5X2gKKworI2luY2x1ZGUg
IlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgVWludDhDbGFtcGVkQXJyYXkgOiBwdWJsaWMgVWludDhBcnJheSB7Citw
dWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBj
cmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGNyZWF0ZShjb25zdCB1aW50OF90KiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNy
ZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93
biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4g
dGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJz
dC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIEl0J3Mgb25seSBuZWVk
ZWQgdG8gcG90ZW50aWFsbHkgY2FsbCB0aGlzIG1ldGhvZCBpZiB0aGUgYXJyYXkKKyAgICAvLyB3
YXMgY3JlYXRlZCB1bmluaXRpYWxpemVkIC0tIHRoZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uIHBh
dGhzCisgICAgLy8gemVybyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KKyAgICBpbmxpbmUgdm9pZCB6
ZXJvRmlsbCgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dWludDhfdD46OnNldDsKKyAg
ICBpbmxpbmUgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSk7CisKKyAgICBp
bmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBj
b25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKKworICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlw
ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVHlwZVVpbnQ4Q2xhbXBlZDsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgaW5saW5lIFVpbnQ4Q2xhbXBlZEFycmF5KFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIC8v
IE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFz
cyBUeXBlZEFycmF5QmFzZTx1aW50OF90PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5
PihsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhDbGFtcGVk
QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQ8VWludDhDbGFtcGVkQXJyYXk+KGxlbmd0aCk7Cit9CisKK3ZvaWQgVWludDhDbGFtcGVkQXJy
YXk6Onplcm9GaWxsKCkKK3sKKyAgICB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOworfQorCit2b2lk
IFVpbnQ4Q2xhbXBlZEFycmF5OjpzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKK3sK
KyAgICBpZiAoaW5kZXggPj0gbV9sZW5ndGgpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoc3Rk
Ojppc25hbih2YWx1ZSkgfHwgdmFsdWUgPCAwKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxz
ZSBpZiAodmFsdWUgPiAyNTUpCisgICAgICAgIHZhbHVlID0gMjU1OworICAgIGRhdGEoKVtpbmRl
eF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihscmludCh2YWx1ZSkpOworfQorCitVaW50OENsYW1w
ZWRBcnJheTo6VWludDhDbGFtcGVkQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCis6IFVpbnQ4QXJyYXkoYnVm
ZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGlu
dCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OENsYW1wZWRBcnJh
eT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlVp
bnQ4Q2xhbXBlZEFycmF5OworCisjZW5kaWYgLy8gVWludDhDbGFtcGVkQXJyYXlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZTQ4NDNiMTljMmU4ZjM5ZDcwNjJlNjczODQyYzdl
NWI4MzBlZGFhNC4uZTIyN2UyNGY5YWVjZjRjMGNjODJkNjlhZDUzNWE3N2QyNTZhZGJiMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02OSw4ICs2OSwxMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7
CiAgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIEZsb2F0MzJBcnJheTsKKyAgICBjbGFz
cyBGbG9hdDY0QXJyYXk7CiAgICAgY2xhc3MgSGFuZGxlU3RhY2s7CiAgICAgY2xhc3MgSWRlbnRp
ZmllclRhYmxlOworICAgIGNsYXNzIEludDhBcnJheTsKKyAgICBjbGFzcyBJbnQxNkFycmF5Owor
ICAgIGNsYXNzIEludDMyQXJyYXk7CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXI7CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CkBAIC04OCw2ICs5MywxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgY2xhc3MgUmVn
RXhwOwogI2VuZGlmCisgICAgY2xhc3MgVWludDhBcnJheTsKKyAgICBjbGFzcyBVaW50OENsYW1w
ZWRBcnJheTsKKyAgICBjbGFzcyBVaW50MTZBcnJheTsKKyAgICBjbGFzcyBVaW50MzJBcnJheTsK
ICAgICBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKICAgICBjbGFzcyBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggNjc0OWM2YWMwNmRiZTFlOGM4OWQ5Yzc1OGM4NmY3ZDRiODRlZTY0NC4u
ZjZhMzgwYmZhM2ZmYTlkNWJlOTI3NTk5NjY2NWI0NTk4ODJhNzdiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtNCwxMCArNCw2IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9BU0NJSUNUeXBlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0FWTFRyZWUuaCBcCiAgICAg
U291cmNlL1dURi93dGYvQWxpZ25tZW50LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVm
ZmVyLmNwcCBcCi0gICAgU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaCBcCi0gICAgU291cmNl
L1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcCBcCi0gICAgU291cmNlL1dURi93dGYvQXJyYXlC
dWZmZXJWaWV3LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0F0b21pY3Mu
Y3BwIFwKQEAgLTU2LDggKzUyLDYgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYv
d3RmL0ZpbGVQcmludFN0cmVhbS5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaXhlZEFycmF5LmggXAotICAgIFNvdXJjZS9X
VEYvd3RmL0Zsb2F0MzJBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9GbG9hdDY0QXJyYXku
aCBcCiAgICAgU291cmNlL1dURi93dGYvRm9yd2FyZC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3Bh
dGNoZXIuaCBcCkBAIC03NiwxMCArNzAsNiBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNl
L1dURi93dGYvSGV4TnVtYmVyLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaCBcCi0gICAgU291cmNlL1dURi93dGYvSW50
MTZBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9JbnQzMkFycmF5LmggXAotICAgIFNvdXJj
ZS9XVEYvd3RmL0ludDhBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0xpc3REdW1wLmggXAogICAgIFNvdXJj
ZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0xMVk1IZWFkZXJz
LmggXApAQCAtMTg5LDExICsxNzksNiBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dU
Ri93dGYvVHJpU3RhdGUuaCBcCiAgICAgU291cmNlL1dURi93dGYvVHlwZVRyYWl0cy5jcHAgXAog
ICAgIFNvdXJjZS9XVEYvd3RmL1R5cGVUcmFpdHMuaCBcCi0gICAgU291cmNlL1dURi93dGYvVHlw
ZWRBcnJheUJhc2UuaCBcCi0gICAgU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaCBcCi0gICAg
U291cmNlL1dURi93dGYvVWludDMyQXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93dGYvVWludDhB
cnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1wZWRBcnJheS5oIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9VbmlvbkZpbmQuaCBcCiAgICAgU291cmNlL1dURi93dGYvVW5pU3RkRXh0
cmFzLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1ZNVGFncy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyYWY2OGY1ZDBmODU0M2ExMDJjZTgzOTVjOGY3
MDgzY2Q4NzNjZDguLjc0OTFmZmExZmM5ODQ1MTc5ZGU4NGUxNjg5NWNlODEzODUxODRhOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjcsMTAgKzY3LDYg
QEAKIAkJQTc0ODc0NTQxN0EwQkRBRTAwRkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0ODc0NTEx
N0EwQkRBRTAwRkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oICovOyB9OwogCQlBODc2
REJEODE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAvKiBQbGF0
Zm9ybS5oICovOyB9OwogCQlBOEE0NzM3RjE1MUE4MjVCMDA0MTIzRkYgLyogQWxpZ25tZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1NDE1
MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi87IH07Ci0JCUE4QTQ3MzgxMTUxQTgyNUIw
MDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1NjE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIu
Y3BwICovOyB9OwotCQlBOEE0NzM4MjE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjU3MTUx
QTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5oICovOyB9OwotCQlBOEE0NzM4MzE1MUE4MjVC
MDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjU4MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1
ZmZlclZpZXcuY3BwICovOyB9OwotCQlBOEE0NzM4NDE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlC
dWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzI1OTE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmggKi87IH07CiAJ
CUE4QTQ3Mzg1MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1QTE1MUE4MjVBMDA0MTIzRkYg
LyogQVNDSUlDVHlwZS5oICovOyB9OwogCQlBOEE0NzM4NjE1MUE4MjVCMDA0MTIzRkYgLyogQXNz
ZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgKi87IH07CiAJCUE4
QTQ3Mzg3MTUxQTgyNUIwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1QzE1MUE4MjVBMDA0MTIzRkYgLyog
QXNzZXJ0aW9ucy5oICovOyB9OwpAQCAtMTI4LDggKzEyNCw2IEBACiAJCUE4QTQ3M0MzMTUxQTgy
NUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9j
LmNwcCAqLzsgfTsKIAkJQThBNDczQzQxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkEyMTUx
QTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi87IH07CiAJCUE4QTQ3M0M1MTUxQTgyNUIw
MDQxMjNGRiAvKiBGaXhlZEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzJBMzE1MUE4MjVBMDA0MTIzRkYgLyogRml4ZWRBcnJheS5oICov
OyB9OwotCQlBOEE0NzNDNjE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNDE1MUE4MjVB
MDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggKi87IH07Ci0JCUE4QTQ3M0M3MTUxQTgyNUIwMDQx
MjNGRiAvKiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MkE1MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9hdDY0QXJyYXkuaCAq
LzsgfTsKIAkJQThBNDczQzgxNTFBODI1QjAwNDEyM0ZGIC8qIEZvcndhcmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkE2MTUxQTgyNUEwMDQx
MjNGRiAvKiBGb3J3YXJkLmggKi87IH07CiAJCUE4QTQ3M0M5MTUxQTgyNUIwMDQxMjNGRiAvKiBG
dW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oICovOyB9OwogCQlBOEE0
NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyogR2V0UHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRy
LmggKi87IH07CkBAIC0xNDMsMTAgKzEzNyw2IEBACiAJCUE4QTQ3M0RBMTUxQTgyNUIwMDQxMjNG
RiAvKiBIYXNoVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEE0NzJCQTE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oICovOyB9Owog
CQlBOEE0NzNEQjE1MUE4MjVCMDA0MTIzRkYgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCQjE1MUE4MjVBMDA0MTIzRkYg
LyogSGV4TnVtYmVyLmggKi87IH07CiAJCUE4QTQ3M0RDMTUxQTgyNUIwMDQxMjNGRiAvKiBJbmxp
bmVBU00uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTQ3MkJDMTUxQTgyNUEwMDQxMjNGRiAvKiBJbmxpbmVBU00uaCAqLzsgfTsKLQkJQThBNDczREQx
NTFBODI1QjAwNDEyM0ZGIC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQkQxNTFBODI1QTAwNDEyM0ZGIC8qIEludDhBcnJh
eS5oICovOyB9OwotCQlBOEE0NzNERTE1MUE4MjVCMDA0MTIzRkYgLyogSW50MTZBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQkUxNTFB
ODI1QTAwNDEyM0ZGIC8qIEludDE2QXJyYXkuaCAqLzsgfTsKLQkJQThBNDczREYxNTFBODI1QjAw
NDEyM0ZGIC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MkJGMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQzMkFycmF5LmggKi87
IH07Ci0JCUE4QTQ3M0UwMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJD
MDE1MUE4MjVBMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovOyB9OwogCQlB
OEE0NzNFMTE1MUE4MjVCMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkMxMTUxQTgyNUEwMDQxMjNGRiAv
KiBMaXN0SGFzaFNldC5oICovOyB9OwogCQlBOEE0NzNFMzE1MUE4MjVCMDA0MTIzRkYgLyogTG9j
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0
NzJDMzE1MUE4MjVBMDA0MTIzRkYgLyogTG9ja2VyLmggKi87IH07CiAJCUE4QTQ3M0U0MTUxQTgy
NUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJl
YWRNYWMubW0gKi87IH07CkBAIC0yNTAsMTMgKzI0MCw4IEBACiAJCUE4QTQ3NDUyMTUxQTgyNUIw
MDQxMjNGRiAvKiBCaW5hcnlTZW1hcGhvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzNCMTUxQTgyNUIwMDQxMjNGRiAvKiBCaW5hcnlTZW1h
cGhvcmUuaCAqLzsgfTsKIAkJQThBNDc0NTQxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVS
ZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzMzRTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCAqLzsg
fTsKIAkJQThBNDc0NTUxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmljLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMzRjE1MUE4MjVC
MDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCAqLzsgfTsKLQkJQThBNDc0NTcxNTFBODI1QjAw
NDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRBcnJheUJh
c2UuaCAqLzsgfTsKIAkJQThBNDc0NTgxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczNDIx
NTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuY3BwICovOyB9OwogCQlBOEE0NzQ1OTE1MUE4
MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDczNDMxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMu
aCAqLzsgfTsKLQkJQThBNDc0NUExNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4QXJyYXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ0MTUxQTgy
NUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggKi87IH07Ci0JCUE4QTQ3NDVCMTUxQTgyNUIwMDQx
MjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDczNDUxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4Q2xhbXBl
ZEFycmF5LmggKi87IH07Ci0JCUE4QTQ3NDVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MTZBcnJh
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcz
NDYxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggKi87IH07Ci0JCUE4QTQ3NDVEMTUx
QTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczNDcxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQzMkFy
cmF5LmggKi87IH07CiAJCUE4QTQ3NDVFMTUxQTgyNUIwMDQxMjNGRiAvKiBDaGFyYWN0ZXJOYW1l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcz
NDkxNTFBODI1QjAwNDEyM0ZGIC8qIENoYXJhY3Rlck5hbWVzLmggKi87IH07CiAJCUE4QTQ3NDVG
MTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczNEExNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9y
LmggKi87IH07CiAJCUE4QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcz
NEIxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgKi87IH07CkBAIC0zNDks
MTAgKzMzNCw2IEBACiAJCUE3NDg3NDUxMTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVt
cENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSGFzaER1
bXBDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzZEQkQ3MTUxODE2
RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQbGF0Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzI1NDE1MUE4
MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFsaWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzI1NjE1
MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBOEE0NzI1NzE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQThBNDcyNTgxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzI1OTE1MUE4MjVBMDA0MTIz
RkYgLyogQXJyYXlCdWZmZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFycmF5QnVmZmVyVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzI1
QTE1MUE4MjVBMDA0MTIzRkYgLyogQVNDSUlDVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBU0NJSUNUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QTQ3MjVCMTUxQTgyNUEwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzc2VydGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEE0NzI1QzE1MUE4MjVBMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlcnRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MTMsOCArMzk0LDYgQEAKIAkJQThBNDcyQTExNTFBODI1QTAwNDEy
M0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmFzdE1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkEy
MTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZhc3RNYWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThB
NDcyQTMxNTFBODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRml4ZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBOEE0NzJBNDE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZsb2F0MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlBOEE0NzJBNTE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZsb2F0NjRBcnJheS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3J3YXJkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkE3MTUxQTgyNUEwMDQxMjNGRiAvKiBGdW5jdGlvbmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdldFB0
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRQdHIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyOCwxMCArNDA3LDYgQEAKIAkJQThBNDcyQkExNTFBODI1
QTAwNDEyM0ZGIC8qIEhhc2hUcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGFzaFRyYWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJCQjE1
MUE4MjVBMDA0MTIzRkYgLyogSGV4TnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhleE51bWJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJC
QzE1MUE4MjVBMDA0MTIzRkYgLyogSW5saW5lQVNNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElubGluZUFTTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0
NzJCRDE1MUE4MjVBMDA0MTIzRkYgLyogSW50OEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
OEE0NzJCRTE1MUE4MjVBMDA0MTIzRkYgLyogSW50MTZBcnJheS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE4QTQ3MkJGMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQzMkFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDMyQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZGIC8qIEludGVncmFsVHlwZWRBcnJheUJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZWdyYWxUeXBlZEFycmF5
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJDMTE1MUE4MjVBMDA0
MTIzRkYgLyogTGlzdEhhc2hTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGlzdEhhc2hTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzMxNTFB
ODI1QTAwNDEyM0ZGIC8qIExvY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMb2NrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzUxNTFBODI1
QTAwNDEyM0ZGIC8qIE1haW5UaHJlYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBNYWluVGhyZWFkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTM1LDEzICs1MTAsOCBAQAogCQlBOEE0NzMzQjE1MUE4MjVCMDA0MTIzRkYgLyogQmlu
YXJ5U2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpbmFyeVNl
bWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMzRTE1MUE4MjVC
MDA0MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGhyZWFkU2FmZVJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThBNDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmljLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNwZWNpZmljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzQxMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlZEFy
cmF5QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5QmFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM0MjE1MUE4MjVCMDA0MTIz
RkYgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNDMx
NTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0
NzM0NDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVaW50OEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE4QTQ3MzQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50OENsYW1wZWRBcnJheS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM0NjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDE2QXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczNDcxNTFBODI1QjAwNDEyM0ZGIC8qIFVp
bnQzMkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQzMkFycmF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzQ5MTUxQTgyNUIwMDQxMjNG
RiAvKiBDaGFyYWN0ZXJOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
aGFyYWN0ZXJOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM0QTE1
MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29sbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNEIx
NTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb2xsYXRvckRlZmF1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjI2LDEwICs1OTYsNiBAQAogCQkJCUE4QTQ3MzM5MTUxQTgyNUIwMDQx
MjNGRiAvKiB0aHJlYWRzICovLAogCQkJCUE4QTQ3MzQ4MTUxQTgyNUIwMDQxMjNGRiAvKiB1bmlj
b2RlICovLAogCQkJCUE4QTQ3MjU0MTUxQTgyNUEwMDQxMjNGRiAvKiBBbGlnbm1lbnQuaCAqLywK
LQkJCQlBOEE0NzI1NjE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuY3BwICovLAotCQkJ
CUE4QTQ3MjU3MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5oICovLAotCQkJCUE4QTQ3
MjU4MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwICovLAotCQkJCUE4QTQ3
MjU5MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQlBOEE0NzI1
QTE1MUE4MjVBMDA0MTIzRkYgLyogQVNDSUlDVHlwZS5oICovLAogCQkJCUE4QTQ3MjVCMTUxQTgy
NUEwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmNwcCAqLywKIAkJCQlBOEE0NzI1QzE1MUE4MjVBMDA0
MTIzRkYgLyogQXNzZXJ0aW9ucy5oICovLApAQCAtNjgyLDggKzY0OCw2IEBACiAJCQkJMEY5RDMz
NUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMz
NUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAogCQkJCUE4QTQ3MkEz
MTUxQTgyNUEwMDQxMjNGRiAvKiBGaXhlZEFycmF5LmggKi8sCi0JCQkJQThBNDcyQTQxNTFBODI1
QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oICovLAotCQkJCUE4QTQ3MkE1MTUxQTgyNUEwMDQx
MjNGRiAvKiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlBOEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYg
LyogRm9yd2FyZC5oICovLAogCQkJCUE4QTQ3MkE3MTUxQTgyNUEwMDQxMjNGRiAvKiBGdW5jdGlv
bmFsLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0
Y2hlci5jcHAgKi8sCkBAIC03MDIsMTAgKzY2Niw2IEBACiAJCQkJQThBNDcyQkIxNTFBODI1QTAw
NDEyM0ZGIC8qIEhleE51bWJlci5oICovLAogCQkJCUE4QTQ3MkJDMTUxQTgyNUEwMDQxMjNGRiAv
KiBJbmxpbmVBU00uaCAqLywKIAkJCQlBNzBEQTA4MjE3OTlGMDREMDA1MjlBOUIgLyogSW5zZXJ0
aW9uLmggKi8sCi0JCQkJQThBNDcyQkUxNTFBODI1QTAwNDEyM0ZGIC8qIEludDE2QXJyYXkuaCAq
LywKLQkJCQlBOEE0NzJCRjE1MUE4MjVBMDA0MTIzRkYgLyogSW50MzJBcnJheS5oICovLAotCQkJ
CUE4QTQ3MkJEMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCAqLywKLQkJCQlBOEE0NzJD
MDE1MUE4MjVBMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovLAogCQkJCUE3
MERBMDgzMTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5oICovLAogCQkJCUE4QTQ3MkMxMTUx
QTgyNUEwMDQxMjNGRiAvKiBMaXN0SGFzaFNldC5oICovLAogCQkJCUE3MzZCMzU4MTc5OUUxMUEw
MEM2RjA1RSAvKiBMTFZNSGVhZGVycy5oICovLApAQCAtODE2LDEzICs3NzYsOCBAQAogCQkJCUE4
QTQ3MzNFMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oICovLAogCQkJ
CUE4QTQ3MzNGMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oICovLAogCQkJCTE0
OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLAotCQkJCUE4QTQ3MzQxMTUx
QTgyNUIwMDQxMjNGRiAvKiBUeXBlZEFycmF5QmFzZS5oICovLAogCQkJCUE4QTQ3MzQyMTUxQTgy
NUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmNwcCAqLywKIAkJCQlBOEE0NzM0MzE1MUE4MjVCMDA0
MTIzRkYgLyogVHlwZVRyYWl0cy5oICovLAotCQkJCUE4QTQ3MzQ2MTUxQTgyNUIwMDQxMjNGRiAv
KiBVaW50MTZBcnJheS5oICovLAotCQkJCUE4QTQ3MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50
MzJBcnJheS5oICovLAotCQkJCUE4QTQ3MzQ0MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFycmF5
LmggKi8sCi0JCQkJQThBNDczNDUxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4Q2xhbXBlZEFycmF5
LmggKi8sCiAJCQkJQThBNDczNUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVuaW9uRmluZC5oICovLAog
CQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQxMjNGRiAvKiBWYWx1ZUNoZWNrLmggKi8sCiAJCQkJQThB
NDczNzAxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3Rvci5oICovLApAQCAtOTQ1LDggKzkwMCw2IEBA
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJQThB
NDczN0YxNTFBODI1QjAwNDEyM0ZGIC8qIEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QThBNDczODIxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlBOEE0NzM4NDE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzM4NTE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlDVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MzQxNTFBODI1QjAwNDEyM0ZGIC8qIEFTQ0lJRmFzdFBh
dGguaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3Mzg3MTUxQTgyNUIwMDQxMjNGRiAvKiBBc3Nl
cnRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDUsOCArOTU4LDYgQEAKIAkJCQkwRjlEMzM2
MTE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzNCNjE1MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQtZHRvYS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczQzUxNTFBODI1QjAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE4QTQ3M0M2MTUxQTgyNUIwMDQxMjNGRiAvKiBGbG9hdDMyQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUE4QTQ3M0M3MTUxQTgyNUIwMDQxMjNGRiAvKiBGbG9hdDY0QXJyYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0M4MTUxQTgyNUIwMDQxMjNGRiAvKiBGb3J3YXJk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNDOTE1MUE4MjVCMDA0MTIzRkYgLyogRnVuY3Rp
b25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRDhCOUMxNzMxODZDRTAwMTQxREE0IC8qIEZ1
bmN0aW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIyLDExICs5NzMsNyBAQAog
CQkJCUE4QTQ3M0RCMTUxQTgyNUIwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4QTQ3M0RDMTUxQTgyNUIwMDQxMjNGRiAvKiBJbmxpbmVBU00uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3MERBMDg0MTc5OUYwNEQwMDUyOUE5QiAvKiBJbnNlcnRpb24uaCBpbiBIZWFk
ZXJzICovLAotCQkJCUE4QTQ3M0RFMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQxNkFycmF5LmggaW4g
SGVhZGVycyAqLywKLQkJCQlBOEE0NzNERjE1MUE4MjVCMDA0MTIzRkYgLyogSW50MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDczREQxNTFBODI1QjAwNDEyM0ZGIC8qIEludDhBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjYxNDdCMEExNUREQ0NEQzAwRERCOTA3IC8qIEludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3M0UwMTUxQTgy
NUIwMDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzBEQTA4NTE3OTlGMDREMDA1MjlBOUIgLyogTGlzdER1bXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4QTQ3M0UxMTUxQTgyNUIwMDQxMjNGRiAvKiBMaXN0SGFzaFNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTE3LDEyICsxMDY0LDcgQEAKIAkJCQlBOEE0NzQ1NDE1MUE4MjVCMDA0MTIzRkYg
LyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDU1MTUx
QTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5
RUYxNjMxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlB
OEE0NzQ1NzE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4QTQ3NDU5MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBOEE0NzQ1QzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUE4QTQ3NDVEMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0NUExNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4QXJy
YXkuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3NDVCMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50
OENsYW1wZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NjcxNTFBODI1QjAwNDEy
M0ZGIC8qIFVuaWNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDY0MTUxQTgyNUIwMDQx
MjNGRiAvKiBVbmljb2RlSWN1LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ2ODE1MUE4MjVC
MDA0MTIzRkYgLyogVW5pY29kZU1hY3Jvc0Zyb21JQ1UuaCBpbiBIZWFkZXJzICovLApAQCAtMTIw
OCw4ICsxMTUwLDYgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCUE4QTQ3MzgxMTUxQTgy
NUIwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBOEE0NzM4
MzE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3Mzg2MTUxQTgyNUIwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3NDM1MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNTdHJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUJDNzBGMDUxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmlu
Z1RhYmxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXJy
YXlCdWZmZXIuY3BwIGIvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0NWI1N2ZlOWM2ZmJjYTA2NjQ4ODY4N2RjYTcwMDZjMjgyMzMx
Mjg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIK
LQotI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWJvb2wgQXJy
YXlCdWZmZXI6OnRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCwgVmVjdG9yPFJl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpCi17Ci0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBrZWVwQWxpdmUodGhpcyk7Ci0KLSAgICBpZiAoIW1fY29udGVudHMubV9kYXRh
KSB7Ci0gICAgICAgIHJlc3VsdC5tX2RhdGEgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgYm9vbCBhbGxWaWV3c0FyZU5ldXRlcmFibGUgPSB0cnVlOwotICAgIGZvciAo
QXJyYXlCdWZmZXJWaWV3KiBpID0gbV9maXJzdFZpZXc7IGk7IGkgPSBpLT5tX25leHRWaWV3KSB7
Ci0gICAgICAgIGlmICghaS0+aXNOZXV0ZXJhYmxlKCkpCi0gICAgICAgICAgICBhbGxWaWV3c0Fy
ZU5ldXRlcmFibGUgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoYWxsVmlld3NBcmVOZXV0ZXJh
YmxlKQotICAgICAgICBtX2NvbnRlbnRzLnRyYW5zZmVyKHJlc3VsdCk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIG1fY29udGVudHMuY29weVRvKHJlc3VsdCk7Ci0gICAgICAgIGlmICghcmVzdWx0Lm1f
ZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB3aGlsZSAobV9m
aXJzdFZpZXcpIHsKLSAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBjdXJyZW50ID0gbV9maXJzdFZp
ZXc7Ci0gICAgICAgIHJlbW92ZVZpZXcoY3VycmVudCk7Ci0gICAgICAgIGlmIChhbGxWaWV3c0Fy
ZU5ldXRlcmFibGUgfHwgY3VycmVudC0+aXNOZXV0ZXJhYmxlKCkpCi0gICAgICAgICAgICBjdXJy
ZW50LT5uZXV0ZXIoKTsKLSAgICAgICAgbmV1dGVyZWRWaWV3cy5hcHBlbmQoY3VycmVudCk7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEFycmF5QnVmZmVyOjphZGRWaWV3KEFy
cmF5QnVmZmVyVmlldyogdmlldykKLXsKLSAgICB2aWV3LT5tX2J1ZmZlciA9IHRoaXM7Ci0gICAg
dmlldy0+bV9wcmV2VmlldyA9IDA7Ci0gICAgdmlldy0+bV9uZXh0VmlldyA9IG1fZmlyc3RWaWV3
OwotICAgIGlmIChtX2ZpcnN0VmlldykKLSAgICAgICAgbV9maXJzdFZpZXctPm1fcHJldlZpZXcg
PSB2aWV3OwotICAgIG1fZmlyc3RWaWV3ID0gdmlldzsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlcjo6
cmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCi17Ci0gICAgQVNTRVJUKHRoaXMgPT0g
dmlldy0+bV9idWZmZXIpOwotICAgIGlmICh2aWV3LT5tX25leHRWaWV3KQotICAgICAgICB2aWV3
LT5tX25leHRWaWV3LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9wcmV2VmlldzsKLSAgICBpZiAodmll
dy0+bV9wcmV2VmlldykKLSAgICAgICAgdmlldy0+bV9wcmV2Vmlldy0+bV9uZXh0VmlldyA9IHZp
ZXctPm1fbmV4dFZpZXc7Ci0gICAgaWYgKG1fZmlyc3RWaWV3ID09IHZpZXcpCi0gICAgICAgIG1f
Zmlyc3RWaWV3ID0gdmlldy0+bV9uZXh0VmlldzsKLSAgICB2aWV3LT5tX3ByZXZWaWV3ID0gdmll
dy0+bV9uZXh0VmlldyA9IDA7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fy
cmF5QnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZTBhMWIzYzNlM2Q2MzUxN2M2NzJhYWRhYjdhNzc3MTY0NDA4ODgw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
VEYvd3RmL0FycmF5QnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpZm5kZWYgQXJyYXlCdWZmZXJfaAotI2RlZmluZSBBcnJheUJ1ZmZlcl9oCi0KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVz
cGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEFycmF5QnVmZmVyVmlldzsK
LQotY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXJyYXlCdWZmZXJDb250ZW50cyk7Ci1wdWJsaWM6Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50cygp
IAotICAgICAgICA6IG1fZGF0YSgwKQotICAgICAgICAsIG1fc2l6ZUluQnl0ZXMoMCkKLSAgICB7
IH0KLQotICAgIGlubGluZSB+QXJyYXlCdWZmZXJDb250ZW50cygpOwotCi0gICAgdm9pZCogZGF0
YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgeyByZXR1
cm4gbV9zaXplSW5CeXRlczsgfQotCi1wcml2YXRlOgotICAgIEFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMpIAotICAgICAgICA6IG1fZGF0YShkYXRh
KQotICAgICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCi0gICAgeyB9Ci0KLSAgICBm
cmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7Ci0KLSAgICBlbnVtIEluaXRpYWxpemF0aW9uUG9saWN5
IHsKLSAgICAgICAgWmVyb0luaXRpYWxpemUsCi0gICAgICAgIERvbnRJbml0aWFsaXplCi0gICAg
fTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSwgQXJy
YXlCdWZmZXJDb250ZW50cyYpOwotICAgIHZvaWQgdHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50
cyYgb3RoZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoIW90aGVyLm1fZGF0YSk7Ci0gICAgICAg
IG90aGVyLm1fZGF0YSA9IG1fZGF0YTsKLSAgICAgICAgb3RoZXIubV9zaXplSW5CeXRlcyA9IG1f
c2l6ZUluQnl0ZXM7Ci0gICAgICAgIG1fZGF0YSA9IDA7Ci0gICAgICAgIG1fc2l6ZUluQnl0ZXMg
PSAwOwotICAgIH0KLQotICAgIHZvaWQgY29weVRvKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVy
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOwotICAgICAgICBBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShtX3NpemVJbkJ5dGVzLCBzaXplb2YoY2hhciksIEFy
cmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplLCBvdGhlcik7Ci0gICAgICAgIGlmICgh
b3RoZXIubV9kYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtZW1jcHkob3RoZXIu
bV9kYXRhLCBtX2RhdGEsIG1fc2l6ZUluQnl0ZXMpOwotICAgICAgICBvdGhlci5tX3NpemVJbkJ5
dGVzID0gbV9zaXplSW5CeXRlczsKLSAgICB9Ci0KLSAgICB2b2lkKiBtX2RhdGE7Ci0gICAgdW5z
aWduZWQgbV9zaXplSW5CeXRlczsKLX07Ci0KLWNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciopOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0
aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJy
YXlCdWZmZXJDb250ZW50cyYpOwotCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkLgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKLQotICAgIGlubGluZSB2b2lkKiBkYXRhKCk7Ci0g
ICAgaW5saW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBpbmxpbmUgdW5zaWduZWQg
Ynl0ZUxlbmd0aCgpIGNvbnN0OwotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IHNsaWNlKGludCBiZWdpbiwgaW50IGVuZCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IHNsaWNlKGludCBiZWdpbikgY29uc3Q7Ci0KLSAgICB2b2lkIGFkZFZpZXco
QXJyYXlCdWZmZXJWaWV3Kik7Ci0gICAgdm9pZCByZW1vdmVWaWV3KEFycmF5QnVmZmVyVmlldyop
OwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJhbnNmZXIoQXJyYXlCdWZmZXJDb250
ZW50cyYsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiA+JiBuZXV0ZXJlZFZpZXdzKTsK
LSAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9jb250ZW50cy5tX2RhdGE7IH0KLQot
ICAgIH5BcnJheUJ1ZmZlcigpIHsgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5KTsKLQotICAgIGlubGluZSBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJik7Ci0g
ICAgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdp
biwgdW5zaWduZWQgZW5kKSBjb25zdDsKLSAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChp
bnQgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgaW50IGNsYW1wVmFsdWUoaW50IHgs
IGludCBsZWZ0LCBpbnQgcmlnaHQpOwotCi0gICAgQXJyYXlCdWZmZXJDb250ZW50cyBtX2NvbnRl
bnRzOwotICAgIEFycmF5QnVmZmVyVmlldyogbV9maXJzdFZpZXc7Ci19OwotCi1pbnQgQXJyYXlC
dWZmZXI6OmNsYW1wVmFsdWUoaW50IHgsIGludCBsZWZ0LCBpbnQgcmlnaHQpCi17Ci0gICAgQVNT
RVJUKGxlZnQgPD0gcmlnaHQpOwotICAgIGlmICh4IDwgbGVmdCkKLSAgICAgICAgeCA9IGxlZnQ7
Ci0gICAgaWYgKHJpZ2h0IDwgeCkKLSAgICAgICAgeCA9IHJpZ2h0OwotICAgIHJldHVybiB4Owot
fQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCi17Ci0gICAgcmV0dXJuIGNy
ZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpa
ZXJvSW5pdGlhbGl6ZSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoQXJyYXlCdWZmZXIqIG90aGVyKQotewotICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKG90aGVyLT5kYXRhKCksIG90aGVyLT5ieXRlTGVuZ3RoKCkpOwotfQotCi1QYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKLXsKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRz
OwotICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFy
cmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplLCBjb250ZW50cyk7Ci0gICAgaWYgKCFj
b250ZW50cy5tX2RhdGEpCi0gICAgICAgIHJldHVybiAwOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYnVmZmVyID0gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7Ci0gICAgbWVt
Y3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwotICAgIHJldHVybiBidWZm
ZXIucmVsZWFzZSgpOwotfQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmIGNvbnRlbnRzKQotewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVudHMpKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKLXsKLSAgICByZXR1cm4gY3JlYXRlKG51bUVs
ZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFs
aXplKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCi17Ci0gICAgQXJyYXlCdWZm
ZXJDb250ZW50cyBjb250ZW50czsKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0
ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3ksIGNvbnRlbnRzKTsKLSAgICBp
ZiAoIWNvbnRlbnRzLm1fZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOwotfQotCi1BcnJheUJ1ZmZlcjo6QXJyYXlC
dWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYgY29udGVudHMpCi0gICAgOiBtX2ZpcnN0Vmlldygw
KQotewotICAgIGNvbnRlbnRzLnRyYW5zZmVyKG1fY29udGVudHMpOwotfQotCi12b2lkKiBBcnJh
eUJ1ZmZlcjo6ZGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fY29udGVudHMubV9kYXRhOwotfQotCi1j
b25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29u
dGVudHMubV9kYXRhOwotfQotCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGVudHMubV9zaXplSW5CeXRlczsKLX0KLQotUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGludCBiZWdpbiwgaW50IGVuZCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBjbGFtcElu
ZGV4KGVuZCkpOwotfQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoaW50IGJlZ2luKSBjb25zdAotewotICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChi
ZWdpbiksIGJ5dGVMZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKLXsK
LSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOwotICAg
IHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KCkpICsgYmVnaW4sIHNpemUpOwotfQotCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eChpbnQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVM
ZW5ndGgoKTsKLSAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5n
dGggKyBpbmRleDsKLSAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0
aCk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5LCBBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1
bHQpCi17Ci0gICAgLy8gRG8gbm90IGFsbG93IDMyLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwg
c2l6ZS4KLSAgICAvLyBGSVhNRTogV2h5IG5vdD8gVGhlIHRyeUZhc3RDYWxsb2MgZnVuY3Rpb24g
YWxyZWFkeSBjaGVja3MgaXRzIGFyZ3VtZW50cywKLSAgICAvLyBhbmQgd2lsbCBmYWlsIGlmIHRo
ZXJlIGlzIGFueSBvdmVyZmxvdywgc28gd2h5IHNob3VsZCB3ZSBpbmNsdWRlIGEKLSAgICAvLyBy
ZWR1ZGFudCB1bm5lY2Vzc2FyaWx5IHJlc3RyaWN0aXZlIGNoZWNrIGhlcmU/Ci0gICAgaWYgKG51
bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRzICog
ZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0g
ZWxlbWVudEJ5dGVTaXplKSB7Ci0gICAgICAgICAgICByZXN1bHQubV9kYXRhID0gMDsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBib29sIGFsbG9jYXRpb25TdWNj
ZWVkZWQgPSBmYWxzZTsKLSAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQotICAgICAg
ICBhbGxvY2F0aW9uU3VjY2VlZGVkID0gV1RGOjp0cnlGYXN0Q2FsbG9jKG51bUVsZW1lbnRzLCBl
bGVtZW50Qnl0ZVNpemUpLmdldFZhbHVlKHJlc3VsdC5tX2RhdGEpOwotICAgIGVsc2UgewotICAg
ICAgICBBU1NFUlQocG9saWN5ID09IERvbnRJbml0aWFsaXplKTsKLSAgICAgICAgYWxsb2NhdGlv
blN1Y2NlZWRlZCA9IFdURjo6dHJ5RmFzdE1hbGxvYyhudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRl
U2l6ZSkuZ2V0VmFsdWUocmVzdWx0Lm1fZGF0YSk7Ci0gICAgfQotCi0gICAgaWYgKGFsbG9jYXRp
b25TdWNjZWVkZWQpIHsKLSAgICAgICAgcmVzdWx0Lm1fc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50
cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICByZXN1bHQu
bV9kYXRhID0gMDsKLX0KLQotQXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVu
dHMoKQotewotICAgIFdURjo6ZmFzdEZyZWUobV9kYXRhKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V1RGCi0KLXVzaW5nIFdURjo6QXJyYXlCdWZmZXI7Ci0KLSNlbmRpZiAvLyBBcnJheUJ1ZmZlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNl
L1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjAyYjNhMmU0MTdmZGRmMTRiZmQyMTIwOGQwODVhNjI1NWQzNWU0Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1
ZmZlclZpZXcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLQotI2luY2x1
ZGUgIkFycmF5QnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi1BcnJheUJ1ZmZlclZpZXc6
OkFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCi0gICAgICAgIDogbV9ieXRlT2Zm
c2V0KGJ5dGVPZmZzZXQpCi0gICAgICAgICwgbV9pc05ldXRlcmFibGUodHJ1ZSkKLSAgICAgICAg
LCBtX2J1ZmZlcihidWZmZXIpCi0gICAgICAgICwgbV9wcmV2VmlldygwKQotICAgICAgICAsIG1f
bmV4dFZpZXcoMCkKLXsKLSAgICBtX2Jhc2VBZGRyZXNzID0gbV9idWZmZXIgPyAoc3RhdGljX2Nh
c3Q8Y2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpICsgbV9ieXRlT2Zmc2V0KSA6IDA7Ci0gICAgaWYg
KG1fYnVmZmVyKSAKLSAgICAgICAgbV9idWZmZXItPmFkZFZpZXcodGhpcyk7Ci19Ci0KLUFycmF5
QnVmZmVyVmlldzo6fkFycmF5QnVmZmVyVmlldygpCi17Ci0gICAgaWYgKG1fYnVmZmVyKQotICAg
ICAgICBtX2J1ZmZlci0+cmVtb3ZlVmlldyh0aGlzKTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlclZp
ZXc6Om5ldXRlcigpCi17Ci0gICAgbV9idWZmZXIgPSAwOwotICAgIG1fYnl0ZU9mZnNldCA9IDA7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oIGIv
U291cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNiNzA4ZmJkZmZhYjkxZDZmNTY0MGIxZmQ3ZGVmNDFlNjMwOTYxMGUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvQXJy
YXlCdWZmZXJWaWV3LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpZm5kZWYgQXJyYXlCdWZmZXJWaWV3X2gKLSNkZWZpbmUgQXJyYXlCdWZmZXJWaWV3X2gKLQot
I2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2lu
Y2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
VEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1
ZmZlclZpZXc+IHsKLSAgcHVibGljOgotICAgIGVudW0gVmlld1R5cGUgewotICAgICAgICBUeXBl
SW50OCwKLSAgICAgICAgVHlwZVVpbnQ4LAotICAgICAgICBUeXBlVWludDhDbGFtcGVkLAotICAg
ICAgICBUeXBlSW50MTYsCi0gICAgICAgIFR5cGVVaW50MTYsCi0gICAgICAgIFR5cGVJbnQzMiwK
LSAgICAgICAgVHlwZVVpbnQzMiwKLSAgICAgICAgVHlwZUZsb2F0MzIsCi0gICAgICAgIFR5cGVG
bG9hdDY0LAotICAgICAgICBUeXBlRGF0YVZpZXcKLSAgICB9OwotICAgIHZpcnR1YWwgVmlld1R5
cGUgZ2V0VHlwZSgpIGNvbnN0ID0gMDsKLQotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9idWZmZXI7Ci0gICAgfQotCi0g
ICAgdm9pZCogYmFzZUFkZHJlc3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmFz
ZUFkZHJlc3M7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OwotICAgIH0KLQotICAgIHZpcnR1YWwgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0ID0gMDsKLQotICAgIHZvaWQgc2V0TmV1dGVyYWJsZShi
b29sIGZsYWcpIHsgbV9pc05ldXRlcmFibGUgPSBmbGFnOyB9Ci0gICAgYm9vbCBpc05ldXRlcmFi
bGUoKSBjb25zdCB7IHJldHVybiBtX2lzTmV1dGVyYWJsZTsgfQotCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOwotCi0gIHByb3RlY3RlZDoKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKLQotICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlC
dWZmZXJWaWV3KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0KLSAgICBpbmxpbmUgYm9vbCBzZXRS
YW5nZUltcGwoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KTsKLQotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQg
Ynl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5l
IHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKGludCBzdGFydCwgaW50IGVuZCwgdW5zaWdu
ZWQgYXJyYXlTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsKLQotICAgIC8vIEhlbHBlciB0byB2
ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8v
IHdpdGhpbiByYW5nZS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9v
bCB2ZXJpZnlTdWJSYW5nZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cykKLSAgICB7Ci0gICAgICAg
IGlmICghYnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoc2l6
ZW9mKFQpID4gMSAmJiBieXRlT2Zmc2V0ICUgc2l6ZW9mKFQpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBpZiAoYnl0ZU9mZnNldCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVt
ZW50cyA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIGJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOwot
ICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gSW5w
dXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkncyB2aWV3
OwotICAgIC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVu
ZGVybHlpbmcgYnVmZmVyJ3Mgdmlldy4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBz
dGF0aWMgdm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkICpvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCi0gICAgewotICAgICAgICB1bnNp
Z25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQp
OwotICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewotICAgICAgICAgICAgKm9mZnNl
dCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwotICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlC
eXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6
bWluKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVt
YWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVv
ZihUKTsKLSAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMs
ICpudW1FbGVtZW50cyk7Ci0gICAgfQotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
dm9pZCBuZXV0ZXIoKTsKLQotICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFycmF5
QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCi0gICAgdm9pZCogbV9iYXNl
QWRkcmVzczsKLQotICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6IDMxOwotICAgIGJvb2wgbV9p
c05ldXRlcmFibGUgOiAxOwotCi0gIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEFycmF5QnVm
ZmVyOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7Ci0gICAgQXJyYXlCdWZmZXJW
aWV3KiBtX3ByZXZWaWV3OwotICAgIEFycmF5QnVmZmVyVmlldyogbV9uZXh0VmlldzsKLX07Ci0K
LWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVu
c2lnbmVkIGJ5dGVPZmZzZXQpCi17Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkK
LSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3Ro
KCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zm
c2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNlID0gc3RhdGljX2Nh
c3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOwotICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQs
IGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCi17Ci0g
ICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCAr
IGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBk
YXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9m
ZnNldCBvciBvdmVyZmxvdwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAg
IGNoYXIqIGJhc2UgPSBzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZUFkZHJlc3MoKSk7Ci0gICAgbWVt
bW92ZShiYXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25l
ZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQotewotICAgIGlmIChieXRlT2Zm
c2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5n
dGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0
aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVy
ZmxvdwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGNoYXIqIGJhc2Ug
PSBzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZUFkZHJlc3MoKSk7Ci0gICAgbWVtc2V0KGJhc2UgKyBi
eXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKGludCBzdGFydCwg
aW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQot
ewotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBp
ZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAg
ICAgIGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7
Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAg
ICBlbmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBz
dGFydDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAq
bGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6QXJyYXlCdWZmZXJWaWV3OwotCi0jZW5kaWYgLy8g
QXJyYXlCdWZmZXJWaWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zsb2F0MzJBcnJh
eS5oIGIvU291cmNlL1dURi93dGYvRmxvYXQzMkFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY2NzJhMGFmZjYzMjYxYTUwMzZhYTI1N2VlMjFhODc1OTZhODQ0NjMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYv
RmxvYXQzMkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2lmbmRlZiBGbG9hdDMyQXJyYXlfaAotI2RlZmluZSBGbG9hdDMyQXJyYXlfaAotCi0jaW5jbHVk
ZSA8d3RmL1R5cGVkQXJyYXlCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQot
bmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEZsb2F0MzJBcnJheSA6IHB1YmxpYyBUeXBlZEFycmF5
QmFzZTxmbG9hdD4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9h
dDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZShjb25zdCBmbG9hdCogYXJyYXksIHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3Jl
YXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3du
IHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0
aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0
LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGZs
b2F0Pjo6c2V0OwotCi0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBUeXBlZEFycmF5QmFzZTxmbG9hdD46Om1fbGVu
Z3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBUeXBlZEFycmF5QmFzZTxmbG9hdD46
OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpOwotICAgIH0KLQotICAg
IGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25z
dDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFy
dCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVGbG9hdDMyOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBpbmxpbmUgRmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAotICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBl
cmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxmbG9hdD47Ci19OwotCi1Q
YXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMy
QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJy
YXk6OmNyZWF0ZShjb25zdCBmbG9hdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGU8RmxvYXQzMkFycmF5PihhcnJheSwg
bGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3Jl
YXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNy
ZWF0ZTxGbG9hdDMyQXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFz
c1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3Jl
YXRlVW5pbml0aWFsaXplZDxGbG9hdDMyQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLUZsb2F0MzJBcnJh
eTo6RmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogVHlwZWRBcnJheUJhc2U8ZmxvYXQ+
KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPEZsb2F0MzJB
cnJheT4gRmxvYXQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFy
cmF5PiBGbG9hdDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEZsb2F0MzJBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkZsb2F0MzJBcnJheTsKLQotI2VuZGlm
IC8vIEZsb2F0MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDY0QXJy
YXkuaCBiL1NvdXJjZS9XVEYvd3RmL0Zsb2F0NjRBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzYTkzMGNlMDA4ZTlmZDg2YjQ5Y2IzZWI5NGY0ODM0ZDI2ZTI3OGRiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0Zsb2F0NjRBcnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBGbG9hdDY0QXJyYXlfaAotI2RlZmluZSBGbG9hdDY0QXJyYXlfaAotCi0jaW5jbHVk
ZSA8d3RmL1R5cGVkQXJyYXlCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQot
bmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEZsb2F0NjRBcnJheSA6IHB1YmxpYyBUeXBlZEFycmF5
QmFzZTxkb3VibGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8Rmxv
YXQ2NEFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVhdGUoY29uc3QgZG91YmxlKiBhcnJheSwgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBj
cmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25v
d24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJu
IHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmly
c3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8
ZG91YmxlPjo6c2V0OwotCi0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBUeXBlZEFycmF5QmFzZTxkb3VibGU+Ojpt
X2xlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgVHlwZWRBcnJheUJhc2U8ZG91
YmxlPjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpOwotICAgIH0K
LQotICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IHN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVGbG9hdDY0OwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBpbmxpbmUgRmxvYXQ2NEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAot
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBl
cmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxkb3VibGU+OwotfTsKLQot
UGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6Y3JlYXRlPEZsb2F0
NjRBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRB
cnJheTo6Y3JlYXRlKGNvbnN0IGRvdWJsZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAg
ICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6Y3JlYXRlPEZsb2F0NjRBcnJheT4oYXJy
YXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6
OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZG91Ymxl
Pjo6Y3JlYXRlPEZsb2F0NjRBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQot
Ci1QYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZG91Ymxl
Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxGbG9hdDY0QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLUZsb2F0
NjRBcnJheTo6RmxvYXQ2NEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogVHlwZWRBcnJheUJhc2U8
ZG91YmxlPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxG
bG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewot
ICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRyPEZs
b2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxGbG9hdDY0QXJyYXk+KHN0YXJ0LCBlbmQp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpGbG9hdDY0QXJyYXk7Ci0K
LSNlbmRpZiAvLyBGbG9hdDY0QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9y
d2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDgyYzJlMTgxYWM2MmU0Nzc4
MTMyYTAzOTI3MDFhYjE5YTQzYzI5YmMuLjJhNDc1MDNjYmMzNDAwM2ViMDdlNDljM2JlNmQ0Yzlj
YzQ1OWM0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTMzLDMwICszMywxOSBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gY2xhc3MgVmVjdG9y
OwotICAgIAotICAgIGNsYXNzIEFycmF5QnVmZmVyOwotICAgIGNsYXNzIEFycmF5QnVmZmVyVmll
dzsKKwogICAgIGNsYXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFzcyBBdG9taWNTdHJpbmdJbXBs
OwogICAgIGNsYXNzIEJpbmFyeVNlbWFwaG9yZTsKICAgICBjbGFzcyBDU3RyaW5nOwogICAgIGNs
YXNzIERlY29kZXI7CiAgICAgY2xhc3MgRW5jb2RlcjsKLSAgICBjbGFzcyBGbG9hdDMyQXJyYXk7
Ci0gICAgY2xhc3MgRmxvYXQ2NEFycmF5OwogICAgIGNsYXNzIEZ1bmN0aW9uRGlzcGF0Y2hlcjsK
LSAgICBjbGFzcyBJbnQ4QXJyYXk7Ci0gICAgY2xhc3MgSW50MTZBcnJheTsKLSAgICBjbGFzcyBJ
bnQzMkFycmF5OwogICAgIGNsYXNzIFByaW50U3RyZWFtOwogICAgIGNsYXNzIFN0cmluZzsKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU3RyaW5nQnVmZmVyOwogICAgIGNsYXNzIFN0
cmluZ0J1aWxkZXI7CiAgICAgY2xhc3MgU3RyaW5nSW1wbDsKLSAgICBjbGFzcyBVaW50OEFycmF5
OwotICAgIGNsYXNzIFVpbnQ4Q2xhbXBlZEFycmF5OwotICAgIGNsYXNzIFVpbnQxNkFycmF5Owot
ICAgIGNsYXNzIFVpbnQzMkFycmF5OwogfQogCiB1c2luZyBXVEY6OkZ1bmN0aW9uOwpAQCAtNjgs
MjggKzU3LDE3IEBAIHVzaW5nIFdURjo6UGFzc1JlZlB0cjsKIHVzaW5nIFdURjo6UmVmUHRyOwog
dXNpbmcgV1RGOjpWZWN0b3I7CiAKLXVzaW5nIFdURjo6QXJyYXlCdWZmZXI7Ci11c2luZyBXVEY6
OkFycmF5QnVmZmVyVmlldzsKIHVzaW5nIFdURjo6QXRvbWljU3RyaW5nOwogdXNpbmcgV1RGOjpB
dG9taWNTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpCaW5hcnlTZW1hcGhvcmU7CiB1c2luZyBXVEY6
OkNTdHJpbmc7CiB1c2luZyBXVEY6OkVuY29kZXI7CiB1c2luZyBXVEY6OkRlY29kZXI7Ci11c2lu
ZyBXVEY6OkZsb2F0MzJBcnJheTsKLXVzaW5nIFdURjo6RmxvYXQ2NEFycmF5OwogdXNpbmcgV1RG
OjpGdW5jdGlvbkRpc3BhdGNoZXI7Ci11c2luZyBXVEY6OkludDhBcnJheTsKLXVzaW5nIFdURjo6
SW50MTZBcnJheTsKLXVzaW5nIFdURjo6SW50MzJBcnJheTsKIHVzaW5nIFdURjo6UHJpbnRTdHJl
YW07CiB1c2luZyBXVEY6OlN0cmluZzsKIHVzaW5nIFdURjo6U3RyaW5nQnVmZmVyOwogdXNpbmcg
V1RGOjpTdHJpbmdCdWlsZGVyOwogdXNpbmcgV1RGOjpTdHJpbmdJbXBsOwotdXNpbmcgV1RGOjpV
aW50OEFycmF5OwotdXNpbmcgV1RGOjpVaW50OENsYW1wZWRBcnJheTsKLXVzaW5nIFdURjo6VWlu
dDE2QXJyYXk7Ci11c2luZyBXVEY6OlVpbnQzMkFycmF5OwogCiAjZW5kaWYgLy8gV1RGX0Zvcndh
cmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oIGIvU291cmNlL1dU
Ri93dGYvSW50MTZBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDVhNTc5
YTcyODFiYThmZmIzZjk4MWEyZTA4NGUyZGY1YzU0ODZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludDE2QXJyYXkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBJbnQxNkFycmF5
X2gKLSNkZWZpbmUgSW50MTZBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXI7Ci0KLWNs
YXNzIEludDE2QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaG9ydD4gewot
cHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGUo
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJh
eT4gY3JlYXRlKGNvbnN0IHNob3J0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8g
U2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2ls
bCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5
IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxzaG9ydD46OnNldDsKLSAgICB1c2luZyBJ
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6c2V0OwotCi0gICAgaW5saW5lIFBhc3NSZWZQ
dHI8SW50MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Owot
Ci0gICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBUeXBlSW50MTY7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBJbnQxNkFycmF5
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8v
IE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFz
cyBUeXBlZEFycmF5QmFzZTxzaG9ydD47Ci19OwotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IElu
dDE2QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPHNob3J0Pjo6Y3JlYXRlPEludDE2QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQ
dHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlKGNvbnN0IHNob3J0KiBhcnJheSwgdW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaG9ydD46OmNyZWF0
ZTxJbnQxNkFycmF5PihhcnJheSwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQxNkFycmF5
PiBJbnQxNkFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPHNob3J0Pjo6Y3JlYXRlPEludDE2QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVu
Z3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8
c2hvcnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDE2QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLUlu
dDE2QXJyYXk6OkludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlPHNob3J0PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQotUGFzc1Jl
ZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8
SW50MTZBcnJheT4gSW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25z
dAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8SW50MTZBcnJheT4oc3RhcnQsIGVuZCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkludDE2QXJyYXk7Ci0KLSNlbmRp
ZiAvLyBJbnQxNkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludDMyQXJyYXku
aCBiL1NvdXJjZS9XVEYvd3RmL0ludDMyQXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDVhOTk3ODA5YTI5M2VmZGZiZWQ5ODcwNzc3NjQ4Y2VkYzQ4MWMwMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbnQz
MkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRl
ZiBJbnQzMkFycmF5X2gKLSNkZWZpbmUgSW50MzJBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgSW50MzJB
cnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD4gewotcHVibGljOgotICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlKGNv
bnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJl
IHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBE
bwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0
IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50
MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNp
bmcgVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0OwotICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJh
eUJhc2U8aW50Pjo6c2V0OwotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gc3Vi
YXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBWaWV3
VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlSW50MzI7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LAotICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNp
YmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGludD47
Ci19OwotCi1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludD46OmNyZWF0ZTxJbnQz
MkFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6
OmNyZWF0ZShjb25zdCBpbnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJu
IFR5cGVkQXJyYXlCYXNlPGludD46OmNyZWF0ZTxJbnQzMkFycmF5PihhcnJheSwgbGVuZ3RoKTsK
LX0KLQotUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludD46OmNyZWF0ZTxJbnQzMkFycmF5
PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJh
eT4gSW50MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0g
ICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50MzJB
cnJheT4obGVuZ3RoKTsKLX0KLQotSW50MzJBcnJheTo6SW50MzJBcnJheShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkK
LSAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxl
bmd0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgo
KSk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6c3ViYXJyYXkoaW50
IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8SW50MzJB
cnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OkludDMyQXJyYXk7Ci0KLSNlbmRpZiAvLyBJbnQzMkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ludDhBcnJheS5oIGIvU291cmNlL1dURi93dGYvSW50OEFycmF5LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOWQyZDlhYWJhMzIyNWU2NDk2OGNjYTA0NDA0MDFl
MDk3MzM2M2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dURi93dGYvSW50OEFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2lmbmRlZiBJbnQ4QXJyYXlfaAotI2RlZmluZSBJbnQ4QXJyYXlfaAotCi0j
aW5jbHVkZSA8d3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLWNsYXNzIEFycmF5QnVmZmVyOwotCi1jbGFzcyBJbnQ4QXJyYXkgOiBwdWJsaWMgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShjb25zdCBzaWduZWQgY2hh
ciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEludDhBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3
aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0gICAg
Ly8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91
dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVk
QXJyYXlCYXNlPHNpZ25lZCBjaGFyPjo6c2V0OwotICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJh
eUJhc2U8c2lnbmVkIGNoYXI+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJy
YXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8SW50
OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVh
bCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlSW50
ODsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEludDhBcnJheShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3Rv
ciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNl
PHNpZ25lZCBjaGFyPjsKLX07Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNpZ25l
ZCBjaGFyPjo6Y3JlYXRlPEludDhBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQ4
QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKGNvbnN0IHNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OmNy
ZWF0ZTxJbnQ4QXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDhBcnJh
eT4gSW50OEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPHNpZ25lZCBjaGFyPjo6Y3JlYXRlPEludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8c2lnbmVkIGNoYXI+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDhBcnJheT4obGVuZ3RoKTsK
LX0KLQotSW50OEFycmF5OjpJbnQ4QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsK
LX0KLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi1Q
YXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQ4QXJyYXk+KHN0YXJ0LCBl
bmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpJbnQ4QXJyYXk7Ci0K
LSNlbmRpZiAvLyBJbnQ4QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50ZWdy
YWxUeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFz
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmFmMTRjYWI1MTMzM2IwNmIyMzVj
Mjc2Y2FmZDJkOTE0YTY4YzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaAorKysgL2Rl
di9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEludGVncmFsVHlwZWRB
cnJheUJhc2VfaAotI2RlZmluZSBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKLQotI2luY2x1ZGUg
PHd0Zi9UeXBlZEFycmF5QmFzZS5oPgotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgotCi0vLyBCYXNlIGNsYXNzIGZvciBhbGwgV2ViR0w8VD5BcnJheSB0eXBl
cyBob2xkaW5nIGludGVncmFsCi0vLyAobm9uLWZsb2F0aW5nLXBvaW50KSB2YWx1ZXMuCi0KLW5h
bWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEludGVncmFsVHlw
ZWRBcnJheUJhc2UgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8VD4gewotICBwdWJsaWM6Ci0gICAg
dm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlm
IChpbmRleCA+PSBUeXBlZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkgLy8gQ2xhbXAgTmFOIHRvIDAKLSAg
ICAgICAgICAgIHZhbHVlID0gMDsKLSAgICAgICAgLy8gVGhlIGRvdWJsZSBjYXN0IGlzIG5lY2Vz
c2FyeSB0byBnZXQgdGhlIGNvcnJlY3Qgd3JhcHBpbmcKLSAgICAgICAgLy8gZm9yIG91dC1vZi1y
YW5nZSB2YWx1ZXMgd2l0aCBJbnQzMkFycmF5IGFuZCBVaW50MzJBcnJheS4KLSAgICAgICAgVHlw
ZWRBcnJheUJhc2U8VD46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxUPihzdGF0aWNfY2Fz
dDxpbnQ2NF90Pih2YWx1ZSkpOwotICAgIH0KLQotICBwcm90ZWN0ZWQ6Ci0gICAgSW50ZWdyYWxU
eXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBUeXBlZEFycmF5QmFzZTxUPihi
dWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLSAgICB7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTsKLQotI2VuZGlm
IC8vIEludGVncmFsVHlwZWRBcnJheUJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZTgyNGZhODJjN2JhYjljN2YyZTUxMmQ3ZDNiNmM1
NjQxNDUyZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBUeXBlZEFycmF5QmFzZV9oCi0jZGVmaW5lIFR5cGVk
QXJyYXlCYXNlX2gKLQotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlclZpZXcuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotY2xhc3MgVHlwZWRBcnJheUJhc2UgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsK
LSAgcHVibGljOgotICAgIFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4o
YmFzZUFkZHJlc3MoKSk7IH0KLQotICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPFQ+KiBhcnJh
eSwgdW5zaWduZWQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXks
IG9mZnNldCAqIHNpemVvZihUKSk7Ci0gICAgfQotCi0gICAgYm9vbCBzZXRSYW5nZShjb25zdCBU
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0KQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHNldFJhbmdlSW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KSwgZGF0YUxlbmd0aCAqIHNpemVvZihUKSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0K
LSAgICBib29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCi0gICAg
ewotICAgICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQgKiBzaXplb2YoVCksIGxlbmd0
aCAqIHNpemVvZihUKSk7Ci0gICAgfQotCi0gICAgLy8gT3ZlcnJpZGRlbiBmcm9tIEFycmF5QnVm
ZmVyVmlldy4gVGhpcyBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIG9mCi0gICAgLy8gcnVsZXMgYWJv
dXQgaW5oZXJpdGFuY2Ugb2YgbWVtYmVycyBpbiB0ZW1wbGF0ZSBjbGFzc2VzLCBhbmQKLSAgICAv
LyBiZWNhdXNlIGl0IGlzIGFjY2Vzc2VkIHZpYSBwb2ludGVycyB0byBzdWJjbGFzc2VzLgotICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sZW5ndGg7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2xlbmd0aCAqIHNpemVvZihUKTsKLSAgICB9Ci0KLSAgICAvLyBJ
bnZva2VkIGJ5IHRoZSBpbmRleGVkIGdldHRlci4gRG9lcyBub3QgcGVyZm9ybSByYW5nZSBjaGVj
a3M7IGNhbGxlcgotICAgIC8vIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBzbyBhbmQgcmV0dXJu
aW5nIHVuZGVmaW5lZCBhcyBuZWNlc3NhcnkuCi0gICAgVCBpdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5k
ZXggPCBUeXBlZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpOwotICAgICAgICByZXR1cm4gVHlwZWRB
cnJheUJhc2U8VD46OmRhdGEoKVtpbmRleF07Ci0gICAgfQotCi0gICAgYm9vbCBjaGVja0luYm91
bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgcG9zKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIChvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIHBv
cyA8PSBtX2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAg
ICYmIG9mZnNldCArIHBvcyA+PSBvZmZzZXQpOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIFR5
cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgICAgICA6IEFycmF5QnVmZmVyVmlldyhidWZm
ZXIsIGJ5dGVPZmZzZXQpCi0gICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgIHsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3ViY2xhc3M+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobGVuZ3RoLCBzaXplb2Yo
VCkpOwotICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0aCk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN1YmNsYXNzPiBjcmVhdGUoY29uc3QgVCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7
Ci0gICAgICAgIFJlZlB0cjxTdWJjbGFzcz4gYSA9IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsK
LSAgICAgICAgaWYgKGEpCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICAgICAgYS0+c2V0KGksIGFycmF5W2ldKTsKLSAgICAgICAg
cmV0dXJuIGE7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmKGJ1ZmZl
cik7Ci0gICAgICAgIGlmICghdmVyaWZ5U3ViUmFuZ2U8VD4oYnVmLCBieXRlT2Zmc2V0LCBsZW5n
dGgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTdWJjbGFzcyhidWYsIGJ5dGVPZmZzZXQsIGxlbmd0aCkpOwotICAgIH0KLQotICAgIHRlbXBs
YXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKGxl
bmd0aCwgc2l6ZW9mKFQpKTsKLSAgICAgICAgaWYgKCFidWZmZXIuZ2V0KCkpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVyLCAwLCBs
ZW5ndGgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBQYXNz
UmVmUHRyPFN1YmNsYXNzPiBzdWJhcnJheUltcGwoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAot
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgICAgIGNhbGN1bGF0
ZU9mZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCBtX2xlbmd0aCwgJm9mZnNldCwgJmxlbmd0aCk7
Ci0gICAgICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8VD4oYnVmZmVyKCksIG1fYnl0ZU9m
ZnNldCwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+
KGJ1ZmZlcigpLCBvZmZzZXQsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIG5l
dXRlcigpCi0gICAgewotICAgICAgICBBcnJheUJ1ZmZlclZpZXc6Om5ldXRlcigpOwotICAgICAg
ICBtX2xlbmd0aCA9IDA7Ci0gICAgfQotCi0gICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gaGF2ZSB0
byBhY2Nlc3MgdGhpcyB2aWEgYSB2aXJ0dWFsIGZ1bmN0aW9uIGluIHN1YmNsYXNzZXMsCi0gICAg
Ly8gd2hpY2ggaXMgd2h5IGl0IGlzIHByb3RlY3RlZCByYXRoZXIgdGhhbiBwcml2YXRlLgotICAg
IHVuc2lnbmVkIG1fbGVuZ3RoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdU
Rjo6VHlwZWRBcnJheUJhc2U7Ci0KLSNlbmRpZiAvLyBUeXBlZEFycmF5QmFzZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9VaW50MTZBcnJheS5oIGIvU291cmNlL1dURi93dGYvVWludDE2
QXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNmNWY5Yzk5ZDRhOGZmMjhi
N2M1ODYwYTQ0MDlkZTdlYTU5ZTJmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VaW50MTZBcnJheS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgVWludDE2QXJyYXlfaAotI2RlZmlu
ZSBVaW50MTZBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5o
PgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXI7Ci0KLWNsYXNzIFVpbnQx
NkFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IGNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZB
cnJheT4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IGNyZWF0ZShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50
aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVz
dWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNo
b3J0Pjo6c2V0OwotICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hv
cnQ+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gc3Vi
YXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUg
Z2V0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQxNjsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIFVpbnQxNkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtl
IGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlw
ZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+OwotfTsKLQotUGFzc1JlZlB0cjxVaW50MTZBcnJh
eT4gVWludDE2QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5
cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0Pjo6Y3JlYXRlPFVpbnQxNkFycmF5PihsZW5ndGgp
OwotfQotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlKGNvbnN0
IHVuc2lnbmVkIHNob3J0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OmNyZWF0ZTxVaW50MTZBcnJheT4oYXJyYXks
IGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVh
dGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNo
b3J0Pjo6Y3JlYXRlPFVpbnQxNkFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19
Ci0KLVBhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWdu
ZWQgc2hvcnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQxNkFycmF5PihsZW5ndGgpOwotfQot
Ci1VaW50MTZBcnJheTo6VWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkK
LXsKLX0KLQotUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OnN1YmFycmF5KGlu
dCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsK
LX0KLQotUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OnN1YmFycmF5KGludCBz
dGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPFVpbnQxNkFy
cmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6
VWludDE2QXJyYXk7Ci0KLSNlbmRpZiAvLyBVaW50MTZBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9VaW50MzJBcnJheS5oIGIvU291cmNlL1dURi93dGYvVWludDMyQXJyYXkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJhZGY2YmZjMTk1MTA2YThiODc3MTQwM2Y3
OTBkODJjYzEzZWRiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9VaW50MzJBcnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgVWludDMyQXJyYXlfaAotI2RlZmluZSBVaW50MzJB
cnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oPgotCi1uYW1l
c3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXI7Ci0KLWNsYXNzIFVpbnQzMkFycmF5IDog
cHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50PiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0
ZShjb25zdCB1bnNpZ25lZCBpbnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8g
U2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2ls
bCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5
IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQ+OjpzZXQ7Ci0gICAgdXNp
bmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZD46OnNldDsKLQotICAgIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlu
bGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0OwotCi0gICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBUeXBlVWludDMyOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbmxpbmUg
VWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVy
Y2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD47Ci19
OwotCi1QYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlKHVuc2lnbmVk
IGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50Pjo6Y3Jl
YXRlPFVpbnQzMkFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBV
aW50MzJBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGludCogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50Pjo6Y3JlYXRl
PFVpbnQzMkFycmF5PihhcnJheSwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MzJBcnJh
eT4gVWludDMyQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRB
cnJheUJhc2U8dW5zaWduZWQgaW50Pjo6Y3JlYXRlPFVpbnQzMkFycmF5PihidWZmZXIsIGJ5dGVP
ZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8dW5zaWduZWQgaW50Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MzJBcnJh
eT4obGVuZ3RoKTsKLX0KLQotVWludDMyQXJyYXk6OlVpbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQot
ICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+KGJ1ZmZlciwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJh
eTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFy
dCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6
c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJh
eUltcGw8VWludDMyQXJyYXk+KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotdXNpbmcgV1RGOjpVaW50MzJBcnJheTsKLQotI2VuZGlmIC8vIFVpbnQzMkFycmF5X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1Vp
bnQ4QXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNhZjA1NDc2NjViNDg4
ODdhODlkM2E0ZDJlODc0ZWZiYTkzYzhiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VaW50OEFycmF5LmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVaW50OEFycmF5X2gKLSNkZWZp
bmUgVWludDhBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5o
PgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXI7Ci0KLWNsYXNzIFVpbnQ4
QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5
PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLQot
ICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFy
cmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBk
aXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0aWMg
aW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OnNl
dDsKLSAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpzZXQ7
Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQp
IGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBz
dGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVVaW50ODsKLSAgICB9Ci0KLXByb3RlY3Rl
ZDoKLSAgICBpbmxpbmUgVWludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2UgY29uc3RydWN0b3Ig
dmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBjaGFyPjsKLX07Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6
Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5z
aWduZWQgY2hhcj46OmNyZWF0ZTxVaW50OEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRy
PFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBhcnJh
eSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25l
ZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4QXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVm
UHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZTxVaW50OEFycmF5Pihi
dWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4g
VWludDhBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAg
cmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVhdGVVbmluaXRpYWxpemVk
PFVpbnQ4QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVVpbnQ4QXJyYXk6OlVpbnQ4QXJyYXkoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCi06IEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj4oYnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShz
dGFydCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6
OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJy
YXlJbXBsPFVpbnQ4QXJyYXk+KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotdXNpbmcgV1RGOjpVaW50OEFycmF5OwotCi0jZW5kaWYgLy8gVWludDhBcnJheV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1wZWRBcnJheS5oIGIvU291cmNlL1dURi93
dGYvVWludDhDbGFtcGVkQXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVj
YzJkODJiMjkxNDJiZDMxMjgzNmE1MDc5NzY4NTA4YWRiMzBjNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1wZWRB
cnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgVWludDhDbGFtcGVkQXJyYXlfaAotI2RlZmluZSBVaW50OENsYW1wZWRBcnJh
eV9oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2luY2x1ZGUgPHd0Zi9VaW50OEFy
cmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0K
LWNsYXNzIFVpbnQ4Q2xhbXBlZEFycmF5IDogcHVibGljIFVpbnQ4QXJyYXkgewotcHVibGljOgot
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVh
dGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24g
dGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRo
ZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3Qu
Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBJdCdzIG9ubHkgbmVlZGVk
IHRvIHBvdGVudGlhbGx5IGNhbGwgdGhpcyBtZXRob2QgaWYgdGhlIGFycmF5Ci0gICAgLy8gd2Fz
IGNyZWF0ZWQgdW5pbml0aWFsaXplZCAtLSB0aGUgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBwYXRo
cwotICAgIC8vIHplcm8gdGhlIGFsbG9jYXRlZCBtZW1vcnkuCi0gICAgaW5saW5lIHZvaWQgemVy
b0ZpbGwoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpzZXQ7
Ci0gICAgaW5saW5lIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpOwotCi0g
ICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHN1YmFycmF5KGludCBzdGFy
dCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdl
dFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBVaW50OENsYW1wZWRBcnJheShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0
ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmll
bmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj47Ci19OwotCi1QYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0
ZTxVaW50OENsYW1wZWRBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBh
cnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNp
Z25lZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihhcnJheSwgbGVuZ3RoKTsKLX0K
LQotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hh
cj46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
OwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQ4Q2xhbXBl
ZEFycmF5PihsZW5ndGgpOwotfQotCi12b2lkIFVpbnQ4Q2xhbXBlZEFycmF5Ojp6ZXJvRmlsbCgp
Ci17Ci0gICAgemVyb1JhbmdlKDAsIGxlbmd0aCgpKTsKLX0KLQotdm9pZCBVaW50OENsYW1wZWRB
cnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCi17Ci0gICAgaWYgKGluZGV4
ID49IG1fbGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUp
IHx8IHZhbHVlIDwgMCkKLSAgICAgICAgdmFsdWUgPSAwOwotICAgIGVsc2UgaWYgKHZhbHVlID4g
MjU1KQotICAgICAgICB2YWx1ZSA9IDI1NTsKLSAgICBkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4obHJpbnQodmFsdWUpKTsKLX0KLQotVWludDhDbGFtcGVkQXJyYXk6
OlVpbnQ4Q2xhbXBlZEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotOiBVaW50OEFycmF5KGJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBV
aW50OENsYW1wZWRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVy
biBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDhDbGFtcGVkQXJyYXk+KHN0YXJ0
LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpVaW50OENsYW1w
ZWRBcnJheTsKLQotI2VuZGlmIC8vIFVpbnQ4Q2xhbXBlZEFycmF5X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ODdkOThjOGFlZThlOTQ3NzI1YTFlN2YyNDE4NTI3NDAxNzlhN2NkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJh
eUJ1ZmZlci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZl
cl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0FycmF5QnVmZmVyX2gKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZTM5NTI2Njk3Y2QxMGRiM2Y0OGY4Yjk2ZGQwMDRkOGIzZjk0ODJiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1
ZmZlclZpZXcuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfQXJyYXlCdWZm
ZXJWaWV3X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfQXJyYXlCdWZmZXJWaWV3X2gKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDMyQXJyYXkuaCBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQzMkFycmF5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjI0NTNkZDIxNjA4ZDNjY2M5Y2U0OGMxMDUwNjRhNzc2ZmViM2QwZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
RmxvYXQzMkFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0Zsb2F0
MzJBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0Zsb2F0MzJBcnJheV9oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Zsb2F0NjRBcnJheS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU3ZTM1YWFkYzg4YWViYzk1NTBhZTVmNTgxZDFiOGQ4OWM4M2E2ZTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Zsb2F0
NjRBcnJheS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9GbG9hdDY0QXJy
YXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9GbG9hdDY0QXJyYXlfaAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Zsb2F0NjRBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDE2QXJyYXkuaCBiL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1
ZDAwMzk5ZGEzNTQ5NzkzY2RiOWMxYjdlYTJlMTRhNDg3YzgxMjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDE2QXJyYXkuaApA
QCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW50MTZBcnJheV9oCisjZGVmaW5l
IFdlYkNvcmVfRldEX0ludDE2QXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDE2
QXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9JbnQzMkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjY1NzQxZDc2OWJjZTY5MDkx
ZmRmMjBmMThhYTBiZWRjNmVhMGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQzMkFycmF5LmgKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX0ludDMyQXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnQz
MkFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnQzMkFycmF5Lmg+CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50
OEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDhB
cnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiNmFkNTI3NDBiNTFmMWZkZmI4OGFhZWFjMzFjY2E5NWI4OTE0
NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9y
dW50aW1lL0ludDhBcnJheS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9J
bnQ4QXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnQ4QXJyYXlfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0ludDhBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NzliNTY4NGM2NjA3MTM3Y2M1OGI3NjdhZTZmZmExNmJh
ZjhhNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCisjZGVmaW5lIFdlYkNvcmVf
RldEX0ludGVncmFsVHlwZWRBcnJheUJhc2VfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU2NDFhNTdjM2E2NThiYmM1ZjAwMmRmMDE2Nzk3MGU2MmY1ZjE0MGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJy
YXlCYXNlLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1R5cGVkQXJyYXlC
YXNlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVHlwZWRBcnJheUJhc2VfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlCYXNlLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDE2QXJyYXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDE2QXJyYXkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jY2NlYTJjMWIwYzA3MzdlYzZjODBmNDNiNmE1ZTFiMDM1ZDk2MmUyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZB
cnJheS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VaW50MTZBcnJheV9o
CisjZGVmaW5lIFdlYkNvcmVfRldEX1VpbnQxNkFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9VaW50MTZBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQzMkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQzMkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYwMjZm
MTVjMDYzNjE4Y2M2YjJkNDE2MmQ4Y2JlYzhhYTdiMGIyOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaApAQCAt
MCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVWludDMyQXJyYXlfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9VaW50MzJBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDMy
QXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9VaW50OEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzhkZTRlYTc4Y2NhZGU0OTIz
YTg2OTYwMWIxNTBkZDU4NTdkNzY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OEFycmF5LmgKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1VpbnQ4QXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9VaW50
OEFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWlu
dDhDbGFtcGVkQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvVWludDhDbGFtcGVkQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2QyZTAxZDFhOGU1NzBkOGFhNTI5
NTg0ZTExYTk4NjU1M2M2OTk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oCkBAIC0wLDAgKzEsNCBA
QAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VaW50OENsYW1wZWRBcnJheV9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1VpbnQ4Q2xhbXBlZEFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50
OENsYW1wZWRBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BbmFseXNlck5vZGUuaAppbmRleCA5ZjJmMGI4NzMyMDkyMzc2ZWRkNzlkYzdjMWFlYTVl
YTk3Y2Q4MzQ0Li5jM2FhNWM3NzgyYzA3N2M0ZDE0YmMwMGMxNWE3YjUwMWRjMzIwZGRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKQEAgLTU5
LDkgKzU5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGZs
b2F0IGssIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBmbG9hdCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQo
KSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCgpOyB9CiAK
LSAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShGbG9hdDMyQXJyYXkqIGFycmF5KSB7IG1f
YW5hbHlzZXIuZ2V0RmxvYXRGcmVxdWVuY3lEYXRhKGFycmF5KTsgfQotICAgIHZvaWQgZ2V0Qnl0
ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRlRnJl
cXVlbmN5RGF0YShhcnJheSk7IH0KLSAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0YShVaW50
OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YShhcnJheSk7
IH0KKyAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShKU0M6OkZsb2F0MzJBcnJheSogYXJy
YXkpIHsgbV9hbmFseXNlci5nZXRGbG9hdEZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9CisgICAgdm9p
ZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShKU0M6OlVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlz
ZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9CisgICAgdm9pZCBnZXRCeXRlVGltZURv
bWFpbkRhdGEoSlNDOjpVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1l
RG9tYWluRGF0YShhcnJheSk7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggZjAwYmQx
YWRjZjIxMDRjZmQyZTk3ZmEzNTAxYjYwM2RjN2RhMjg4YS4uMDkzODNlZjVmNDc5ZjM1NDA3ZmYx
MTMwMDgwZDNlMTYyNDZiYmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9CdWZmZXJDYWxsYmFjay5oIgot
I2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4IGNlZDgwNThjMGY2MDE0
M2QzMzM1MWQ0ZWNhNTY1YWJkOGQ3ODQ4YTcuLjljZmE4OGU1ZWMwY2IzZTZmNzA2YmRhMjY0ZjBl
OTI3NWQzMmZiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorbmFtZXNwYWNlIEpTQyB7Citj
bGFzcyBBcnJheUJ1ZmZlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRp
b0J1ZmZlcjsKQEAgLTQ3LDIwICs1MSwyMCBAQCBwdWJsaWM6CiAgICAgfkFzeW5jQXVkaW9EZWNv
ZGVyKCk7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAg
dm9pZCBkZWNvZGVBc3luYyhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRl
LCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIGRlY29k
ZUFzeW5jKEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFz
c1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAKIHByaXZhdGU6CiAgICAgY2xh
c3MgRGVjb2RpbmdUYXNrIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVjb2RpbmdU
YXNrKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPERlY29kaW5nVGFz
az4gY3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1
ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOworICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0ZShKU0M6OkFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZs
b2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwog
CiAgICAgICAgIHZvaWQgZGVjb2RlKCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IERlY29kaW5nVGFzayhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQ
YXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgRGVjb2RpbmdU
YXNrKEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1Jl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVk
aW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAKLSAgICAgICAgQXJyYXlCdWZmZXIq
IGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhLmdldCgpOyB9CisgICAgICAgIEpTQzo6
QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhLmdldCgpOyB9CiAg
ICAgICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
ICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFjayogc3VjY2Vzc0NhbGxiYWNrKCkgeyByZXR1cm4g
bV9zdWNjZXNzQ2FsbGJhY2suZ2V0KCk7IH0KICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFjayog
ZXJyb3JDYWxsYmFjaygpIHsgcmV0dXJuIG1fZXJyb3JDYWxsYmFjay5nZXQoKTsgfQpAQCAtNjks
NyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdm9pZCBub3RpZnlDb21wbGV0ZURp
c3BhdGNoKHZvaWQqIHVzZXJEYXRhKTsKICAgICAgICAgdm9pZCBub3RpZnlDb21wbGV0ZSgpOwog
Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hdWRpb0RhdGE7CisgICAgICAgIFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPiBtX2F1ZGlvRGF0YTsKICAgICAgICAgZmxvYXQgbV9zYW1wbGVS
YXRlOwogICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJh
Y2s7CiAgICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmgKaW5kZXgg
ODI3ZGY5ZWJiODRlNmUwYTI3YmRlMmNkODAxNTAzMTZlYjA2N2RhZi4uMWNhNjc2NmJjOTllMmEy
YWYzOTk4ZTJmZGU5ODdhMDk0YjFlZTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBBdWRpb0J1
ZmZlcl9oCiAjZGVmaW5lIEF1ZGlvQnVmZmVyX2gKIAotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJy
YXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKaW5kZXggMmI0ZDE3OTg4YTJhZjE2MjIxNDc0NDg1NTY5Y2ZhYjllZmZmMzUyNS4u
OGEwZThkNWIyYjYxNTBlZGNkMjRjNGRmY2MwNWIzZmZmYzliN2VlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNzksNyArNzks
NyBAQAogI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2VuZGlmCiAKLSNpbmNsdWRl
IDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmgKaW5kZXggNTI0Zjk4ZjA3ZjhjMmFhZTYzOTAzMTk2Yzc0MWZjMmI5NGM0ODk5
MS4uMWU0MDdiYTBiYTQ4NTEzZWE4NjQ1M2E3MTIzYzY0N2JmNTQwMTY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKQEAgLTMyLDggKzMyLDggQEAK
ICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtVGltZWxpbmUu
aCIKICNpbmNsdWRlICJBdWRpb1N1bW1pbmdKdW5jdGlvbi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
RmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8d3RmL0Zs
b2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCmlu
ZGV4IGMwYTk2MDg3MDQ5MTMwOGU3MTA0NDA5ZGFkNzk0ODYwMzVkYzFiMTEuLmUwZTVhNWRjY2I1
MDJiYjM3M2VkYmQwNzIwMWI1NGRlZmJhNDZjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaApAQCAtMzAsNyArMzAsNyBA
QAogI2RlZmluZSBBdWRpb1BhcmFtVGltZWxpbmVfaAogCiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0
LmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxv
YXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oCmluZGV4IDNiNmRlNjhmZTBlMGZi
MzI5MDZiMGY3Mjg0MjZhYjk4MWIwNzkwZjYuLjEyNDNkOTA4MGQyZGNlZTY2YzA2M2JkODcxNzg5
NmM0MmExYmRmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGVyaW9kaWNXYXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJp
b2RpY1dhdmUuaApAQCAtMzAsNyArMzAsNyBAQAogI2RlZmluZSBQZXJpb2RpY1dhdmVfaAogCiAj
aW5jbHVkZSAiQXVkaW9BcnJheS5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcAppbmRleCA2ODE2M2NlNTU3YTFmZTE4MDE5MTJlYTI5ZmRhN2VkMGM1ODIyOTc2Li42
NGEzY2YzYjk0OTczMTAzY2UwOGJhMGI5MWRhMjdiMmI2MWRmMWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTM0
LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8Y29tcGxleD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0
aW1lQW5hbHlzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVB
bmFseXNlci5oCmluZGV4IDAyZWEwNWY1ZWVlYTVjZmFlZjIwNjUzMzUwZGY0MjNmMzlhOWMwMGIu
LjFmYmI2OGE1NjY3ZDcxYWVjZDM5Zjk1MzU5MTk3MDlhM2ZiMWEzOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oCkBAIC0zMCw2
ICszMCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGbG9hdDMyQXJyYXk7CitjbGFzcyBV
aW50OEFycmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVzOwpA
QCAtNTcsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTbW9vdGhpbmdUaW1lQ29uc3Rh
bnQoZmxvYXQgaykgeyBtX3Ntb290aGluZ1RpbWVDb25zdGFudCA9IGs7IH0KICAgICBmbG9hdCBz
bW9vdGhpbmdUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
bV9zbW9vdGhpbmdUaW1lQ29uc3RhbnQpOyB9CiAKLSAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5
RGF0YShGbG9hdDMyQXJyYXkqKTsKLSAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4
QXJyYXkqKTsKLSAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5Kik7Cisg
ICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoSlNDOjpGbG9hdDMyQXJyYXkqKTsKKyAgICB2
b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRhKEpTQzo6VWludDhBcnJheSopOworICAgIHZvaWQgZ2V0
Qnl0ZVRpbWVEb21haW5EYXRhKEpTQzo6VWludDhBcnJheSopOwogCiAgICAgLy8gVGhlIGF1ZGlv
IHRocmVhZCB3cml0ZXMgaW5wdXQgZGF0YSBoZXJlLgogICAgIHZvaWQgd3JpdGVJbnB1dChBdWRp
b0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggNGUzNmU4
Nzk3YTZlZGQ5MmY3MTE5MWMwMzkwNDBhOWUxZTgzYzg5Ni4uYWIxZDJlZTBmYjI4NDVmOTZiMWE5
ZGY5NTE0ZDUwYzNhMjM0MDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAj
aW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9Qcm9jZXNzaW5nRXZl
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXku
aD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKaW5kZXggNTU5N2E5NGMx
ZTcyNzQzYWRmN2Y4NGFiZjI4ZjI3NGRjZjM5MDk3Ny4uNjM1YWM3NWQ5NGIyM2QzMWY4YTlkNjlj
YTk3NTQ3ZGIxYTkzMmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRl
ICJBdWRpb0RTUEtlcm5lbC5oIgogI2luY2x1ZGUgIkF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgi
CiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAppbmRleCAxOGQ5OWE5ZjBhYWYwMmQ1ZTk0ZjVkNWU4ZWE0ZTgzZjUzMjg0YmFhLi5mZjcyODNk
ODU3ZjhlMmNkZTM4Y2YwMjMzNTg0OWJiN2JlNDFlZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaApAQCAtMzcsNiArMzcsMTEgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFy
cmF5QnVmZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC02MCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlk
Q29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5z
aW9ucygpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxi
YWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlC
dWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSA9IDA7Cisg
ICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIFNl
bmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50
IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGI0YjQ5YzEwZTk0OTRkZDUyNmRh
YjgxYTU5ZjA3ZDlhOTkxYWVlNWUuLjVmYTNkOWY2YTBkMWM4ZGYxODFmMGQyNDI5MGQ1ODEyM2Yy
OTM0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCkBAIC01NCw4ICs1NCw4IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWwuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYv
QXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBl
NjQ3OTAzMTU1NjcwZWM5YzkwN2E1YTlhMjQxMzE1ZDdjZWY2YTgzLi45YTU4MjM3MGZmZDg2NDBj
NDAxZjJkMzdlMWI5Y2Q5YWJkZjNiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2Nv
bHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXIqLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCBzZW5kKEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dm9pZCBzZW5kKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIGNsb3NlKGludCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IDViZTk5YTkxMmU1OTdlYjg4ZTU5OTViM2VhOTc2Y2ExOTdkMDkxYTAuLjM0ZjRhYmU2MjBm
OGUyZWEzZmMwZDAxMGIwMTA5YmJkYWFiMTU2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlLmgiCiAKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggMTcwYWIxODNhZDQ4M2U5OTQzNDkxOWZlMjlkZWExMDNhNjYwODU5Mi4uZjE0OGNkOTFi
MDgxMDA4ZjhiYWY1MDA1ZmUwOWE0OTc0ODM3MTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC03Miw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25z
dCBCbG9iJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNTY3Yjk3
OTUyMjUyZjQzZmQ3YzUxOWRhM2Y0N2MyMzI0YTI2NjYzNS4uNzhiNWIxMDNhMjQyNWU5ZjY1MjVh
N2MxMTg2NjU1Y2Y0ZTZhOWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1
ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMjQyMTM0MzVkMTNkNmI1NTBmYTY0ZGZiMjJj
NzhmZTZiNjQ2MzAzMy4uNDE5YWM0MmQ2YmMzOWQ4NmZiNmNjMmZiNzc5ZmMxYzY5ZWYyZGJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0
IEJsb2ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91
bnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uKSBPVkVSUklERTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgog
CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCk7CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICB2
b2lkIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKKyAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEpT
Qzo6QXJyYXlCdWZmZXImKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEJsb2ImKTsKICAgICAg
ICAgdm9pZCBidWZmZXJlZEFtb3VudCgpOwogICAgICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbik7CkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZl
ciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgICAgICBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJy
YXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAg
ICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBC
bG9iJik7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKTsKICAgICAgICAg
dm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA0ZjJjNzA3MzE5MmZhYzQxZGMzNTVjMmY5MzlhMDc2Yzg3NjVjOTNhLi5iMWZm
MjE2OTdkNjVmYTdkN2Q3NjE1MWQyMjQ5M2U4ZDRiZWRlYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtNzIwLDcgKzcyMCw3IEBAIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVy
RDJFdgogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRlc2VyaWFsaXplRVBL
MTVPcGFxdWVKU0NvbnRleHRQUEsxM09wYXF1ZUpTVmFsdWUKIF9fWk43V2ViQ29yZTIxU2VyaWFs
aXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQTjNKU0M5RXhlY1N0YXRlRVBOUzFfMTRKU0ds
b2JhbE9iamVjdEVQTjNXVEY2VmVjdG9ySU5TNl82UmVmUHRySU5TXzExTWVzc2FnZVBvcnRFRUVM
bTFFTlM2XzE1Q3Jhc2hPbk92ZXJmbG93RUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQog
X19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVKU0Nv
bnRleHRQSzEzT3BhcXVlSlNWYWx1ZVBTNl8KLV9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlw
dFZhbHVlNmNyZWF0ZUVQTjNKU0M5RXhlY1N0YXRlRU5TMV83SlNWYWx1ZUVQTjNXVEY2VmVjdG9y
SU5TNV82UmVmUHRySU5TXzExTWVzc2FnZVBvcnRFRUVMbTFFTlM1XzE1Q3Jhc2hPbk92ZXJmbG93
RUVFUE5TNl9JTlM3X0lOUzVfMTFBcnJheUJ1ZmZlckVFRUxtMUVTQV9FRU5TXzIyU2VyaWFsaXph
dGlvbkVycm9yTW9kZUUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0
ZUVQTjNKU0M5RXhlY1N0YXRlRU5TMV83SlNWYWx1ZUVQTjNXVEY2VmVjdG9ySU5TNV82UmVmUHRy
SU5TXzExTWVzc2FnZVBvcnRFRUVMbTFFTlM1XzE1Q3Jhc2hPbk92ZXJmbG93RUVFUE5TNl9JTlM3
X0lOUzFfMTFBcnJheUJ1ZmZlckVFRUxtMUVTQV9FRU5TXzIyU2VyaWFsaXphdGlvbkVycm9yTW9k
ZUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RGNlZlY3Rv
ckloTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVk
U2NyaXB0VmFsdWVEMUV2CkBAIC05MDcsNyArOTA3LDcgQEAgX19aTjdXZWJDb3JlNFBhdGhDMUV2
CiBfX1pON1dlYkNvcmU0UGF0aEQxRXYKIF9fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJMUHJvdGVj
dGlvblNwYWNlCiBfX1pON1dlYkNvcmU0Y29yZUVQMjhOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlCi1fX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOM1dURjExQXJyYXlCdWZmZXJFCitfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhl
Y1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOUzBfMTFBcnJheUJ1ZmZlckUKIF9fWk43
V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5T
XzEwQ2xpZW50UmVjdEUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3
SlNET01HbG9iYWxPYmplY3RFUE5TXzEzRE9NU3RyaW5nTGlzdEUKIF9fWk43V2ViQ29yZTR0b0pT
RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzE0Q2xpZW50UmVj
dExpc3RFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVm
ZmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJD
dXN0b20uY3BwCmluZGV4IDJmYTMwNmE5ZDM4YzJjMzliMzcyZTU5NGE2ZjgyODI5YTQ2MzU4OWUu
LmRmZDUyYWI3OGZjYzY3ZTdkMmI0NjNhMDVmNjViNmY0MDdmNjBhMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCkBAIC0yNyw4
ICsyNyw4IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
cnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJy
YXlCdWZmZXJWaWV3SGVscGVyLmgKaW5kZXggOWFmM2Y4YWRkN2Q2OTU3YjVlZDBiOTUwNjU3NWEz
YTRhYTliNzUyNi4uODdiNmU0YzkxN2RjNDU0ODc5OTgyZTI3ODg4OWNjYTA3MWVmYTBjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hl
bHBlci5oCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNp
bmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FyZ0xp
c3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+Ci0j
aW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUgPHd0Zi9UeXBlZEFycmF5
QmFzZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUJhc2UuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1
ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
Q29udGV4dEN1c3RvbS5jcHAKaW5kZXggZDczMDM2ZmY5MWIxMGVlNjZlNzAzZDdhYzNmNjUwOTU0
NzMyYzZlZC4uYWI2ODUyNmVjNjI1NGQyNmUxYzJmZGIzM2YwZjEyZGJmOWJjNzE2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIkpTQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiSlNPZmZsaW5lQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29udGV4
dC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNw
cAppbmRleCBhOTYzYTc0Njg3NjU0YTJlYzgwMDhkNGZjMzcyMjE4MzFhOWI1YmE1Li5kOWU5Mjk4
MWE2YTM5MWM2OTk4NDM1ZTY2Njg0OWExZWRiMGJlMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAKKyNp
bmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXgg
MWY4Njg0ZmYwYzEzNzUxY2IxYjdmZjAyOGVhODA0OWVmNjA4NGYwNi4uMDUxOWZlMjY1ZGZlMDk0
NDUyY2Q2YTIzYTkxZmEyMjM0MTBhY2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaWN0aW9uYXJ5LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
c3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBI
YXNoU2V0PEF0b21pY1N0cmluZz4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBBcnJheVZhbHVlJiByZXN1bHQpOwot
ICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiByZXN1bHQpOworICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPEpTQzo6VWludDhBcnJh
eT4mIHJlc3VsdCk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGF0aWMgdm9p
ZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxNZWRp
YUtleUVycm9yPiYgcmVzdWx0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKaW5kZXggOGI0OTNjYTE3NjlmMmVkOTk3YTll
NTA1NTdmMGM1NGQ1NDAzMmMzNy4uZTg1MTIxOWFmYTc0ODhiMzM1OTFmNDZjYmE2NGQ4MDNhNTA5
MTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJD
dXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKICNpbmNsdWRlICJGaWxlUmVhZGVyLmgiCiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDVlZDUzZTdiNTNkMjkzMDRkYjMzYWVkYzI3
OTIxMGUyMDExM2UxMGMuLjIyYmYxYWFjN2MxMjA2OTQyZjU3ZWYyYWUyZWRlZmI2ZDQ1YWQyZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTg1LDExICs4NSwxMSBAQAogI2luY2x1ZGUg
IldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9G
bG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+
Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvVWludDMyQXJyYXku
aD4KIAogI2lmIEVOQUJMRShWSURFTykKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwCmluZGV4IDJiNzk5YzUwZWViYzBiMWM0OTMyNGQ1NmVjMTlhYTlhZWZkMDBlNmIuLjhk
ZDhiZjU1OTIyZjY1NDQ3NTk0NWIwNGFjMTQyYzg1OTQyYTZhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC00
OCw4ICs0OCw4IEBACiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlIDxpbnRlcnByZXRlci9TdGFja0l0ZXJhdG9yLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggMTI2YTA0YmZiYTExOTQ0NTg0MTU4Nzk4NWEzNTg1MmY0YTcwZTk4ZS4u
MzgyY2IyN2ViM2VkNGIyYjA1M2QyZTVhNjg3MWNkNTcxNGFjMGQzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC01
OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElTaGltcy5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0Jvb2xlYW5PYmpl
Y3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KQEAgLTY3LDkgKzY4LDggQEAKICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHAuaD4KICNpbmNsdWRlIDxydW50
aW1lL1JlZ0V4cE9iamVjdC5oPgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTk3OCw3ICs5NzgsNyBAQCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQogICAgIHJldHVybiBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiB9CiAKLXR5cGVkZWYgVmVjdG9y
PFdURjo6QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwordHlw
ZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk7CiAKIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKIHB1YmxpYzoK
QEAgLTE3NzcsNyArMTc3Nyw3IEBAIFBhc3NPd25QdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1CiAgICAgVmVjdG9y
PFJlZlB0cjxET01XcmFwcGVyV29ybGQ+ID4gd29ybGRzOwogICAgIHN0YXRpY19jYXN0PFdlYkNv
cmVKU0NsaWVudERhdGEqPihleGVjLT52bSgpLmNsaWVudERhdGEpLT5nZXRBbGxXb3JsZHMod29y
bGRzKTsKIAotICAgIEhhc2hTZXQ8V1RGOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CisgICAgSGFz
aFNldDxKU0M6OkFycmF5QnVmZmVyKj4gdmlzaXRlZDsKICAgICBmb3IgKHNpemVfdCBhcnJheUJ1
ZmZlckluZGV4ID0gMDsgYXJyYXlCdWZmZXJJbmRleCA8IGFycmF5QnVmZmVycy5zaXplKCk7IGFy
cmF5QnVmZmVySW5kZXgrKykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFycmF5QnVmZmVyVmll
dz4gPiBuZXV0ZXJlZFZpZXdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGQzY2Q4ODA4ZDg0NmIzZTc3YzgwMDM1MDY2
ZGU1ZjU0YzdhMDc3YzkuLjYxMTEyZTdjNjg1MDA5ZTY3NGY2MzcwNDM3ODI0YjZiMzJhNDQ3MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2lu
Y2x1ZGUgPGhlYXAvU3Ryb25nLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwogdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKLXR5cGVkZWYgVmVjdG9yPFJlZlB0
cjxXVEY6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKK3R5cGVkZWYgVmVjdG9y
PFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKICAKIGVudW0g
U2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAg
LTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwog
CiBwcml2YXRlOgotICAgIHR5cGVkZWYgVmVjdG9yPFdURjo6QXJyYXlCdWZmZXJDb250ZW50cz4g
QXJyYXlCdWZmZXJDb250ZW50c0FycmF5OworICAgIHR5cGVkZWYgVmVjdG9yPEpTQzo6QXJyYXlC
dWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogICAgIHN0YXRpYyB2b2lk
IG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoSlNDOjpFeGVjU3RhdGUq
LCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3RhdGljIGJvb2wgc2VyaWFsaXphdGlv
bkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBz
dGF0aWMgUGFzc093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHRyYW5zZmVyQXJyYXlC
dWZmZXJzKEpTQzo6RXhlY1N0YXRlKiwgQXJyYXlCdWZmZXJBcnJheSYsIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IDBmMjhmNmVlNTI5MmI0MjJlNDBjNWRmNjFmYWEzYmNmNjFl
MGQ1NzIuLjZkNTg5MmQ3OTU2N2YzOWZiODk2MzkwNThlMjZmYWUwMjhmY2Q3MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC0yMjYsNyArMjI2LDcgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgIH0gZWxzaWYgKCRp
c0NhbGxiYWNrICYmICRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSkgewogICAg
ICAgICAkaW5jbHVkZXNSZWYtPnsiSlMke3R5cGV9LmgifSA9IDE7CiAgICAgfSBlbHNpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgICRpbmNsdWRl
c1JlZi0+eyI8d3RmLyR7dHlwZX0uaD4ifSA9IDE7CisgICAgICAgICRpbmNsdWRlc1JlZi0+eyI8
cnVudGltZS8ke3R5cGV9Lmg+In0gPSAxOwogICAgIH0gZWxzZSB7CiAgICAgICAgICMgZGVmYXVs
dCwgaW5jbHVkZSB0aGUgc2FtZSBuYW1lZCBmaWxlCiAgICAgICAgICRpbmNsdWRlc1JlZi0+eyIk
e3R5cGV9LmgifSA9IDE7CkBAIC02ODMsNyArNjgzLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAK
ICAgICBpZiAoJGhhc1BhcmVudCAmJiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0In0pIHsKICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc1R5cGVkQXJyYXlUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAgICAgICAgJGhlYWRl
ckluY2x1ZGVzeyI8d3RmLyRpbnRlcmZhY2VOYW1lLmg+In0gPSAxOworICAgICAgICAgICAgJGhl
YWRlckluY2x1ZGVzeyI8cnVudGltZS8kaW50ZXJmYWNlTmFtZS5oPiJ9ID0gMTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siJGludGVyZmFjZU5hbWUuaCJ9
ID0gMTsKICAgICAgICAgfQpAQCAtMzYxMiw3ICszNjEyLDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZQogICAgICAgICAjIERlZmF1bHQsIGluY2x1ZGUgaGVhZGVyIHdpdGggc2FtZSBuYW1lLgogICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMkdHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSkgewotICAgICAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjx3dGYvJHR5cGUuaD4iLCAkY29uZGl0aW9uYWwpIGlm
IG5vdCAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpOworICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxydW50aW1lLyR0eXBlLmg+IiwgJGNvbmRpdGlvbmFsKSBp
ZiBub3QgJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCR0eXBlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIkdHlwZS5oIiwgJGNvbmRp
dGlvbmFsKSBpZiBub3QgJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCR0eXBlKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IDY1OThlZmI3ZmI2MGUz
ZDA2MzdlMmQxMjczNmJiOWFiYTIxMTBmMTIuLmYwNGZiYjJkMzM4ODgwODZiNWRmZDg4MjRjNGUw
ZmFlZjJhOWFjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTM0LDcgKzM0LDcg
QEAKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVm
ZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IGJmOGMzM2Q5
NmQzODZhOTE1OTllMzYwZDFhMGEwN2NiNTA2NjcxN2YuLmY2OTY3NzViM2I4ZDVkYzAyNmQzZjEy
MDUwZDZiMzlhNzI5OTA4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcApA
QCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcm9ncmVz
c0V2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggN2YyMTMzZGUwOGExZTE0NzFj
YmE5YzNkZmUwZTc5OTQwNDAzZTNhMS4uYzIwZjk3YTlmYmYzZGY5M2EyNTRjNTNiMGMzZWE1OTAz
MWNiYzkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTQyLDYgKzQyLDEw
IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwpAQCAtNzMsNyArNzcsNyBAQCBwdWJsaWM6
CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQog
ICAgIFBhc3NSZWZQdHI8RmlsZUVycm9yPiBlcnJvcigpIHsgcmV0dXJuIG1fZXJyb3I7IH0KICAg
ICBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSByZWFkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVhZFR5cGU7IH0KLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3Vs
dCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXJS
ZXN1bHQoKSBjb25zdDsKICAgICBTdHJpbmcgc3RyaW5nUmVzdWx0KCk7CiAKICAgICAvLyBFdmVu
dFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5k
ZXggNzdjMDVmZTgxM2I3ODcwNGRhNDNmOTNjYTJhOTUwMmU0MmEzNTVkNC4uMjQ0N2MzMGVhNTE0
YWZjOGFmMjI1YjRlYTZlZjA0YzIyZGE1N2NlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+
CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZWMxYmRmZGIy
ZDUxMjk1N2EzODNiZTY1YWRmMWE1ZmZhOTg2OWQ3OC4uMjRmMWU3ZjFiZGE4NmEzNDc3NzE4ZjE3
MWFmMDcyY2JlYzlmOTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmgKQEAgLTQwLDYgKzQwLDEwIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJh
eUJ1ZmZlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwpAQCAtNzIs
NyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogCiAgICAgU3RyaW5nIHN0cmluZ1Jlc3VsdCgpOwotICAgIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0OwogI2lmIEVOQUJMRShT
VFJFQU0pCiAgICAgUGFzc1JlZlB0cjxCbG9iPiBibG9iUmVzdWx0KCk7CiAjZW5kaWYgLy8gRU5B
QkxFKFNUUkVBTSkKQEAgLTEwNSw3ICsxMDksNyBAQCBwcml2YXRlOgogICAgIEtVUkwgbV91cmxG
b3JSZWFkaW5nOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKIAotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9yYXdEYXRhOworICAgIFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyPiBtX3Jhd0RhdGE7CiAgICAgYm9vbCBtX2lzUmF3RGF0YUNvbnZlcnRlZDsKIAogICAgIFN0
cmluZyBtX3N0cmluZ1Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlclN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3lu
Yy5jcHAKaW5kZXggNzllNTIwMGVhN2FmYmRjY2U5NzIyYThmMWZmMjY1MWMwOGI0YjU3NC4uMmQ1
M2FmZDFiOWU3MjE4YjUyZDMzNTI4MDk2MDE2MmRiNjQzYjFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJC
bG9iVVJMLmgiCiAjaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkZpbGVSZWFk
ZXJMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyU3luYy5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5oCmluZGV4
IDlmZTVjMzAwM2I1ZGU3OGIzMzEyYzhiMDNmYzhlNzcyYzk0YzQ5ZGQuLjUwMTQwZWZjZGQ2MGQ2
NTk4NTQzZmZjN2VjYmIzYmQ3ODA2YTAxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlclN5bmMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJTeW5jLmgKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEpTQyB7Citj
bGFzcyBBcnJheUJ1ZmZlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9i
OwpAQCAtNTQsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GaWxlUmVhZGVyU3lu
YygpIHsgfQogCi0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcmVhZEFzQXJyYXlCdWZmZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFz
c1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgcmVhZEFzQmlu
YXJ5U3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIFN0cmluZyByZWFkQXNUZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKaW5kZXggMTYyMmUy
ZmU0MmIwYjkzYWI5MGQ4M2YxZGYxYTQ3NDFmZTQzYzFiZi4uNGIzYTJlYTdhYWYxNjI5N2I1NTk5
ZGI4ZmYwNzY2YjNjYjk5YjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9X
ZWJLaXRCbG9iQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRC
bG9iQnVpbGRlci5jcHAKQEAgLTQwLDggKzQwLDggQEAKICNpbmNsdWRlICJMaW5lRW5kaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgi
Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Vmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oCmluZGV4IDMzNWJjNzY2
ZGVhNWQ2MmI5ZTcwNDY3NWIxZmE4ZDAwZjU3MmU0N2MuLmJjY2MyNzgwMjAxMmRlMzA5MmM5NTE1
YzJmYWVmZWVkZjljNGRiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2Vi
S2l0QmxvYkJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JC
dWlsZGVyLmgKQEAgLTM0LDYgKzM0LDExIEBACiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVy
OworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEZJWE1FOiBNb3ZlIHRoaXMgZmlsZSB0byBCbG9iQnVpbGRlci5oCkBAIC01MCw4ICs1NSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChCbG9iKik7CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGVuZGluZyk7CiAjaWYgRU5BQkxFKEJMT0IpCi0g
ICAgdm9pZCBhcHBlbmQoQXJyYXlCdWZmZXIqKTsKLSAgICB2b2lkIGFwcGVuZChBcnJheUJ1ZmZl
clZpZXcqKTsKKyAgICB2b2lkIGFwcGVuZChKU0M6OkFycmF5QnVmZmVyKik7CisgICAgdm9pZCBh
cHBlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxC
bG9iPiBnZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2E5YTZkOTMyYzZmNjAyN2IzYmIyNGI0MDVl
ZDg0YjVmZWRhYWFmNi4uOTYzMjQ5M2JiNTNkMWViNzYzYTJlYmNhZjZjZTExMGY0ODM3NWE0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC04MCwxMCArODAs
MTAgQEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgog
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25Db3B5aW5nU29ydC5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKaW5kZXggNzYxNjg3MDYzYTU1ZTU0NWZi
Y2RkYzY4ZmIwODkyZjQ5ZTQ5Y2E5YS4uODBiM2ViMGNkZmI2Zjg5MGFjMjAzZDQzNmZiNTY4YWZh
NjAyNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCkBAIC0zMCw5ICszMCw5IEBACiAjZGVm
aW5lIEltYWdlRGF0YV9oCiAKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSA8cnVudGlt
ZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0FycmF5QnVmZmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5
QnVmZmVyLmlkbAppbmRleCAwZjcwYWY2NGRhMTdjZjMwZDAwZjRkYmFhZDVmMDliNjk1ZmY2NmY0
Li44MzYzMTM3YThhNjFkNjYxZmE5OWY0NDlhZTEwYmUwNzhhYjYxNWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsCkBAIC0yOCw3ICsyOCw3IEBACiAgICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEN1c3RvbUNvbnN0cnVjdG9yKHVuc2lnbmVk
IGxvbmcgbGVuZ3RoKSwKICAgICBKU05vU3RhdGljVGFibGVzLAotICAgIEltcGxlbWVudGF0aW9u
TmFtZXNwYWNlPVdURiwKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MsCiAgICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgQXJyYXlCdWZmZXIgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGJ5dGVMZW5ndGg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmlkbAppbmRleCAzZDZmYWUyYTQwZThi
NTM5OWRhMWU1N2E4YTQ0NjM1YTMwMjZlNDRjLi5mYzYxYTVlODI3ZjA4NmJkZTJkM2U5Y2VlMmY1
M2EwMzkwZjE3ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJh
eUJ1ZmZlclZpZXcuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVm
ZmVyVmlldy5pZGwKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBDdXN0b21Ub0pTT2JqZWN0LAog
ICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisg
ICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBBcnJheUJ1ZmZlclZp
ZXcgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBcnJheUJ1ZmZlciBidWZmZXI7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmlu
ZGV4IGNhYWUwYmEyNTY4ZTUwZTNmNmIwNmRkYjFjZDVmOWQ2MmUyOWRmZDMuLjg1MWMwMzRjZDcx
MDgwYWE0Y2I0NWNjNDNlNDVjMWQ1ZGQyNDE0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNjIsMTAg
KzYyLDExIEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNlbmRpZgogCisjaW5jbHVkZSA8
cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgorCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0RhdGFWaWV3LmgKaW5kZXggMDBkNTZkOGYxODdmOWY5NmU3ZmQwYjc0NThiN2QyNDg0MGJk
NTA0Mi4uMDBkZDZlNGNhMDg4ZDFlODk3NWM3NjllZmNkYTg3MTJhMWMwNDI5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIERh
dGFWaWV3X2gKICNkZWZpbmUgRGF0YVZpZXdfaAogCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Vmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGwKaW5kZXggYWMyNThkNTU1NjFjNWM1OWMwZmRm
M2U2NDM2MTlhYjM3NTJkNjFhZS4uODMzZDAxMTFhYWVhOTg3MjVhNjMwZTk4ZWEwYjBjNDQ5NjVj
ZDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCkBA
IC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29u
c3RhbnRzLAogICAgIFR5cGVkQXJyYXk9ZmxvYXQsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3Bh
Y2U9V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBGbG9h
dDMyQXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllU
RVNfUEVSX0VMRU1FTlQgPSA0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9GbG9hdDY0QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2
NEFycmF5LmlkbAppbmRleCBkZWU0NGY2YzQwYWE1MDJkYTcxZjc5MTIwOGQ2MmJkYmI1YmU1NGFm
Li5jOThjMDMyY2MwYmZmY2M4ZTU3ODEyMzQ4N2EyMTNmNjI2MzBiYTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDY0QXJyYXkuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAg
ICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRB
cnJheT1kb3VibGUsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisgICAgSW1wbGVt
ZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBGbG9hdDY0QXJyYXkgOiBBcnJheUJ1
ZmZlclZpZXcgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSA4
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRsCmluZGV4IDA1NzY0
NjBkYjYwMmRiZjQ2OGIxZmM0YjllNmQyN2E5MjZlOTIxYjQuLjQzM2YzNmY3MjlkYTYyYzUzZWM2
NzdlZGY5N2U4NzI4OTczMzYzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0ludDE2QXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2
QXJyYXkuaWRsCkBAIC0zMiw3ICszMiw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBE
b05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9c2hvcnQsCi0gICAgSW1wbGVtZW50
YXRpb25OYW1lc3BhY2U9V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGlu
dGVyZmFjZSBJbnQxNkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25l
ZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gMjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9JbnQzMkFycmF5LmlkbAppbmRleCBkODY3ZTY1ZGQyOWQwMGQ0MWU0YmE3YWI5NmZkNGQzMWE3
MmU3ZjBjLi41M2E3MGI3MjYxZGQ1MWY1NTZmMDViY2ZkNjE2ZTNkYzdhMzkxYzhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAog
ICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBl
ZEFycmF5PWludCwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1l
bnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEludDMyQXJyYXkgOiBBcnJheUJ1ZmZl
clZpZXcgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSA0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAppbmRleCA2Y2IyMGExNDZl
MzY5MjQwMTFkOWQ4NzRhY2ZjN2E1MDZlMzljM2I2Li41ZGIwMmFkMzI5ODkwNGEwNzU2ODRmZDMy
MTM4ZWFlYjQ5MWZlM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9J
bnQ4QXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5p
ZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hl
Y2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1zaWduZWQgY2hhciwKLSAgICBJbXBsZW1lbnRh
dGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50
ZXJmYWNlIEludDhBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQg
bG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1VpbnQxNkFycmF5LmlkbAppbmRleCA3MDhjZGIzMDE1YjczNmJmOTBlODE2NTM3NzNmMGZjMTlm
NzhkYzhmLi44MjkyYjNiOWQ0MjJjZTdmZWY1MGNkYzJjYmNjMmRjYjdjMWJmZjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBA
CiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5
cGVkQXJyYXk9dW5zaWduZWQgc2hvcnQsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RG
CisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBVaW50MTZBcnJh
eSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJf
RUxFTUVOVCA9IDI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Vp
bnQzMkFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5Lmlk
bAppbmRleCA2NDNjMDkyZGUzYWIxOGE5NTg2YjY3NThlNjQ0NmNjM2MzYWM5ODZjLi5iNWMwNTVk
NDMxMmQ5MzdkM2NiNjMzOTUxNWUyMzcxYjVhYzUyNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvVWludDMyQXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9K
U09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9dW5zaWdu
ZWQgaW50LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0
aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgVWludDMyQXJyYXkgOiBBcnJheUJ1ZmZlclZp
ZXcgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSA0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCmluZGV4IGRhZjNmODA1NzMw
MzBlMmY4NmYxYTQ1NzViMzI5NTg5Y2UwNDE3MWIuLjI0MTZhNDdkZjY0OGIzNzg3MjAxZTkzOGQ2
YzQ5MDkwYzZmYTJlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Vp
bnQ4QXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXku
aWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENo
ZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9dW5zaWduZWQgY2hhciwKLSAgICBJbXBsZW1l
bnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0g
aW50ZXJmYWNlIFVpbnQ4QXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewogICAgIGNvbnN0IHVuc2ln
bmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwKaW5kZXggYjE3ZjEzNTcyY2ViOTUwZjU1
NjdiZjgyY2MwNzdiZTRmZWJkMGY4Zi4uNWE5OTk1ZTgwODM0ODg2ZWNjNDNkNzMwNjllOWE4ZDA4
NjJmYTdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhDbGFt
cGVkQXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBl
ZEFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAg
RG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PXVuc2lnbmVkIGNoYXIsCi0gICAg
SW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9
SlNDCiBdIGludGVyZmFjZSBVaW50OENsYW1wZWRBcnJheSA6IFVpbnQ4QXJyYXkgewogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSAxOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAppbmRleCAwNTEyNDUwZDc2MmRjYWE0ZTEyOWJhOWI3
NjMxY2YzOWY5MjNhNmQwLi45NDY1YjY3NGFkODY4MDQ5ZTA1NDUzZGI4NGUxNzFmMzI0MjJjYWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKQEAgLTMwLDYgKzMw
LDExIEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIEFycmF5QnVmZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdMQnVmZmVyIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0
IHsKQEAgLTM5LDEzICs0NCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
R0xCdWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKIAogICAgIGJvb2wgYXNz
b2NpYXRlQnVmZmVyRGF0YShHQzNEc2l6ZWlwdHIgc2l6ZSk7Ci0gICAgYm9vbCBhc3NvY2lhdGVC
dWZmZXJEYXRhKEFycmF5QnVmZmVyKik7Ci0gICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEFy
cmF5QnVmZmVyVmlldyopOwotICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YShHQzNEaW50
cHRyIG9mZnNldCwgQXJyYXlCdWZmZXIqKTsKLSAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRh
dGEoR0MzRGludHB0ciBvZmZzZXQsIEFycmF5QnVmZmVyVmlldyopOworICAgIGJvb2wgYXNzb2Np
YXRlQnVmZmVyRGF0YShKU0M6OkFycmF5QnVmZmVyKik7CisgICAgYm9vbCBhc3NvY2lhdGVCdWZm
ZXJEYXRhKEpTQzo6QXJyYXlCdWZmZXJWaWV3Kik7CisgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJT
dWJEYXRhKEdDM0RpbnRwdHIgb2Zmc2V0LCBKU0M6OkFycmF5QnVmZmVyKik7CisgICAgYm9vbCBh
c3NvY2lhdGVCdWZmZXJTdWJEYXRhKEdDM0RpbnRwdHIgb2Zmc2V0LCBKU0M6OkFycmF5QnVmZmVy
VmlldyopOwogCiAgICAgR0MzRHNpemVpcHRyIGJ5dGVMZW5ndGgoKSBjb25zdDsKLSAgICBjb25z
dCBBcnJheUJ1ZmZlciogZWxlbWVudEFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbGVt
ZW50QXJyYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBKU0M6OkFycmF5QnVmZmVyKiBlbGVt
ZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBcnJheUJ1ZmZlci5nZXQo
KTsgfQogCiAgICAgLy8gR2V0cyB0aGUgY2FjaGVkIG1heCBpbmRleCBmb3IgdGhlIGdpdmVuIHR5
cGUuIFJldHVybnMgLTEgaWYKICAgICAvLyBub25lIGhhcyBiZWVuIHNldC4KQEAgLTY4LDcgKzcz
LDcgQEAgcHJpdmF0ZToKIAogICAgIEdDM0RlbnVtIG1fdGFyZ2V0OwogCi0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBtX2VsZW1lbnRBcnJheUJ1ZmZlcjsKKyAgICBSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4gbV9lbGVtZW50QXJyYXlCdWZmZXI7CiAgICAgR0MzRHNpemVpcHRyIG1fYnl0ZUxlbmd0
aDsKIAogICAgIC8vIE9wdGltaXphdGlvbiBmb3IgaW5kZXggdmFsaWRhdGlvbi4gRm9yIGVhY2gg
dHlwZSBvZiBpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5j
cHAKaW5kZXggZjcxNjZjNDE5MzJkYzM0NzZkOGI1YzJlMTFhM2VjNDJlNDQyNWIxZC4uOGUyN2Qz
YjlhMTEyMGE3NmY3YzMwYWMwMWUxYjgwNGJkMDY2MjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbmNsdWRl
ICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1
ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFy
cmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvVWludDMy
QXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
RmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9VaW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmgKaW5kZXggN2Y5YjA0MjY2YTBlYTY2Nzg1YjBiYzkxYjYwZmJhOGUxYmY0NDVl
NC4uMDgyNjEyYWM5ZTFjODcyODEwYTg5NjEyODY5YTU1NTdlNzk1ZmFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKQEAgLTMzLDEyICszMywxMiBAQAogI2lu
Y2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCiAj
aW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgotI2luY2x1ZGUgPHd0Zi9GbG9h
dDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9VaW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJh
eS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IDhmZjA5MWJjOTJhMmI0ZGJkNTQ2NDI1ZDI5M2Y5MTgxODYwODRjZDgu
LmQxZTIxMjE3N2FkMDc4NDNjNDNiMzJkZDU3NjE3M2Y5Nzk0Y2RhY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NzQsOSArNzQsOSBAQAogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdM
VW5pZm9ybUxvY2F0aW9uLmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXgg
OTcyM2NhNzc2YjA4NDg5YTlkZDY0MGEzNjViNGFjYzZjYWZlZDQ4Yy4uOGI1Y2I2OWNhOTYwZWZl
MDMwNzVmMTljZjY3NTY0MGZhZDAyZjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTM0LDggKzM0LDggQEAKICNpbmNs
dWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgogCi0jaW5jbHVkZSA8d3Rm
L0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAKaW5kZXggODhmM2Q2MGUxNjc2ZTIzMTdjZjEzN2FkYTlkMjQ2ZDZlZWFlN2JmNy4u
MWRjM2UxMmVjYTQ3MGZlNjRiMTU0MDI4ZGRhODhmNzZkYzAxNTVlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC01MCw3ICs1
MCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0R0NFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2Zp
bGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbkNvcHlpbmdTb3J0Lmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Dcnlw
dG8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCmluZGV4IGFlNDE2ZWUxNzc3
ZWU4NjM5YmZhZmUwOGNiNDc0NmM1N2JmZjM1Y2EuLmYwZTRiNWRhOGJjZjI4ODlmZTEzODJhNjcy
NDFjMGMyNjQxYjYxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
IAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGVJ
bmxpbmVzLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCmlu
ZGV4IDE3MjVhZjg2ZWIyMWE0ODE2NGQ3MGQ4YWZlMmJhYjYxZmNjMzAyMzAuLjg2NTUyYmM2MTA1
YmVjYWE2Y2MyNmI1YzVjOGM3NjIzYzQ3NWEyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaApAQCAtMzQs
NiArMzQsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXJWaWV3Owor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBA
IC00Miw3ICs0Niw3IEBAIGNsYXNzIENyeXB0byA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBSZWZDb3VudGVkPENyeXB0bz4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENyeXB0bz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0bygpKTsgfQogCi0g
ICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMoQXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgZ2V0UmFuZG9tVmFsdWVzKEpTQzo6QXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0
aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIENyeXB0bygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDVh
MjQ4ZDBhNWM3MzEyZWVlMWJjNzFiNDI3ZjRmODViMDA0NmRlNjguLjYxMTA1NmRkNzk3MzY0Yzdi
MTY0MjIyNGJkZjc1YmJjMGVhODdkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRE5FT04uaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
Lmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25B
cnJheVB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAppbmRleCA4NzFkN2MwNTU1MGU5ODU5ZDBjMWFmYTc2MzQ4YjE1MDU1NjcxOGI0Li5k
YzhjNjQzN2FkODMzMjEwYWQxMWQ1YTI1OWU0MDRlYWZjZGEwOGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTM5LDExICszOSwxMSBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlckRhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBl
ZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5k
ZXggNTNkMTJhYzM5YWViNzIxZTFhNzhmMjY3NzM1OGNhOTVmYWJhZmM5NS4uNjAxY2YwMzNkY2U0
YzY5YmNhOTRjZTBhNjYzNTE2YjA4YzU3MGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC00NywxMCArNDcsMTAgQEAKICNpbXBvcnQgIldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIgog
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjaW1wb3J0IDxydW50aW1lL1VpbnQxNkFycmF5Lmg+CisjaW1wb3J0IDxydW50aW1lL1Vp
bnQzMkFycmF5Lmg+CisjaW1wb3J0IDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbXBvcnQgPHd0
Zi9DdXJyZW50VGltZS5oPgotI2ltcG9ydCA8d3RmL1VpbnQxNkFycmF5Lmg+Ci0jaW1wb3J0IDx3
dGYvVWludDMyQXJyYXkuaD4KLSNpbXBvcnQgPHd0Zi9VaW50OEFycmF5Lmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24u
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyRGF0YUNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckRhdGFDRy5oCmluZGV4IDhlNjFlZGZmOWM4NmNmY2ZhNDFhYjczMzE4ZDk2OTkzZGFj
MjE5ZDIuLjc5M2ViN2JjODlhMGMzYjg4YTNhYmRjOWZiNzgxMDhkODgxNDIyMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBVU0UoQ0EpICYmIChQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MCkpCiAjZGVmaW5lIFdURl9VU0VfSU9TVVJGQUNF
X0NBTlZBU19CQUNLSU5HX1NUT1JFIDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IGJmNTI3ZmY1M2I2MzE2N2MyYjg1
YTE1ZWY0M2QyNDBlNjY3NDZmNmEuLjgxNDUzOTBiODE0M2Y4N2Q3OTIzMjcyZGNlOGU2NmRlYjVh
MWIwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUJsZW5kLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVB
c1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWludDhD
bGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAK
IHR5cGVkZWYgdW5zaWduZWQgY2hhciAoKkJsZW5kVHlwZSkodW5zaWduZWQgY2hhciBjb2xvckEs
IHVuc2lnbmVkIGNoYXIgY29sb3JCLCB1bnNpZ25lZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hh
ciBhbHBoYUIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAppbmRleCBiZGY1NTUyYWUxODk4MTA0M2Y1
MjYyYjg0YjkyMGMyMjcxY2ZjMmZhLi40ZDUyZjhmNTdjNzhhNjcyMmZjNGZhNjQxZjZmYzZkYjZi
ZWI3NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRl
ICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCisjaW5jbHVk
ZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKaW5kZXggMjI5NDQyNmRlZjlj
ZTE1YTY0MTM1OTIwZjY2M2YxYWE0Y2VlMmQyZC4uZTQ5NGIwOGJkMWYwNjZjZjAyZDk5MTAyNzU2
ZTEwNzljMjViZjlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCkBAIC0zMSw5
ICszMSw5IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRT
dHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNp
bmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwCmluZGV4IDI3ZTczYWE5Y2Y1NzUxMGU0MzJiNDQ4NTk3YWU0ZmI5MWM2
MTkzYTAuLjA2MjkxZTc5YjI3YTM4NzM0NDc0ZmNkMTMxNGVmYmQxYTVhZTdjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5o
IgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRB
cnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAppbmRleCBmYWQ5MmM5NWEx
ZjUwZTQwY2YxNTMwNzg2Y2JjZWY2NTVkOGJkNzRhLi43Mzk2OGQ4OGI5ZjZjNmJmYzg4ZTNlYjcy
NjQ3ODRiYWNjMmE4OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKQEAgLTMwLDggKzMw
LDggQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9QYXJhbGxlbEpvYnMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IGMyMmY1
MGVmOTAxMDljMjgwYWJjZGZiYTQ2NzRhODg0OGY3NzQ3Y2QuLmM0MzA2YzBmYTE0YTgyNDQzYTM5
NDJkODVjMzdiYWIwMmZmMzBjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC00MSw3ICs0
MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuY3BwCmluZGV4IDAyNWZmNjVhYzNhODZjMzcyOWNkN2UwNWVjMzQx
OTBiYjA4N2JiYTUuLjhlYjU2NDBlMjhiYzZlYWIyZTViYjFhYThkOWIyZTY1YWZhNTE2MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUg
PHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVk
QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXgg
YzFlZmEyYWRlYWY2NTAyZjY2ODEwMTA2MWFmOGU1NTY5ZDIzNGRjOC4uMDk3N2RkMmVmNzVlYmI2
YjQ2OWY5YzRkMjQyZDAyYjA1OWQzOWQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtMjksOCAr
MjksOCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTaGFkb3dC
bHVyLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhD
bGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0
Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwCmluZGV4IDQ0NmUyNWExMGM1ZTYzNDc1YTVlNDBhNDc0ZWRkZTRhMjNiNmM4
NGUuLjYxYmEzMDJhNGFjZWQ4MTdlOTQzODk2NTU4YmI1M2M4YzhlYjJjOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwCkBAIC0zMyw5ICszMyw5IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4
dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhD
bGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9QYXJhbGxlbEpvYnMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAppbmRleCBiNDBiYjEzMDkwYWJmMzEyNzY0
ODkxMzc2OTY3Nzg2M2ViMGRlYjhlLi5lYjc5YmJkYmNiNTRiMDVjMzhhMTk4NDJiMDUwNzU3NDcw
MjQwODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkxpZ2h0U291
cmNlLmgiCiAjaW5jbHVkZSAiUG9pbnRMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlNwb3RMaWdo
dFNvdXJjZS5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogLy8gQ29tbW9uIGJhc2UgY2xhc3MgZm9y
IEZFRGlmZnVzZUxpZ2h0aW5nIGFuZCBGRVNwZWN1bGFyTGlnaHRpbmcKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
Y3BwCmluZGV4IDllNzIwZjc0YWNlYjk3ODk3MWY0MmYxZTk1MTUzNzM4ZDJmNWNkMjguLjZiMDI4
ZWUzOTM3NjkyOWRkZWViN2YzNGFjMTQyNzgyNmZkMmU2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAK
QEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVk
ZSAiVGV4dFN0cmVhbS5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFt
cGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIHN0ZDo6bWluOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwCmluZGV4IDE3Njg4NzQ2ZjZmOWU0NDYyNzFhNDFmY2IxZTI1MTExZWFk
MWM1YTUuLmM0YmQ5Nzk1ZDZjZWQ4MzNkNGU3ZmI2OWZlM2IxYzVhYzk3NGZmNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENs
YW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1BhcmFsbGVsSm9icy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA1ZGQwNjVkOThkYTdj
NzlmNWM5YjdiMTc5OGZkMDAxMTdiM2E3Y2I1Li5mMWI0NWQ2OTcxMTMyYmM4ZGVkNDQ5ZDEwOGUx
YjVlNGE2MGJkNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5j
bHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogCiAjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5T
SUNTKQogI2luY2x1ZGUgPGFybV9uZW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAyOTY0NjFmOWYx
OTc0Yjg4OWMyM2ZkODIzNmFmODY3YWQ1MmVjYWNlLi5jZGM3YTUwMTJlZjc4Y2ZhYzFiNWVkYmQx
NWExOGM5ODI4NWNiOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTI3LDEwICsyNywxMSBAQAogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKIAorI2luY2x1ZGUgPHJ1
bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KKwogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiAjaWYgRU5BQkxFKE9QRU5DTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQppbmRleCAyNjEz
YWFhYTg2NDJlOTg1YTZiOTM3NmNjMjQ0Njk1OTA3ODQ3MDMxLi5jMmM0M2U5NDYwMTgxNzJjM2Jm
Njk0Y2U2Mzk2NmVkYWNmNDk4OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCkBAIC00Mywx
MSArNDMsMTEgQEAKICNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4KICNpbmNsdWRlICJXZWJHTExheWVy
LmgiCiAjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIu
aD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMy
QXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1Vp
bnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXku
aD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
VWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAKaW5kZXggOWQ0NmE0YzNkZTBhMDgzZTE4ODkwMWFiNWUyNmEwNDQwZTdlZTA0OS4uNjkwMmI2
MTM1ZWZiMWE1ZjZlMDU4ZDAzOTNmZGIzY2FjODc3OWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC00NCwxMyArNDQsMTMgQEAKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDxj
c3RyaW5nPgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8
d3RmL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0
MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL093bkFycmF5UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBVU0UoT1BFTkdMX0VTXzIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAyNWJhNDQ5OGViNmRiYmYzODdhMzliMDczODBiM2Rj
YTVkYWM1YWY1Li5kMDI0OWVkYWRkMmNiODRjZmRkYzEzYTE2NTE4NzczMjU0MDQ3MDk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFj
ZWhvbGRlci5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVm
ZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
QXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IDA5ZTdmZTU4MjUyZjkxOWI4NjcwZGUxZDhhZmRhZTE5ZmI2NzNjZmYuLjRiYzA1
OTZlNzhjZTAwMWM5NmU5NDA3YWMwNzAyOTJkNDU1MWJhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtNTgsMTAgKzU4LDEwIEBACiAjaW5jbHVkZSAiWE1MSHR0cFJl
cXVlc3RVcGxvYWQuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9u
Zy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9PcGVyYXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0j
aW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAx
Y2Q3NmJjZGQ0OTA1MmI4ODA1OGQ4YWUzZjAzYWM1YTM2YTkzNmRhLi42YWZmZjM3ZWE2Y2I0ZDA1
MTAwMWNhZmNmOWFiMmFlZDA1MmE5YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aApAQCAtMzUsNiArMzUsMTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNo
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIEFycmF5QnVmZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC05MSw4ICs5Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
c2VuZChCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChET01Gb3JtRGF0YSos
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXIqLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCBzZW5kKEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCBhYm9ydCgpOwogICAgIHZvaWQgc2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG92
ZXJyaWRlTWltZVR5cGUoY29uc3QgU3RyaW5nJiBvdmVycmlkZSk7CkBAIC0xMjAsOCArMTI1LDgg
QEAgcHVibGljOgogICAgIFJlc3BvbnNlVHlwZUNvZGUgcmVzcG9uc2VUeXBlQ29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2VUeXBlQ29kZTsgfQogICAgIAogICAgIC8vIHJlc3BvbnNlIGF0
dHJpYnV0ZSBoYXMgY3VzdG9tIGdldHRlci4KLSAgICBBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJh
eUJ1ZmZlcihFeGNlcHRpb25Db2RlJik7Ci0gICAgQXJyYXlCdWZmZXIqIG9wdGlvbmFsUmVzcG9u
c2VBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VBcnJheUJ1ZmZlci5nZXQo
KTsgfQorICAgIEpTQzo6QXJyYXlCdWZmZXIqIHJlc3BvbnNlQXJyYXlCdWZmZXIoRXhjZXB0aW9u
Q29kZSYpOworICAgIEpTQzo6QXJyYXlCdWZmZXIqIG9wdGlvbmFsUmVzcG9uc2VBcnJheUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VBcnJheUJ1ZmZlci5nZXQoKTsgfQogCiAgICAg
dm9pZCBzZXRMYXN0U2VuZExpbmVOdW1iZXIodW5zaWduZWQgbGluZU51bWJlcikgeyBtX2xhc3RT
ZW5kTGluZU51bWJlciA9IGxpbmVOdW1iZXI7IH0KICAgICB2b2lkIHNldExhc3RTZW5kVVJMKGNv
bnN0IFN0cmluZyYgdXJsKSB7IG1fbGFzdFNlbmRVUkwgPSB1cmw7IH0KQEAgLTIyMiw3ICsyMjcs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9j
dW1lbnQ7CiAgICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXI7Ci0gICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fcmVzcG9uc2VBcnJheUJ1
ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX3Jlc3BvbnNlQXJy
YXlCdWZmZXI7CiAKICAgICBib29sIG1fZXJyb3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208138</attachid>
            <date>2013-08-05 12:20:19 -0700</date>
            <delta_ts>2013-08-05 12:47:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119489-20130805122020.patch</filename>
            <type>text/plain</type>
            <size>276983</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTJkNjNhZGQ3NjI5YjQyNjhjOTkzNGEwM2YzZGNjYjdlYzRlNzUzLi5hZWRlMzc1NmZmOWQ2YmJh
YmNiYWY2ODBkNmI4ZWRjOTUwOTViYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQyBpbiBhZHZhbmNlIG9mIHJlLWltcGxlbWVudGF0aW9u
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEpTQ1R5cGVkQXJy
YXlTdHVicy5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Ojp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjphZGRWaWV3KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmguCisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpkYXRhKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM6OmNvcHlUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjppc05ldXRlcmVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6On5BcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZSk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpzbGljZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp+
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaC4KKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJhc2VBZGRyZXNz
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXROZXV0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojppc05ldXRlcmFibGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeVN1YlJhbmdlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojpz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6CisgICAgICAg
ICogcnVudGltZS9GbG9hdDMyQXJyYXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0Zs
b2F0MzJBcnJheS5oLgorICAgICAgICAoSlNDOjpGbG9hdDMyQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OkZsb2F0MzJBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OkZsb2F0MzJBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpGbG9hdDMyQXJyYXkpOgorICAgICAg
ICAoSlNDOjpGbG9hdDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0Zsb2F0
NjRBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmguCisg
ICAgICAgIChKU0M6OkZsb2F0NjRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFycmF5OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheSk6CisgICAgICAgIChKU0M6OkZsb2F0NjRB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSW50MTZBcnJheS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oLgorICAgICAgICAoSlNDOjpJbnQxNkFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkludDE2QXJyYXk6OkludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpJbnQxNkFycmF5OjpzdWJh
cnJheSk6CisgICAgICAgICogcnVudGltZS9JbnQzMkFycmF5Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9JbnQzMkFycmF5LmguCisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OmdldFR5
cGUpOgorICAgICAgICAoSlNDOjpJbnQzMkFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJ
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50MzJBcnJh
eTo6SW50MzJBcnJheSk6CisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OnN1YmFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL0ludDhBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYv
SW50OEFycmF5LmguCisgICAgICAgIChKU0M6OkludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAg
IChKU0M6OkludDhBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpJbnQ4QXJyYXkpOgor
ICAgICAgICAoSlNDOjpJbnQ4QXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTo6SW50ZWdyYWxU
eXBlZEFycmF5QmFzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QmFzZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6
VHlwZWRBcnJheUJhc2U6OmRhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c2V0
KToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OnNldFJhbmdlKToKKyAgICAgICAgKEpT
Qzo6VHlwZWRBcnJheUJhc2U6Onplcm9SYW5nZSk6CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlC
YXNlOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlCYXNlOjppdGVtKToKKyAgICAgICAgKEpTQzo6VHlw
ZWRBcnJheUJhc2U6OmNoZWNrSW5ib3VuZERhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5
QmFzZTo6VHlwZWRBcnJheUJhc2UpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c3ViYXJyYXlJbXBsKToKKyAgICAgICAg
KEpTQzo6VHlwZWRBcnJheUJhc2U6Om5ldXRlcik6CisgICAgICAgICogcnVudGltZS9VaW50MTZB
cnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaC4KKyAgICAg
ICAgKEpTQzo6VWludDE2QXJyYXk6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJheTo6VWludDE2QXJyYXkpOgorICAgICAgICAo
SlNDOjpVaW50MTZBcnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDMyQXJy
YXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQzMkFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6OlVpbnQzMkFycmF5KToKKyAgICAgICAgKEpT
Qzo6VWludDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL1VpbnQ4QXJyYXku
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaC4KKyAgICAgICAgKEpT
Qzo6VWludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpVaW50OEFycmF5OjpVaW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6VWludDhB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6Onpl
cm9GaWxsKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheSk6CisgICAgICAgIChK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDEzLTA4LTAyICBDaHJpcyBDdXJ0aXMgIDxjaHJpc19jdXJ0aXNAYXBwbGUuY29tPgog
CiAgICAgICAgIEdpdmUgdGhlIGVycm9yIG9iamVjdCdzIHN0YWNrIHByb3BlcnR5IGFjY2Vzc29y
IGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGJmODMyMDM2MTFkYzM4ZWYwMzFkNGQwMWQwM2NjYTEzNzNlZTQw
YWYuLmVkYTAyMWI3N2MxODU3NDIwMzFmNDVlMGQ4ZjAwNGY4MDdmZDdiMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBUeXBlZEFycmF5
IGltcGxlbWVudGF0aW9uIGZyb20gV1RGCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0
Zi9Gb3J3YXJkLmg6CisKIDIwMTMtMDgtMDIgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBhIGJ1bmNoIG9mIHJlZHVuZGFudCBjaGVja3Mg
Zm9yIGVtcHR5IHN0cmluZyBpbiBTdHJpbmdJbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5NmYzMzc4YWE5
YzI3ZDJjNzI3MjVjYTY0YzU3MDcwNDM0NmQwNy4uMTI2Yzk3Y2I3YTA5YzhkZWE0MTg1ZjljOGNi
MzhmNjI5YWU3NmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxMy0wOC0wNSAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYkNvcmUgZm9yIG5ldyBsb2NhdGlvbiBvZiBUeXBl
ZEFycmF5IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9BcnJheUJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0Zsb2F0NjRBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0ludDE2QXJyYXkuaDogQWRkZWQuCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9JbnQzMkFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50OEFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IEFkZGVk
LgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDE2QXJyYXkuaDogQWRk
ZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaDog
QWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENsYW1wZWRB
cnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5o
OgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRGbG9hdEZyZXF1ZW5jeURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEJ5dGVUaW1lRG9tYWluRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9EYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyUHJvY2Vzc29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmg6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1
ZmZlclZpZXdIZWxwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRmlsZVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRy
YW5zZmVyQXJyYXlCdWZmZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEFkZEluY2x1ZGVzRm9yVHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZl
bnQuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyU3luYy5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5o
OgorICAgICAgICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAqIGZp
bGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXIuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FycmF5QnVmZmVyVmll
dy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9EYXRhVmlldy5oOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0Zsb2F0MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQ4QXJy
YXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWlu
dDhBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTEJ1ZmZlcjo6ZWxlbWVudEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0NyeXB0by5j
cHA6CisgICAgICAgICogcGFnZS9DcnlwdG8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b3B0
aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKToKKwogMjAxMy0wOC0wMyAgWW9hdiBXZWlzcyAgPHlv
YXZAeW9hdi53cz4KIAogICAgICAgICBQcmVsb2FkU2Nhbm5lciBwcmVsb2FkcyBleHRlcm5hbCBD
U1Mgd2l0aCBub24tbWF0Y2hpbmcgbWVkaWEgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggYTgzYmQxYmM3YWE3YzVmYjRkY2M4Zjk2YjRlMDdiYzdjZDdlOTEw
ZS4uODVkMTdlZDdhNzZiY2I4NDQxMWI0M2ZmYzYwMTQyN2Q0OTJiNGI3OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjY0LDYgKzI2NCw4IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCiAgICAgcHJvZmlsZXIv
TGVnYWN5UHJvZmlsZXIuY3BwCiAKKyAgICBydW50aW1lL0FycmF5QnVmZmVyLmNwcAorICAgIHJ1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogICAgIHJ1bnRpbWUvQXJnTGlzdC5jcHAKICAgICBy
dW50aW1lL0FyZ3VtZW50cy5jcHAKICAgICBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDBmOWVlY2I1ZGNl
ZjVlMDY2OTZkZDJmZGE1Mjc0Yzc4NDkxODcxZWQuLjIwYjMwZGI4YjJiMjNiMzBmN2FhY2YyNWFi
ZGM0ODI4ZmFmODBhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zMiw3ICszMiw3IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAKIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAotICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJU2hpbXMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaCBcCkBAIC02NDMsNiArNjQzLDEwIEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29udmVudGlvbnMuaCBcCkBAIC03MDQsNiArNzA4LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmxvYXQ2NEFycmF5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIFwKQEAgLTcyMiw2ICs3MjgsMTAgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
ZXhpbmdUeXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXku
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCkBAIC04ODEsOCAr
ODkxLDEzIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHJh
Y2luZy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5RGVzY3JpcHRvci5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZBcnJheS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJhY3Rpb24uaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VaW50OENsYW1wZWRBcnJheS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTVN0YWNrQm91bmRzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNo
ZG9nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKaW5kZXggZDdhYzFlZjcy
ZWNhYzZhMmU2ZGM3MjgzYTc4MWU1YWJlNTViZjcyMS4uMzkzZTEyMWIyYmZmNzAwOGQ4N2IyMzA5
YzdkZTkzZTcxYjhmNjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5
cGVkQXJyYXlTdHVicy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5
U3R1YnMuaApAQCAtMjYsMTkgKzI2LDIwIEBACiAjaWZuZGVmIEpTQ1R5cGVkQXJyYXlTdHVic19o
CiAjZGVmaW5lIEpTQ1R5cGVkQXJyYXlTdHVic19oCiAKKyNpbmNsdWRlICJGbG9hdDMyQXJyYXku
aCIKKyNpbmNsdWRlICJGbG9hdDY0QXJyYXkuaCIKKyNpbmNsdWRlICJJbnQxNkFycmF5LmgiCisj
aW5jbHVkZSAiSW50MzJBcnJheS5oIgorI2luY2x1ZGUgIkludDhBcnJheS5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNp
bmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+CisjaW5jbHVkZSAiVWludDE2QXJyYXkuaCIKKyNp
bmNsdWRlICJVaW50MzJBcnJheS5oIgorI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRl
ICJVaW50OENsYW1wZWRBcnJheS5oIgorCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvSW50MTZBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5j
bHVkZSA8d3RmL0ludDhBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MTZBcnJheS5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+Ci0j
aW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYmVmMTRlYTQzYzZl
OThiZjdiNmE5Mzk4MGM0OGM3YzQzMDVjN2M1OS4uMDFkYTVkZjljOGUyYjlhOWVmMjM1MDYzNDkz
OTVlMWVmNjc1ZTA4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBA
IC00MTAsNiArNDEwLDggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHByb2ZpbGVyXFBy
b2ZpbGVyT1NSRXhpdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccHJvZmls
ZXJcUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccHJvZmlsZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlclZpZXcuY3BwIiAvPg0KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJnTGlzdC5jcHAiIC8+DQogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcmd1bWVudHMuY3BwIiAvPg0KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlDb25zdHJ1Y3Rvci5jcHAiIC8+DQpAQCAtNzcw
LDYgKzc3Miw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxl
ck9TUkV4aXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9m
aWxlck9TUkV4aXRTaXRlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccHJvZmls
ZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlCdWZmZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQXJnTGlzdC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcQXJndW1lbnRzLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxBcnJheUNvbnN0cnVjdG9yLmgiIC8+DQpAQCAtODA1LDYgKzgwOSw4IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4Y2VwdGlvbkhlbHBlcnMuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4ZWN1dGFibGUuaCIgLz4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4ZWN1dGlvbkhhcm5lc3MuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZsb2F0MzJBcnJheS5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRmxvYXQ2NEFycmF5LmgiIC8+DQogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkNvbnN0cnVjdG9yLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3RvdHlwZS5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR0NBY3Rpdml0eUNhbGxiYWNr
LmgiIC8+DQpAQCAtODE0LDYgKzgyMCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEluZGV4aW5nSGVhZGVySW5saW5lcy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbml0aWFsaXplVGhyZWFkaW5nLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJbnQxNkFycmF5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxJbnQzMkFycmF5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbnQ4QXJyYXkuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5oIiAvPg0KQEAgLTkwMiw3ICs5MTEsMTAg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFRyYWNpbmcuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVkQXJyYXlEZXNjcmlwdG9yLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MTZBcnJheS5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDE2V2l0aEZyYWN0aW9uLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MzJBcnJheS5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDhBcnJheS5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdhdGNoZG9nLmgiIC8+DQogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXZWFrR0NNYXAuaCIgLz4NCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZjg2ZDJlNzRiYzFjYThjOGIx
MGQ1NGQzM2JjY2M4YjViMmZiYTI0Yi4uYTdjYmZiMjBkOWJjYzZjN2QxNjYxMjk2YjQyNzllNGQ5
MDMyMDBmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwpAQCAtNDQ0LDYgKzQ0NCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cHJvZmlsZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAiPg0KICAgICAgIDxGaWx0ZXI+
cHJvZmlsZXI8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEFyZ0xpc3QuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAg
ICAgPC9DbENvbXBpbGU+DQpAQCAtMTQ2MCw2ICsxNDY2LDM2IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmgiPg0KICAgICAg
IDxGaWx0ZXI+cHJvZmlsZXI8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVy
Pnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5oIj4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEZsb2F0MzJBcnJheS5oIj4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZsb2F0NjRB
cnJheS5oIj4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludDE2QXJyYXkuaCI+DQorICAg
ICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQzMkFycmF5LmgiPg0KKyAgICAgIDxGaWx0ZXI+d3Rm
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSW50OEFycmF5LmgiPg0KKyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDE2
QXJyYXkuaCI+DQorICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MzJBcnJheS5oIj4NCisg
ICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFVpbnQ4QXJyYXkuaCI+DQorICAgICAgPEZpbHRlcj53
dGY8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxBcmdMaXN0LmgiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0K
ICAgICA8L0NsSW5jbHVkZT4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViOTk2
M2M5MWFkNDY3MThlODgyNGU4Y2NiYjNkNjAyNjdmNTY0ZjUuLjk0MzY2MDU1YzQwNTU4ZmM1Y2U3
N2E4ZmJjYWRkMTMxYWNkNGUzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
MTQsNiArODE0LDIxIEBACiAJCUE3QTRBRTBEMTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic01J
UFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTRB
RTA5MTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic01JUFMuaCAqLzsgfTsKIAkJQTdBNEFFMEYx
Nzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzU0g0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwQjE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1
YnNTSDQuaCAqLzsgfTsKIAkJQTdBNEFFMTAxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzWDg2
Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0E0QUUwQzE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1YnNYODZDb21tb24uaCAqLzsgfTsKKwkJ
QTdBOEFGMzQxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI1MTdBREI1RjIwMDVBQjE3
NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi87IH07CisJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAv
KiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGMzYxN0FEQjVG
MzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCAqLzsgfTsKKwkJQTdBOEFGMzcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5
QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdBOEFGMjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjM4MTdBREI1
RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
N0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQg
LyogRmxvYXQ2NEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkIxN0FEQjVG
MzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYy
QzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJ
bnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0E4QUYyRDE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNEMTdBREI1RjMwMDVB
QjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyRTE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdy
YWxUeXBlZEFycmF5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE3QThBRjNFMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5QmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkYx
N0FEQjVGMzAwNUFCMTc0IC8qIFR5cGVkQXJyYXlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGM0YxN0FEQjVGMzAwNUFCMTc0IC8q
IFVpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGNDAxN0FEQjVGMzAw
NUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFt
cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjMyMTdBREI1RjMwMDVB
QjE3NCAvKiBVaW50MTZBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUE3QThBRjQyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMzMx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdCNDhGNDkwRUU4OTM2RjAwRENCREI2IC8qIEV4
ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwICovOyB9OwogCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNy
b3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjRB
Q0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJB
MyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29kZUJs
b2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTE5MDEsNiArMTkxNiwyMSBAQAogCQlBN0E0QUUwQzE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1
YnNYODZDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YnNY
ODZDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdBN0VFNzQxMUI5OEI4
RDAwNjVBMTRGIC8qIEFTVEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVNUQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0E3RUU3NzEx
Qjk4QjhEMDA2NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTeW50YXhDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5
QnVmZmVyVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI4MTdB
REI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXJyYXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQ2NEFycmF5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50OEFycmF5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQx
NkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDE2QXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkQxN0FEQjVGMzAwNUFCMTc0IC8q
IEludDMyQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50MzJBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyRTE3QURCNUYzMDA1QUIx
NzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5QmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYzMDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50OEFycmF5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50
OENsYW1wZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50OENs
YW1wZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYzMjE3QURC
NUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVWludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFG
MzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVpbnQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RXhlY3V0YWJsZUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4cG9ydE1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjIwNyw5ICsyMjM3LDkgQEAKIAkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhC
IC8qIFByb2R1Y3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
ICovLAogCQkJCTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgKi8sCiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKLQkJCQkw
RkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAog
CQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJG
MEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJC
MTAxRCAvKiB0ZXN0UmVnRXhwICovLApAQCAtMjc5NSwxMiArMjgyNSwxNCBAQAogCQk3RUY2RTBC
QjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNjU1M0EzMkYxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNs
b3dQYXRoc0V4Y2VwdGlvbnMuY3BwICovLAotCQkJCTY1NTNBMzMwMTdBMUYxRUUwMDhDRjZGMyAv
KiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAw
QjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAv
KiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50
cy5jcHAgKi8sCiAJCQkJQkMyNTdERTYwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5oICov
LAorCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCisJ
CQkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggKi8sCisJCQkJQTdB
OEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8sCisJCQkJQTdB
OEFGMjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovLAogCQkJCUJDNzk1
MjA2MEUxNUU4QTgwMEE4OThBQiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzc5
NTIwNzBFMTVFOEE4MDBBODk4QUIgLyogQXJyYXlDb25zdHJ1Y3Rvci5oICovLAogCQkJCTBGQjdG
Mzg5MTVFRDhFMzgwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25zLmggKi8sCkBAIC0yODI5LDYg
KzI4NjEsOCBAQAogCQkJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlm
aWVycy5oICovLAogCQkJCUE3MDlGMkYxMTdBMEFDMkEwMDUxMkU5OCAvKiBDb21tb25TbG93UGF0
aHMuY3BwICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0
aHMuaCAqLywKKwkJCQk2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhz
RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJNjU1M0EzMzAxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1v
blNsb3dQYXRoc0V4Y2VwdGlvbnMuaCAqLywKIAkJCQlBN0U1QTNBNTE3OTc0MzJEMDBFODkzQzAg
LyogQ29tcGlsYXRpb25SZXN1bHQuY3BwICovLAogCQkJCUE3RTVBM0E2MTc5NzQzMkQwMEU4OTND
MCAvKiBDb21waWxhdGlvblJlc3VsdC5oICovLAogCQkJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4
MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKQEAgLTI4NjAsNiArMjg5NCw4IEBACiAJCQkJODZDQTAz
MkQxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuY3BwICovLAogCQkJCTg2Q0FGRUUyMTAz
NURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi8sCiAJCQkJMEYyMUMyN0ExNEJFNzI3MzAw
QURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKKwkJCQlBN0E4QUYyOTE3QURCNUYzMDA1
QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0
IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIg
LyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTBGQjRCNTIxMTZCNjI3OEQwMDNGNjk2
QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAqLywKQEAgLTI4NzgsNiArMjkxNCwxMCBA
QAogCQkJCTBGQjdGMzhGMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCAqLywKIAkJ
CQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8s
CiAJCQkJRTE3ODYzM0YwRDlCRUMwMDAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCAq
LywKKwkJCQlBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAorCQkJ
CUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFG
MkIxN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovLAorCQkJCUE3QThBRjJFMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8sCiAJCQkJQTc4ODUzRjcx
Nzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCUE3
ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8sCiAJ
CQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVuY3Rpb24uY3BwICovLApA
QCAtMzAzNSw4ICszMDc1LDEzIEBACiAJCQkJMTRBMzk2QTYwQ0QyOTMzMTAwQjVCNEZGIC8qIFN5
bWJvbFRhYmxlLmggKi8sCiAJCQkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcu
ZCAqLywKIAkJCQk1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovLAorCQkJ
CUE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5QmFzZS5oICovLAogCQkJCTBG
RUIzRUNCMTYyMzdGNDcwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVzY3JpcHRvci5oICovLAorCQkJ
CUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovLAogCQkJCTg2Njcz
OUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLywKKwkJCQlBN0E4
QUYzMzE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYzMDE3
QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICovLAorCQkJCUE3QThBRjMxMTdBREI1RjMw
MDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJCUUxOEUzQTU3MERGOTI3OEMw
MEQ5MEIzNCAvKiBWTS5jcHAgKi8sCiAJCQkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZN
LmggKi8sCiAJCQkJRkU2NjE3MjcxNzc0RTAzNTAwNDk1QjAwIC8qIFZNU3RhY2tCb3VuZHMuaCAq
LywKQEAgLTM0ODEsNiArMzUyNiw4IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8q
IEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAz
NTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlD
MUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBN0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTUxNUVEOEU0NjAwRjE2N0IyIC8qIEFy
cmF5Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZB
NTk3QyAvKiBBcnJheVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzUxOSw2ICszNTY2LDcg
QEAKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21tb25JZGVudGlmaWVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU1M0EzMzIxN0ExRjFFRTAwOENGNkYzIC8q
IENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTM5
MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdFNUEzQTgxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tcGxldGlvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNjc1LDYgKzM3MjMsOCBAQAogCQkJCTBGMjFDMjdDMTRCRTcyNzYw
MEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4
NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4
M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkRCMkNDOTE3M0RBNTIwMDA3QjNDMUIgLyogRlRMQWJicmV2
aWF0ZWRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMDgxNzA1MTNEQjAwQkI3MjJD
IC8qIEZUTEFiYnJldmlhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTFEMTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzczNyw2
ICszNzg3LDEwIEBACiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTAwRTE2RjVDRDAwQjM0NDYwIC8qIEluaXRp
YWxpemVUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYx
RjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0IxN0FEQjVG
MzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNDMTdB
REI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYz
QTE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4
QUYzRDE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc4ODUzRkExNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJl
Q2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzk3MSw3ICs0MDI1LDYg
QEAKIAkJCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0
ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFy
c2VBcnJheVZhbHVlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1
NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNjU1M0Ez
MzIxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0
ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyog
U3RhY2tJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC00MDAxLDYgKzQwNTQsNyBAQAogCQkJ
CUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVENTM3MjZGMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFjaW5nLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzRTE3QURCNUYzMDA1QUIxNzQgLyogVHlwZWRBcnJh
eUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUIzRUNEMTYyMzdGNEQwMEFCNjdBRCAvKiBU
eXBlZEFycmF5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NEIxNThFQkU5
MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NDExNThFQkU4
RDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDAwOSw3ICs0
MDYzLDExIEBACiAJCQkJMEZGNDI3NDgxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRjQyNzQ5MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfdHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTVBQjM5MTc5OUU0QjIwMEQyODMzRCAvKiBVRGlz
ODZEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjQxMTdBREI1RjMwMDVB
QjE3NCAvKiBVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDMxM0JGREU3
MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdB
OEFGNDIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBN0E4QUYzRjE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTdBOEFGNDAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25h
bEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNjAxODIxNjM5RkQyQTAwMzcyQkEz
IC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJFODkyQzE2RDAy
OEFEMDA5RTRGRDIgLyogVW51c2VkUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00Mzg5LDYg
KzQ0NDcsOCBAQAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyog
QVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGODMzNUI3MTYzOUMxRTYwMDE0
NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
QThBRjM0MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBN0E4QUYzNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUJGMTA3RUMzNzYwMDQyN0E0OCAvKiBBcnJheUNvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDU0MTVEMDcwNTUwMDZBNTk3QyAvKiBB
cnJheVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzAxMDdFQzM3NjAwNDI3
QTQ4IC8qIEFycmF5UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDQxMiw2ICs0NDcy
LDcgQEAKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50aWZp
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDlGMkYyMTdBMEFDMkEwMDUxMkU5OCAvKiBD
b21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjU1M0EzMzExN0ExRjFFRTAw
OENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTdFNUEzQTcxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUMyMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21wbGV0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0NkIxNkQ4MTJFQjVCNTkwMDFCRUMxQiAvKiBDb25zZXJ2
YXRpdmVSb290cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ2ODQsNyArNDc0NSw2IEBACiAJCQkJ
MEZGNzI5QUYxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGNzI5QjAxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGls
YXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJB
MyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNjU1
M0EzMzExN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0
YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjMxNjZBRDM1QzAwMEY1QkEzIC8q
IFByb2ZpbGVyT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjcyOUI0MTY2QUQzNUMw
MDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvVGFyZ2V0LnByaQppbmRleCAzNjFiMmJlN2ExN2UwMzRlODhiYjczY2EyNDQ4ZjU3NGRl
OGFlZGNlLi42OWU2NDRmZGY3ZmEzNzRkZTBhYjY3MmU4YzA5YWQzYmM2YWYzMzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtMjU5LDYgKzI1OSw4IEBAIFNPVVJDRVMgKz0gXAogICAg
IHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIFwKICAgICBwcm9maWxlci9Qcm9maWxlTm9k
ZS5jcHAgXAogICAgIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcCBcCisgICAgcnVudGltZS9B
cnJheUJ1ZmZlci5jcHAgXAorICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBcCiAgICAg
cnVudGltZS9BcmdMaXN0LmNwcCBcCiAgICAgcnVudGltZS9Bcmd1bWVudHMuY3BwIFwKICAgICBy
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmViNmJlNjY1NzhmOGE0NDRlMjJm
YTRjNmUxM2ExMGQ0MjBkYmMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKworI2luY2x1ZGUg
IkFycmF5QnVmZmVyVmlldy5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Jvb2wgQXJyYXlCdWZmZXI6OnRy
YW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCwgVmVjdG9yPFJlZlB0cjxBcnJheUJ1
ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpCit7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBr
ZWVwQWxpdmUodGhpcyk7CisKKyAgICBpZiAoIW1fY29udGVudHMubV9kYXRhKSB7CisgICAgICAg
IHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Ym9vbCBhbGxWaWV3c0FyZU5ldXRlcmFibGUgPSB0cnVlOworICAgIGZvciAoQXJyYXlCdWZmZXJW
aWV3KiBpID0gbV9maXJzdFZpZXc7IGk7IGkgPSBpLT5tX25leHRWaWV3KSB7CisgICAgICAgIGlm
ICghaS0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAgICAgICBhbGxWaWV3c0FyZU5ldXRlcmFibGUg
PSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYWxsVmlld3NBcmVOZXV0ZXJhYmxlKQorICAgICAg
ICBtX2NvbnRlbnRzLnRyYW5zZmVyKHJlc3VsdCk7CisgICAgZWxzZSB7CisgICAgICAgIG1fY29u
dGVudHMuY29weVRvKHJlc3VsdCk7CisgICAgICAgIGlmICghcmVzdWx0Lm1fZGF0YSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB3aGlsZSAobV9maXJzdFZpZXcpIHsK
KyAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBjdXJyZW50ID0gbV9maXJzdFZpZXc7CisgICAgICAg
IHJlbW92ZVZpZXcoY3VycmVudCk7CisgICAgICAgIGlmIChhbGxWaWV3c0FyZU5ldXRlcmFibGUg
fHwgY3VycmVudC0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAgICAgICBjdXJyZW50LT5uZXV0ZXIo
KTsKKyAgICAgICAgbmV1dGVyZWRWaWV3cy5hcHBlbmQoY3VycmVudCk7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEFycmF5QnVmZmVyOjphZGRWaWV3KEFycmF5QnVmZmVyVmll
dyogdmlldykKK3sKKyAgICB2aWV3LT5tX2J1ZmZlciA9IHRoaXM7CisgICAgdmlldy0+bV9wcmV2
VmlldyA9IDA7CisgICAgdmlldy0+bV9uZXh0VmlldyA9IG1fZmlyc3RWaWV3OworICAgIGlmICht
X2ZpcnN0VmlldykKKyAgICAgICAgbV9maXJzdFZpZXctPm1fcHJldlZpZXcgPSB2aWV3OworICAg
IG1fZmlyc3RWaWV3ID0gdmlldzsKK30KKwordm9pZCBBcnJheUJ1ZmZlcjo6cmVtb3ZlVmlldyhB
cnJheUJ1ZmZlclZpZXcqIHZpZXcpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gdmlldy0+bV9idWZm
ZXIpOworICAgIGlmICh2aWV3LT5tX25leHRWaWV3KQorICAgICAgICB2aWV3LT5tX25leHRWaWV3
LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9wcmV2VmlldzsKKyAgICBpZiAodmlldy0+bV9wcmV2Vmll
dykKKyAgICAgICAgdmlldy0+bV9wcmV2Vmlldy0+bV9uZXh0VmlldyA9IHZpZXctPm1fbmV4dFZp
ZXc7CisgICAgaWYgKG1fZmlyc3RWaWV3ID09IHZpZXcpCisgICAgICAgIG1fZmlyc3RWaWV3ID0g
dmlldy0+bV9uZXh0VmlldzsKKyAgICB2aWV3LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9uZXh0Vmll
dyA9IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI3YzczNGM2NzM0ODEwOTdjODE3NmRkNjRhOGRhMGJkYjM0YzZlY2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCkBAIC0wLDAgKzEsMjU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBcnJheUJ1ZmZlcl9o
CisjZGVmaW5lIEFycmF5QnVmZmVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVm
ZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworCitjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRz
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKK3B1Ymxp
YzoKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKCkgCisgICAgICAgIDogbV9kYXRhKDApCisgICAg
ICAgICwgbV9zaXplSW5CeXRlcygwKQorICAgIHsgfQorCisgICAgaW5saW5lIH5BcnJheUJ1ZmZl
ckNvbnRlbnRzKCk7CisKKyAgICB2b2lkKiBkYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CisgICAg
dW5zaWduZWQgc2l6ZUluQnl0ZXMoKSB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisKK3ByaXZh
dGU6CisgICAgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5C
eXRlcykgCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9zaXplSW5CeXRlcyhz
aXplSW5CeXRlcykKKyAgICB7IH0KKworICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKKwor
ICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kgeworICAgICAgICBaZXJvSW5pdGlhbGl6ZSwK
KyAgICAgICAgRG9udEluaXRpYWxpemUKKyAgICB9OworCisgICAgc3RhdGljIGlubGluZSB2b2lk
IHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEluaXRpYWxpemF0aW9uUG9saWN5LCBBcnJheUJ1ZmZlckNvbnRlbnRzJik7CisgICAgdm9p
ZCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVCghb3RoZXIubV9kYXRhKTsKKyAgICAgICAgb3RoZXIubV9kYXRhID0gbV9kYXRhOworICAg
ICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRlczsKKyAgICAgICAgbV9kYXRh
ID0gMDsKKyAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7CisgICAgfQorCisgICAgdm9pZCBjb3B5
VG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBBU1NFUlQoIW90
aGVyLm1fZGF0YSk7CisgICAgICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG1f
c2l6ZUluQnl0ZXMsIHNpemVvZihjaGFyKSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRp
YWxpemUsIG90aGVyKTsKKyAgICAgICAgaWYgKCFvdGhlci5tX2RhdGEpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1lbWNweShvdGhlci5tX2RhdGEsIG1fZGF0YSwgbV9zaXplSW5CeXRl
cyk7CisgICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOworICAgIH0K
KworICAgIHZvaWQqIG1fZGF0YTsKKyAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworfTsKKwor
Y2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4geworcHVi
bGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyKik7Cisg
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9p
ZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJik7CisKKyAgICAv
LyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQu
CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwor
CisgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKKyAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgp
IGNvbnN0OworICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisKKyAgICBp
bmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBj
b25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoaW50IGJlZ2lu
KSBjb25zdDsKKworICAgIHZvaWQgYWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICB2b2lk
IHJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3Kik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiwgVmVjdG9yPFJlZlB0cjxBcnJheUJ1
ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpOworICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0
dXJuICFtX2NvbnRlbnRzLm1fZGF0YTsgfQorCisgICAgfkFycmF5QnVmZmVyKCkgeyB9CisKK3By
aXZhdGU6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworCisgICAgaW5saW5lIEFycmF5QnVm
ZmVyKEFycmF5QnVmZmVyQ29udGVudHMmKTsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAg
IGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGludCBpbmRleCkgY29uc3Q7CisgICAgc3RhdGlj
IGlubGluZSBpbnQgY2xhbXBWYWx1ZShpbnQgeCwgaW50IGxlZnQsIGludCByaWdodCk7CisKKyAg
ICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVudHM7CisgICAgQXJyYXlCdWZmZXJWaWV3KiBt
X2ZpcnN0VmlldzsKK307CisKK2ludCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShpbnQgeCwgaW50
IGxlZnQsIGludCByaWdodCkKK3sKKyAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CisgICAgaWYg
KHggPCBsZWZ0KQorICAgICAgICB4ID0gbGVmdDsKKyAgICBpZiAocmlnaHQgPCB4KQorICAgICAg
ICB4ID0gcmlnaHQ7CisgICAgcmV0dXJuIHg7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKK30KKworUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlciogb3RoZXIp
Cit7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUob3RoZXItPmRhdGEoKSwgb3RoZXIt
PmJ5dGVMZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQoreworICAg
IEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CisgICAgQXJyYXlCdWZmZXJDb250ZW50czo6
dHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRp
YWxpemUsIGNvbnRlbnRzKTsKKyAgICBpZiAoIWNvbnRlbnRzLm1fZGF0YSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBhZG9wdFJlZihuZXcgQXJy
YXlCdWZmZXIoY29udGVudHMpKTsKKyAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwg
Ynl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYg
Y29udGVudHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50
cykpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQoreworICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOworfQorCitQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5IHBvbGljeSkKK3sKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOworICAgIEFy
cmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNp
emUsIHBvbGljeSwgY29udGVudHMpOworICAgIGlmICghY29udGVudHMubV9kYXRhKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRz
KSk7Cit9CisKK0FycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBj
b250ZW50cykKKyAgICA6IG1fZmlyc3RWaWV3KDApCit7CisgICAgY29udGVudHMudHJhbnNmZXIo
bV9jb250ZW50cyk7Cit9CisKK3ZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkKK3sKKyAgICByZXR1
cm4gbV9jb250ZW50cy5tX2RhdGE7Cit9CisKK2NvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cy5tX2RhdGE7Cit9CisKK3Vuc2lnbmVk
IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50
cy5tX3NpemVJbkJ5dGVzOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6c2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBzbGljZUlt
cGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7Cit9CisKK1Bhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShpbnQgYmVnaW4pIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKK30KKwor
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBi
ZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAoreworICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8
PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7Cit9CisKK3Vu
c2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGludCBpbmRleCkgY29uc3QKK3sKKyAgICB1
bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIGlmIChpbmRleCA8IDAp
CisgICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0aCArIGluZGV4OworICAgIHJldHVybiBjbGFt
cFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKK30KKwordm9pZCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3ksIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCkKK3sKKyAgICAvLyBEbyBub3QgYWxsb3cg
MzItYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgorICAgIC8vIEZJWE1FOiBXaHkgbm90
PyBUaGUgdHJ5RmFzdENhbGxvYyBmdW5jdGlvbiBhbHJlYWR5IGNoZWNrcyBpdHMgYXJndW1lbnRz
LAorICAgIC8vIGFuZCB3aWxsIGZhaWwgaWYgdGhlcmUgaXMgYW55IG92ZXJmbG93LCBzbyB3aHkg
c2hvdWxkIHdlIGluY2x1ZGUgYQorICAgIC8vIHJlZHVkYW50IHVubmVjZXNzYXJpbHkgcmVzdHJp
Y3RpdmUgY2hlY2sgaGVyZT8KKyAgICBpZiAobnVtRWxlbWVudHMpIHsKKyAgICAgICAgdW5zaWdu
ZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7CisgICAgICAgIGlm
ICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorICAgIGJvb2wgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IGZhbHNlOworICAgIGlmIChwb2xp
Y3kgPT0gWmVyb0luaXRpYWxpemUpCisgICAgICAgIGFsbG9jYXRpb25TdWNjZWVkZWQgPSBXVEY6
OnRyeUZhc3RDYWxsb2MobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSkuZ2V0VmFsdWUocmVz
dWx0Lm1fZGF0YSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChwb2xpY3kgPT0gRG9udElu
aXRpYWxpemUpOworICAgICAgICBhbGxvY2F0aW9uU3VjY2VlZGVkID0gV1RGOjp0cnlGYXN0TWFs
bG9jKG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1bHQubV9kYXRh
KTsKKyAgICB9CisKKyAgICBpZiAoYWxsb2NhdGlvblN1Y2NlZWRlZCkgeworICAgICAgICByZXN1
bHQubV9zaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC5tX2RhdGEgPSAwOworfQorCitBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp+QXJyYXlCdWZmZXJDb250ZW50cygpCit7CisgICAgV1RGOjpmYXN0RnJlZSht
X2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpBcnJheUJ1ZmZl
cjsKK3VzaW5nIEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czsKKworI2VuZGlmIC8vIEFycmF5QnVm
ZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkODZhZjk4ZWQwMmVjNDBmM2YzYzc3Njc0OTY4M2M1YzIyYjZm
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisKKyNpbmNsdWRlICJBcnJheUJ1
ZmZlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZl
clZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
KQorICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCisgICAgLCBtX2lzTmV1dGVyYWJsZSh0
cnVlKQorICAgICwgbV9idWZmZXIoYnVmZmVyKQorICAgICwgbV9wcmV2VmlldygwKQorICAgICwg
bV9uZXh0VmlldygwKQoreworICAgIG1fYmFzZUFkZHJlc3MgPSBtX2J1ZmZlciA/IChzdGF0aWNf
Y2FzdDxjaGFyKj4obV9idWZmZXItPmRhdGEoKSkgKyBtX2J5dGVPZmZzZXQpIDogMDsKKyAgICBp
ZiAobV9idWZmZXIpIAorICAgICAgICBtX2J1ZmZlci0+YWRkVmlldyh0aGlzKTsKK30KKworQXJy
YXlCdWZmZXJWaWV3Ojp+QXJyYXlCdWZmZXJWaWV3KCkKK3sKKyAgICBpZiAobV9idWZmZXIpCisg
ICAgICAgIG1fYnVmZmVyLT5yZW1vdmVWaWV3KHRoaXMpOworfQorCit2b2lkIEFycmF5QnVmZmVy
Vmlldzo6bmV1dGVyKCkKK3sKKyAgICBtX2J1ZmZlciA9IDA7CisgICAgbV9ieXRlT2Zmc2V0ID0g
MDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZTFhYzNhMzE0NzI0N2I1ODljNGUyYzU3MWJlN2M5YjRhNTU3
OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmgKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFycmF5
QnVmZmVyVmlld19oCisjZGVmaW5lIEFycmF5QnVmZmVyVmlld19oCisKKyNpbmNsdWRlICJBcnJh
eUJ1ZmZlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGxpbWl0cy5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJh
eUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKK3B1Ymxp
YzoKKyAgICBlbnVtIFZpZXdUeXBlIHsKKyAgICAgICAgVHlwZUludDgsCisgICAgICAgIFR5cGVV
aW50OCwKKyAgICAgICAgVHlwZVVpbnQ4Q2xhbXBlZCwKKyAgICAgICAgVHlwZUludDE2LAorICAg
ICAgICBUeXBlVWludDE2LAorICAgICAgICBUeXBlSW50MzIsCisgICAgICAgIFR5cGVVaW50MzIs
CisgICAgICAgIFR5cGVGbG9hdDMyLAorICAgICAgICBUeXBlRmxvYXQ2NCwKKyAgICAgICAgVHlw
ZURhdGFWaWV3CisgICAgfTsKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdCA9
IDA7CisKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYnVmZmVyOworICAgIH0KKworICAgIHZvaWQqIGJhc2VBZGRyZXNz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Ynl0ZU9mZnNldDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdCA9IDA7CisKKyAgICB2b2lkIHNldE5ldXRlcmFibGUoYm9vbCBmbGFnKSB7IG1faXNOZXV0
ZXJhYmxlID0gZmxhZzsgfQorICAgIGJvb2wgaXNOZXV0ZXJhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9pc05ldXRlcmFibGU7IH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJh
eUJ1ZmZlclZpZXcoKTsKKworcHJvdGVjdGVkOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBcnJh
eUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
OworCisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0KTsKKworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworCisgICAg
aW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFu
Z2VCeXRlTGVuZ3RoKTsKKworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVk
KiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOworCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0
aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCisgICAgLy8gd2l0aGlu
IHJhbmdlLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBib29sIHZlcmlm
eVN1YlJhbmdlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMpCisgICAgeworICAgICAgICBpZiAoIWJ1ZmZlcikK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHNpemVvZihUKSA+IDEgJiYg
Ynl0ZU9mZnNldCAlIHNpemVvZihUKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKGJ5dGVPZmZzZXQgPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVy
LT5ieXRlTGVuZ3RoKCkgLSBieXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgaWYgKG51
bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIElucHV0IG9mZnNldCBpcyBp
biBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKKyAgICAvLyBvdXRw
dXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZl
cidzIHZpZXcuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50cyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwgdW5zaWduZWQgKm9mZnNldCwgdW5zaWduZWQgKm51bUVs
ZW1lbnRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0g
YXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhP
ZmZzZXQpIHsKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAg
ICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2Yo
VCk7CisgICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXItPmJ5dGVMZW5ndGgoKSwgKm9m
ZnNldCk7CisgICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgICpudW1FbGVtZW50cyA9
IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOworICAgIH0KKworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7CisKKyAgICAvLyBUaGlz
IGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5
dGUgb2Zmc2V0LgorICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7CisKKyAgICB1bnNpZ25lZCBtX2J5
dGVPZmZzZXQgOiAzMTsKKyAgICBib29sIG1faXNOZXV0ZXJhYmxlIDogMTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBBcnJheUJ1ZmZlclZpZXcqIG1fcHJldlZpZXc7CisgICAgQXJyYXlCdWZm
ZXJWaWV3KiBtX25leHRWaWV3OworfTsKKworYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwo
QXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBpZiAo
Ynl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXkt
PmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJy
YXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgLy8gT3V0IG9mIHJhbmdl
IG9mZnNldCBvciBvdmVyZmxvdworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAor
ICAgIGNoYXIqIGJhc2UgPSBzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZUFkZHJlc3MoKSk7CisgICAg
bWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5i
eXRlTGVuZ3RoKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwg
dW5zaWduZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgo
KQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkK
KyAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewor
ICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIq
PihiYXNlQWRkcmVzcygpKTsKKyAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBk
YXRhQnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXJyYXlCdWZmZXJW
aWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVM
ZW5ndGgpCit7CisgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKKyAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgeworICAgICAgICAvLyBP
dXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVz
cygpKTsKKyAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVP
ZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVu
c2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCit7CisgICAgaWYgKHN0YXJ0IDwgMCkK
KyAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOworICAgIGlmIChzdGFydCA8IDApCisgICAgICAg
IHN0YXJ0ID0gMDsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsK
KyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kID0gMDsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCisgICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKKyAg
ICBpZiAoZW5kIDwgc3RhcnQpCisgICAgICAgIGVuZCA9IHN0YXJ0OworICAgICpvZmZzZXQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOworICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZW5kIC0gc3RhcnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcg
SlNDOjpBcnJheUJ1ZmZlclZpZXc7CisKKyNlbmRpZiAvLyBBcnJheUJ1ZmZlclZpZXdfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQzMkFycmF5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YzUyNTc0MTdjYTI3NTJlNjYyODg5MzhmYmY2OTdlNzMzYjhlZDRiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQzMkFycmF5LmgKQEAgLTAsMCAr
MSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRmxvYXQzMkFycmF5X2gKKyNkZWZpbmUgRmxvYXQz
MkFycmF5X2gKKworI2luY2x1ZGUgIlR5cGVkQXJyYXlCYXNlLmgiCisjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZsb2F0MzJBcnJheSA6IHB1
YmxpYyBUeXBlZEFycmF5QmFzZTxmbG9hdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZShjb25zdCBmbG9hdCog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZs
b2F0MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3
aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAg
Ly8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91
dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJy
YXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5
cGVkQXJyYXlCYXNlPGZsb2F0Pjo6c2V0OworCisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgs
IGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBUeXBlZEFycmF5QmFz
ZTxmbG9hdD46Om1fbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBUeXBlZEFy
cmF5QmFzZTxmbG9hdD46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUp
OworICAgIH0KKworICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IHN1
YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBl
IGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVGbG9hdDMyOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgRmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIC8vIE1h
a2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBU
eXBlZEFycmF5QmFzZTxmbG9hdD47Cit9OworCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxv
YXQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK1Bhc3NS
ZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb25zdCBmbG9hdCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+
OjpjcmVhdGU8RmxvYXQzMkFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxG
bG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0
MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxGbG9hdDMyQXJy
YXk+KGxlbmd0aCk7Cit9CisKK0Zsb2F0MzJBcnJheTo6RmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIDogVHlwZWRBcnJheUJhc2U8ZmxvYXQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KQoreworfQorCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgo
KSk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OnN1YmFycmF5
KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEZs
b2F0MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2lu
ZyBKU0M6OkZsb2F0MzJBcnJheTsKKworI2VuZGlmIC8vIEZsb2F0MzJBcnJheV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0QXJyYXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zsb2F0NjRBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3N2Vk
YmQzYjhlNTljNTI4MTgzNzQxMTlmOGE5ZDk3YzIyNzFhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0QXJyYXkuaApAQCAtMCwwICsxLDEw
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEZsb2F0NjRBcnJheV9oCisjZGVmaW5lIEZsb2F0NjRBcnJh
eV9oCisKKyNpbmNsdWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGbG9hdDY0QXJyYXkgOiBwdWJsaWMg
VHlwZWRBcnJheUJhc2U8ZG91YmxlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKGNvbnN0IGRvdWJsZSogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0
NjRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVu
IGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8g
bm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBm
aWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5cGVk
QXJyYXlCYXNlPGRvdWJsZT46OnNldDsKKworICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBk
b3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8
ZG91YmxlPjo6bV9sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFR5cGVkQXJy
YXlCYXNlPGRvdWJsZT46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVl
KTsKKyAgICB9CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IHN1YmFycmF5
KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlw
ZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlRmxvYXQ2NDsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIEZsb2F0NjRBcnJheShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAKKyAg
ICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQg
Y2xhc3MgVHlwZWRBcnJheUJhc2U8ZG91YmxlPjsKK307CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFy
cmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJu
IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGxlbmd0aCk7Cit9
CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZShjb25zdCBk
b3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlC
YXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJy
YXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDY0
QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQ8RmxvYXQ2NEFycmF5PihsZW5ndGgpOworfQorCitGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJh
eShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKKyAgICA6IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0
QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXko
c3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBz
dWJhcnJheUltcGw8RmxvYXQ2NEFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKK3VzaW5nIEpTQzo6RmxvYXQ2NEFycmF5OworCisjZW5kaWYgLy8gRmxvYXQ2NEFy
cmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJy
YXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNDY2YWU0ZGE3ZTIzMmI1NjdmOWEyNGVmM2Y5YmM4ZjFmYmEzMDAxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MTZBcnJheS5oCkBAIC0w
LDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQxNkFycmF5X2gKKyNkZWZpbmUgSW50
MTZBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xhc3MgSW50MTZBcnJheSA6IHB1
YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZShjb25zdCBp
bnQxNl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUg
dXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERv
CisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQg
d2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQx
NkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2lu
ZyBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6c2V0OworICAgIHVzaW5nIEludGVncmFsVHlwZWRB
cnJheUJhc2U8aW50MTZfdD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJy
YXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50
MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKKworICAgIHZpcnR1
YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVHlwZUlu
dDE2OworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgSW50MTZBcnJheShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKwor
ICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVu
ZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQxNl90PjsKK307CisKK1Bhc3NSZWZQdHI8SW50MTZB
cnJheT4gSW50MTZBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4g
VHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJbnQxNkFycmF5PihsZW5ndGgpOworfQor
CitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShjb25zdCBpbnQxNl90
KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxp
bnQxNl90Pjo6Y3JlYXRlPEludDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVm
UHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJbnQxNkFycmF5PihidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJu
IFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDE2QXJyYXk+
KGxlbmd0aCk7Cit9CisKK0ludDE2QXJyYXk6OkludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
OiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVu
Z3RoKQoreworfQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OnN1YmFycmF5
KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgp
KTsKK30KKworUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQxNkFy
cmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6
SW50MTZBcnJheTsKKworI2VuZGlmIC8vIEludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNjU5Mjc4ODI2YjNmMjZiMzEx
OTRkMDIyYThlOGM2YTI2YzU3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnQzMkFycmF5LmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgSW50MzJBcnJheV9oCisjZGVmaW5lIEludDMyQXJyYXlfaAorCisjaW5jbHVkZSAiSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50MzJB
cnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD4geworcHVibGljOgorICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlKGNv
bnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJl
IHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBE
bworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0
IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50
MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNp
bmcgVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0OworICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJh
eUJhc2U8aW50Pjo6c2V0OworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gc3Vi
YXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3
VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlSW50MzI7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIC8vIE1h
a2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBU
eXBlZEFycmF5QmFzZTxpbnQ+OworfTsKKworUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFy
cmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQz
MkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoY29uc3QgaW50KiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJh
eT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJh
eTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+
OjpjcmVhdGU8SW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGVV
bmluaXRpYWxpemVkPEludDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDMyQXJyYXk6OkludDMy
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD4oYnVm
ZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4g
SW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBzdWJh
cnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMy
QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4g
c3ViYXJyYXlJbXBsPEludDMyQXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwordXNpbmcgSlNDOjpJbnQzMkFycmF5OworCisjZW5kaWYgLy8gSW50MzJBcnJheV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkw
ZjIyODY2NjU5NDZiM2QzOThjOTkyYWU4NTgwYmM1N2NiNGNlYzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaApAQCAtMCwwICsxLDEw
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQ4QXJyYXlfaAorI2RlZmluZSBJbnQ4QXJyYXlfaAor
CisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIEludDhBcnJheSA6IHB1YmxpYyBJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlPGludDhfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShjb25zdCBpbnQ4X3QqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+
IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBr
bm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1
cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBm
aXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxp
bnQ4X3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+Ojpz
ZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFy
dCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlSW50ODsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgaW5saW5lIEludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIE1ha2UgY29uc3RydWN0b3Ig
dmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxp
bnQ4X3Q+OworfTsKKworUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3Jl
YXRlPEludDhBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhB
cnJheTo6Y3JlYXRlKGNvbnN0IGludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRlPEludDhBcnJheT4oYXJyYXks
IGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRl
PEludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRy
PEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFs
aXplZDxJbnQ4QXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDhBcnJheTo6SW50OEFycmF5KFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+KGJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5
OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0
LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OnN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBs
PEludDhBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2lu
ZyBKU0M6OkludDhBcnJheTsKKworI2VuZGlmIC8vIEludDhBcnJheV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTljOTg5ZWM3ZjIzMDdkODc4ZmExMmViNWJlMGNkNDk2OWUxZmIxZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVncmFsVHlwZWRB
cnJheUJhc2UuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCisKKyNpbmNs
dWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgorCisvLyBCYXNlIGNsYXNzIGZvciBhbGwgV2ViR0w8VD5BcnJheSB0eXBl
cyBob2xkaW5nIGludGVncmFsCisvLyAobm9uLWZsb2F0aW5nLXBvaW50KSB2YWx1ZXMuCisKK25h
bWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEludGVncmFsVHlw
ZWRBcnJheUJhc2UgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8VD4geworcHVibGljOgorICAgIHZv
aWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAo
aW5kZXggPj0gVHlwZWRBcnJheUJhc2U8VD46Om1fbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpIC8vIENsYW1wIE5hTiB0byAwCisgICAg
ICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgIC8vIFRoZSBkb3VibGUgY2FzdCBpcyBuZWNlc3Nh
cnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHdyYXBwaW5nCisgICAgICAgIC8vIGZvciBvdXQtb2YtcmFu
Z2UgdmFsdWVzIHdpdGggSW50MzJBcnJheSBhbmQgVWludDMyQXJyYXkuCisgICAgICAgIFR5cGVk
QXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8VD4oc3RhdGljX2Nhc3Q8
aW50NjRfdD4odmFsdWUpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBJbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IFR5cGVkQXJyYXlCYXNlPFQ+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQorICAgIHsKKyAgICB9CisKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmU3
YTZjMWE1NjY5NTc4ZWUxZDVhNjA2Y2NkZDhkNjQwZGMxMTg3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApAQCAtMCwwICsx
LDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVHlwZWRBcnJheUJhc2VfaAorI2RlZmluZSBUeXBl
ZEFycmF5QmFzZV9oCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkFycmF5
QnVmZmVyVmlldy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgeworcHVibGlj
OgorICAgIFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4oYmFzZUFkZHJl
c3MoKSk7IH0KKworICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPFQ+KiBhcnJheSwgdW5zaWdu
ZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXksIG9mZnNldCAq
IHNpemVvZihUKSk7CisgICAgfQorCisgICAgYm9vbCBzZXRSYW5nZShjb25zdCBUKiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNldFJhbmdlSW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgZGF0YUxl
bmd0aCAqIHNpemVvZihUKSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBib29s
IHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCisgICAgeworICAgICAg
ICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQgKiBzaXplb2YoVCksIGxlbmd0aCAqIHNpemVv
ZihUKSk7CisgICAgfQorCisgICAgLy8gT3ZlcnJpZGRlbiBmcm9tIEFycmF5QnVmZmVyVmlldy4g
VGhpcyBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIG9mCisgICAgLy8gcnVsZXMgYWJvdXQgaW5oZXJp
dGFuY2Ugb2YgbWVtYmVycyBpbiB0ZW1wbGF0ZSBjbGFzc2VzLCBhbmQKKyAgICAvLyBiZWNhdXNl
IGl0IGlzIGFjY2Vzc2VkIHZpYSBwb2ludGVycyB0byBzdWJjbGFzc2VzLgorICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGg7CisgICAgfQor
CisgICAgdmlydHVhbCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZihUKTsKKyAgICB9CisKKyAgICAvLyBJbnZva2VkIGJ5
IHRoZSBpbmRleGVkIGdldHRlci4gRG9lcyBub3QgcGVyZm9ybSByYW5nZSBjaGVja3M7IGNhbGxl
cgorICAgIC8vIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBzbyBhbmQgcmV0dXJuaW5nIHVuZGVm
aW5lZCBhcyBuZWNlc3NhcnkuCisgICAgVCBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBUeXBl
ZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpOworICAgICAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8
VD46OmRhdGEoKVtpbmRleF07CisgICAgfQorCisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgcG9zKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IChvZmZzZXQgPD0gbV9sZW5ndGgKKyAgICAgICAgICAgICYmIG9mZnNldCArIHBvcyA8PSBtX2xl
bmd0aAorICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKKyAgICAgICAgICAgICYmIG9mZnNl
dCArIHBvcyA+PSBvZmZzZXQpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFR5cGVkQXJyYXlC
YXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVP
ZmZzZXQpCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobGVuZ3RoLCBzaXplb2YoVCkpOworICAg
ICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0aCk7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNz
PiBjcmVhdGUoY29uc3QgVCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAg
IFJlZlB0cjxTdWJjbGFzcz4gYSA9IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsKKyAgICAgICAg
aWYgKGEpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CisgICAgICAgICAgICAgICAgYS0+c2V0KGksIGFycmF5W2ldKTsKKyAgICAgICAgcmV0dXJuIGE7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZihidWZmZXIpOworICAgICAgICBpZiAoIXZlcmlmeVN1YlJhbmdl
PFQ+KGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLCBieXRlT2Zmc2V0LCBsZW5n
dGgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KQorICAgIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7CisgICAgICAgIGlmICgh
YnVmZmVyLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBjcmVh
dGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgU3ViY2xhc3M+CisgICAgUGFzc1JlZlB0cjxTdWJjbGFzcz4gc3ViYXJyYXlJbXBsKGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCwg
bGVuZ3RoOworICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgbV9s
ZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOworICAgICAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1l
bnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgpOworICAgICAg
ICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5ndGgpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQorICAgIHsKKyAgICAgICAgQXJyYXlCdWZm
ZXJWaWV3OjpuZXV0ZXIoKTsKKyAgICAgICAgbV9sZW5ndGggPSAwOworICAgIH0KKworICAgIC8v
IFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmlydHVhbCBmdW5j
dGlvbiBpbiBzdWJjbGFzc2VzLAorICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBwcm90ZWN0ZWQg
cmF0aGVyIHRoYW4gcHJpdmF0ZS4KKyAgICB1bnNpZ25lZCBtX2xlbmd0aDsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlR5cGVkQXJyYXlCYXNlOworCisjZW5kaWYgLy8g
VHlwZWRBcnJheUJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVWludDE2QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNkFy
cmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmYyZmFiMWIyN2I4NjJhOWEwOGQ5MTkxYzhiNDI4MzQ1NGNiZGRl
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQx
NkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVWludDE2QXJyYXlf
aAorI2RlZmluZSBVaW50MTZBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xhc3Mg
VWludDE2QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD4gewor
cHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFy
cmF5PiBjcmVhdGUoY29uc3QgdWludDE2X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisg
ICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJy
YXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRp
cmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OjpzZXQ7Cisg
ICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46OnNldDsKKworICAgIGlu
bGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Owor
ICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGlu
dCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDE2OworICAgIH0KKworcHJpdmF0ZToKKyAgICBp
bmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxl
IHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90
PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46OmNy
ZWF0ZTxVaW50MTZBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50MTZBcnJheT4g
VWludDE2QXJyYXk6OmNyZWF0ZShjb25zdCB1aW50MTZfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OjpjcmVhdGU8VWludDE2
QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50
MTZBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTx1aW50MTZfdD46OmNyZWF0ZTxVaW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVpbnQxNl90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MTZBcnJheT4obGVuZ3RoKTsKK30K
KworVWludDE2QXJyYXk6OlVpbnQxNkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxU
eXBlZEFycmF5QmFzZTx1aW50MTZfdD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9
CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3Rh
cnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisK
K1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQs
IGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50MTZBcnJheT4o
c3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlVpbnQx
NkFycmF5OworCisjZW5kaWYgLy8gVWludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWViMDFlMDFhMWNhZDRlYmRlNDk5
ZGExMzJmMzk3MGE1OTEyODNlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgVWludDMyQXJyYXlfaAorI2RlZmluZSBVaW50MzJBcnJheV9oCisKKyNpbmNsdWRlICJJ
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJh
eUJ1ZmZlcjsKKworY2xhc3MgVWludDMyQXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5
QmFzZTx1aW50MzJfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxV
aW50MzJBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgdWludDMyX3QqIGFycmF5LCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4g
Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtu
b3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVy
biB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZp
cnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8
dWludDMyX3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJf
dD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJhcnJheShp
bnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJh
cnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBn
ZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDMyOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBpbmxpbmUgVWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBj
b25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVk
QXJyYXlCYXNlPHVpbnQzMl90PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQz
MkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1Jl
ZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZShjb25zdCB1aW50MzJfdCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDMy
X3Q+OjpjcmVhdGU8VWludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRy
PFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJBcnJheT4oYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50
MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MzJB
cnJheT4obGVuZ3RoKTsKK30KKworVWludDMyQXJyYXk6OlVpbnQzMkFycmF5KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJfdD4oYnVmZmVyLCBieXRlT2Zm
c2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5
OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0
LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5
SW1wbDxVaW50MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
Cit1c2luZyBKU0M6OlVpbnQzMkFycmF5OworCisjZW5kaWYgLy8gVWludDMyQXJyYXlfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NWY5
ZTE3MDUzOGRjMGMyNmFmODE1NGU2OWRkZTBhZjZiMDJiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OEFycmF5LmgKQEAgLTAsMCArMSwxMDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgVWludDhBcnJheV9oCisjZGVmaW5lIFVpbnQ4QXJyYXlfaAor
CisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIFVpbnQ4QXJyYXkgOiBwdWJsaWMgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTx1aW50OF90PiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGUoY29uc3QgdWludDhfdCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4
QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBp
dCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5v
dCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmls
bGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJh
eUJhc2U8dWludDhfdD46OnNldDsKKyAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVp
bnQ4X3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1
YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBl
IGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVVaW50ODsKKyAgICB9
CisKK3Byb3RlY3RlZDoKKyAgICBpbmxpbmUgVWludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtl
IGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlw
ZWRBcnJheUJhc2U8dWludDhfdD47Cit9OworCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4
QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlC
YXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoY29uc3QgdWludDhfdCogYXJyYXksIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNy
ZWF0ZTxVaW50OEFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFy
cmF5PiBVaW50OEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTx1aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50OEFycmF5PihsZW5ndGgpOwor
fQorCitVaW50OEFycmF5OjpVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorOiBJbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlPHVpbnQ4X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OEFycmF5PihzdGFydCwgZW5k
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6VWludDhBcnJheTsKKwor
I2VuZGlmIC8vIFVpbnQ4QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZmZmFlNzQ3Y2FlZThhZTNiMGQ1
ZTE0MTEwYWUxMThjOGQ5ZmQyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVWludDhDbGFtcGVkQXJyYXlfaAorI2RlZmluZSBVaW50
OENsYW1wZWRBcnJheV9oCisKKyNpbmNsdWRlICJVaW50OEFycmF5LmgiCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFVpbnQ4Q2xhbXBlZEFy
cmF5IDogcHVibGljIFVpbnQ4QXJyYXkgeworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoY29uc3Qg
dWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4s
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBTaG91bGQg
b25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZp
bGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2
YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCk7CisKKyAgICAvLyBJdCdzIG9ubHkgbmVlZGVkIHRvIHBvdGVudGlhbGx5IGNhbGwgdGhpcyBt
ZXRob2QgaWYgdGhlIGFycmF5CisgICAgLy8gd2FzIGNyZWF0ZWQgdW5pbml0aWFsaXplZCAtLSB0
aGUgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBwYXRocworICAgIC8vIHplcm8gdGhlIGFsbG9jYXRl
ZCBtZW1vcnkuCisgICAgaW5saW5lIHZvaWQgemVyb0ZpbGwoKTsKKworICAgIHVzaW5nIFR5cGVk
QXJyYXlCYXNlPHVpbnQ4X3Q+OjpzZXQ7CisgICAgaW5saW5lIHZvaWQgc2V0KHVuc2lnbmVkIGlu
ZGV4LCBkb3VibGUgdmFsdWUpOworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFR5cGVVaW50OENsYW1wZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBVaW50
OENsYW1wZWRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8g
c3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dWludDhfdD47Cit9
OworCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhf
dD46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShjb25zdCB1aW50OF90
KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1
aW50OF90Pjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKwor
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0
ZTxVaW50OENsYW1wZWRBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVpbnQ4X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQ4Q2xhbXBlZEFycmF5PihsZW5ndGgp
OworfQorCit2b2lkIFVpbnQ4Q2xhbXBlZEFycmF5Ojp6ZXJvRmlsbCgpCit7CisgICAgemVyb1Jh
bmdlKDAsIGxlbmd0aCgpKTsKK30KKwordm9pZCBVaW50OENsYW1wZWRBcnJheTo6c2V0KHVuc2ln
bmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCit7CisgICAgaWYgKGluZGV4ID49IG1fbGVuZ3RoKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpIHx8IHZhbHVlIDwgMCkK
KyAgICAgICAgdmFsdWUgPSAwOworICAgIGVsc2UgaWYgKHZhbHVlID4gMjU1KQorICAgICAgICB2
YWx1ZSA9IDI1NTsKKyAgICBkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4obHJp
bnQodmFsdWUpKTsKK30KKworVWludDhDbGFtcGVkQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorOiBVaW50OEFycmF5KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQorewor
fQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6c3Vi
YXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVu
Z3RoKCkpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBz
dWJhcnJheUltcGw8VWludDhDbGFtcGVkQXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpVaW50OENsYW1wZWRBcnJheTsKKworI2VuZGlmIC8v
IFVpbnQ4Q2xhbXBlZEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGU0
ODQzYjE5YzJlOGYzOWQ3MDYyZTY3Mzg0MmM3ZTViODMwZWRhYTQuLmUyMjdlMjRmOWFlY2Y0YzBj
YzgyZDY5YWQ1MzVhNzdkMjU2YWRiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApA
QCAtNjksOCArNjksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwog
ICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBj
bGFzcyBGbG9hdDMyQXJyYXk7CisgICAgY2xhc3MgRmxvYXQ2NEFycmF5OwogICAgIGNsYXNzIEhh
bmRsZVN0YWNrOwogICAgIGNsYXNzIElkZW50aWZpZXJUYWJsZTsKKyAgICBjbGFzcyBJbnQ4QXJy
YXk7CisgICAgY2xhc3MgSW50MTZBcnJheTsKKyAgICBjbGFzcyBJbnQzMkFycmF5OwogICAgIGNs
YXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OwpAQCAtODgsNiArOTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKFJF
R0VYUF9UUkFDSU5HKQogICAgIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgorICAgIGNsYXNzIFVpbnQ4
QXJyYXk7CisgICAgY2xhc3MgVWludDhDbGFtcGVkQXJyYXk7CisgICAgY2xhc3MgVWludDE2QXJy
YXk7CisgICAgY2xhc3MgVWludDMyQXJyYXk7CiAgICAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7
CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDY3NDljNmFjMDZkYmUx
ZThjODlkOWM3NThjODZmN2Q0Yjg0ZWU2NDQuLmY2YTM4MGJmYTNmZmE5ZDViZTkyNzU5OTY2NjVi
NDU5ODgyYTc3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQsMTAgKzQsNiBAQCB3dGZf
c291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oIFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9BVkxUcmVlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0FsaWdubWVudC5oIFwK
LSAgICBTb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAgXAotICAgIFNvdXJjZS9XVEYvd3Rm
L0FycmF5QnVmZmVyLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAg
XAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oIFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmNwcCBcCkBAIC01Niw4ICs1Miw2IEBAIHd0Zl9z
b3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgU291cmNlL1dURi93dGYv
Rml4ZWRBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaCBcCi0gICAg
U291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zvcndh
cmQuaCBcCiAgICAgU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCBcCiAgICAg
U291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmggXApAQCAtNzYsMTAgKzcwLDYgQEAg
d3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCBcCiAgICAgU291cmNlL1dURi93dGYvSW5zZXJ0aW9u
LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0ludDE2QXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93
dGYvSW50MzJBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaCBcCi0gICAg
U291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9MaXN0RHVtcC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9MTFZNSGVhZGVycy5oIFwKQEAgLTE4OSwxMSArMTc5LDYgQEAgd3Rm
X3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmggXAogICAgIFNvdXJj
ZS9XVEYvd3RmL1R5cGVUcmFpdHMuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9UeXBlVHJhaXRz
LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmggXAotICAgIFNvdXJjZS9X
VEYvd3RmL1VpbnQxNkFycmF5LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5Lmgg
XAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93dGYv
VWludDhDbGFtcGVkQXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvVW5pb25GaW5kLmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL1VuaVN0ZEV4dHJhcy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9W
TVRhZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dU
Ri5wcm8KaW5kZXggMTZhOWM4YmM2NjhlZDExNDA0NzE2ZmEzZDhmNTRjOTgyN2VjOWU3Mi4uNGEw
YTY4MjI4NmViNTQ5NjI5OTI0MzE4MzI3MDQxNWM1MDM3NjI4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYucHJvCisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtMjEsOCArMjEsNiBAQCB3
aW5jZSogewogCiBIRUFERVJTICs9IFwKICAgICBBbGlnbm1lbnQuaCBcCi0gICAgQXJyYXlCdWZm
ZXIuaCBcCi0gICAgQXJyYXlCdWZmZXJWaWV3LmggXAogICAgIEFTQ0lJQ1R5cGUuaCBcCiAgICAg
QXNzZXJ0aW9ucy5oIFwKICAgICBBdG9taWNzLmggXApAQCAtNjQsOCArNjIsNiBAQCBIRUFERVJT
ICs9IFwKICAgICBGZWF0dXJlRGVmaW5lcy5oIFwKICAgICBGaWxlUHJpbnRTdHJlYW0uaCBcCiAg
ICAgRml4ZWRBcnJheS5oIFwKLSAgICBGbG9hdDMyQXJyYXkuaCBcCi0gICAgRmxvYXQ2NEFycmF5
LmggXAogICAgIEZvcndhcmQuaCBcCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmggXAogICAgIEZ1
bmN0aW9uYWwuaCBcCkBAIC03OSw5ICs3NSw2IEBAIEhFQURFUlMgKz0gXAogICAgIEhhc2hUYWJs
ZS5oIFwKICAgICBIYXNoVHJhaXRzLmggXAogICAgIEhleE51bWJlci5oIFwKLSAgICBJbnQxNkFy
cmF5LmggXAotICAgIEludDMyQXJyYXkuaCBcCi0gICAgSW50OEFycmF5LmggXAogICAgIExpc3RI
YXNoU2V0LmggXAogICAgIExvY2tlci5oIFwKICAgICBNYWluVGhyZWFkLmggXApAQCAtMTYzLDEw
ICsxNTYsNiBAQCBIRUFERVJTICs9IFwKICAgICBUaHJlYWRTYWZlUmVmQ291bnRlZC5oIFwKICAg
ICBUaHJlYWRTcGVjaWZpYy5oIFwKICAgICBUeXBlVHJhaXRzLmggXAotICAgIFVpbnQxNkFycmF5
LmggXAotICAgIFVpbnQzMkFycmF5LmggXAotICAgIFVpbnQ4QXJyYXkuaCBcCi0gICAgVWludDhD
bGFtcGVkQXJyYXkuaCBcCiAgICAgdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oIFwKICAgICB1bmlj
b2RlL0NvbGxhdG9yLmggXAogICAgIHVuaWNvZGUvaWN1L1VuaWNvZGVJY3UuaCBcCkBAIC0xODQs
OCArMTczLDYgQEAgSEVBREVSUyArPSBcCiB1bml4OiBIRUFERVJTICs9IFRocmVhZElkZW50aWZp
ZXJEYXRhUHRocmVhZHMuaAogCiBTT1VSQ0VTICs9IFwKLSAgICBBcnJheUJ1ZmZlci5jcHAgXAot
ICAgIEFycmF5QnVmZmVyVmlldy5jcHAgXAogICAgIEFzc2VydGlvbnMuY3BwIFwKICAgICBBdG9t
aWNzLmNwcCBcCiAgICAgQml0VmVjdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dU
Ri52Y3hwcm9qL1dURi52Y3hwcm9qIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJv
agppbmRleCAzZjA1MDE5OWFhODNhM2MxMTc0Zjk5YmE4MmZkMWZkMmIxYmFkNTQ1Li5lNGY1YzU1
NmMyMDUzMDNmNGZhYjQ4ODU1MTVlNDZmNDdkOTJiNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RG
LnZjeHByb2oKQEAgLTUxLDggKzUxLDYgQEAKICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0K
ICAgPC9JdGVtR3JvdXA+DQogICA8SXRlbUdyb3VwPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHd0ZlxBcnJheUJ1ZmZlci5jcHAiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
d3RmXEFycmF5QnVmZmVyVmlldy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
d3RmXEFzc2VydGlvbnMuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxC
aXRWZWN0b3IuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxDb21waWxh
dGlvblRocmVhZC5jcHAiIC8+DQpAQCAtMTIyLDggKzEyMCw2IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcQ29tcGlsYXRpb25UaHJlYWQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxXVEZcY29uZmlnLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEFsaWdubWVudC5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBcnJh
eUJ1ZmZlci5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBcnJheUJ1ZmZl
clZpZXcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQVNDSUlDVHlwZS5o
IiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBc3NlcnRpb25zLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEF0b21pY3MuaCIgLz4NCkBAIC0xNjgsOCAr
MTY0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGZWF0dXJlRGVmaW5lcy5o
IiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGaWxlUHJpbnRTdHJlYW0uaCIg
Lz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRml4ZWRBcnJheS5oIiAvPg0KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGbG9hdDMyQXJyYXkuaCIgLz4NCi0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRmxvYXQ2NEFycmF5LmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXEZvcndhcmQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcRnVuY3Rpb25EaXNwYXRjaGVyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cd3RmXEZ1bmN0aW9uYWwuaCIgLz4NCkBAIC0xODMsOSArMTc3LDYgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxIYXNoVGFibGUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcSGFzaFRyYWl0cy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxIZXhOdW1iZXIuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
SW50MTZBcnJheS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxJbnQzMkFy
cmF5LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEludDhBcnJheS5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxMaXN0SGFzaFNldC5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxMb2NrZXIuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcTWFpblRocmVhZC5oIiAvPg0KQEAgLTI3MCw5ICsyNjEsNiBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRocmVhZHNwZWNpZmljLmgiIC8+DQogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRocmVhZHNcQmluYXJ5U2VtYXBob3JlLmgiIC8+
DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFR5cGVUcmFpdHMuaCIgLz4NCi0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDE2QXJyYXkuaCIgLz4NCi0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDMyQXJyYXkuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcVWludDhBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0Zlx1bmljb2RlXENoYXJhY3Rlck5hbWVzLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXHVuaWNvZGVcQ29sbGF0b3IuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlx3dGZcdW5pY29kZVxpY3VcVW5pY29kZUljdS5oIiAvPg0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RG
LnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwppbmRleCBhOTcxMDM1MzM2ZThmMTcwNmZhMWU2
ZTNjMzY3Mzc4NDc1MDY4YjZjLi44M2NmMDgxNDM1ODZlYTljOWE5ZWNmNmI1MWMwYTBmYjI3ZTFi
MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRl
cnMKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC05
NiwxMiArOTYsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHVuaWNvZGVcVVRG
OC5jcHAiPg0KICAgICAgIDxGaWx0ZXI+d3RmXHVuaWNvZGU8L0ZpbHRlcj4NCiAgICAgPC9DbENv
bXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXEFycmF5QnVmZmVyLmNwcCI+
DQotICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXEFycmF5QnVmZmVyVmlldy5jcHAiPg0KLSAgICAgIDxG
aWx0ZXI+d3RmPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHd0ZlxBc3NlcnRpb25zLmNwcCI+DQogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRl
cj4NCiAgICAgPC9DbENvbXBpbGU+DQpAQCAtMzM4LDEyICszMzIsNiBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXFdURlRocmVhZERhdGEuaCI+DQogICAgICAgPEZpbHRlcj53dGY8
L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEFycmF5QnVmZmVyLmgiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQotICAgIDwv
Q2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBcnJheUJ1ZmZlclZp
ZXcuaCI+DQotICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEFTQ0lJQ1R5cGUuaCI+DQogICAgICAgPEZp
bHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpAQCAtNDM3LDEyICs0MjUsNiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEZpeGVkQXJyYXkuaCI+DQogICAgICAg
PEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cd3RmXEZsb2F0MzJBcnJheS5oIj4NCi0gICAgICA8RmlsdGVyPnd0ZjwvRmls
dGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
RmxvYXQ2NEFycmF5LmgiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQotICAgIDwvQ2xJ
bmNsdWRlPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGb3J3YXJkLmgiPg0KICAg
ICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KQEAgLTQ3OSwxNSAr
NDYxLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxIZXhOdW1iZXIuaCI+DQog
ICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEludDE2QXJyYXkuaCI+DQotICAgICAgPEZpbHRlcj53dGY8
L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEludDMyQXJyYXkuaCI+DQotICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0gICAgPC9D
bEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEludDhBcnJheS5oIj4N
Ci0gICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcTGlzdEhhc2hTZXQuaCI+DQogICAgICAgPEZpbHRlcj53
dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpAQCAtNjgwLDE1ICs2NTMsNiBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFR5cGVUcmFpdHMuaCI+DQogICAgICAgPEZpbHRl
cj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cd3RmXFVpbnQxNkFycmF5LmgiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQot
ICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxVaW50MzJB
cnJheS5oIj4NCi0gICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4N
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDhBcnJheS5oIj4NCi0gICAgICA8
RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcVmFsdWVDaGVjay5oIj4NCiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVy
Pg0KICAgICA8L0NsSW5jbHVkZT4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhMmFmNjhmNWQwZjg1NDNhMTAyY2U4Mzk1YzhmNzA4M2NkODczY2Q4Li43NDkx
ZmZhMWZjOTg0NTE3OWRlODRlMTY4OTVjZTgxMzg1MTg0YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3LDEwICs2Nyw2IEBACiAJCUE3NDg3NDU0MTdB
MEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NDg3NDUxMTdBMEJEQUUwMEZBMDRDQiAv
KiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCAqLzsgfTsKIAkJQTg3NkRCRDgxNTE4MTZFNTAwREFE
Qjk1IC8qIFBsYXRmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLzsgfTsKIAkJ
QThBNDczN0YxNTFBODI1QjAwNDEyM0ZGIC8qIEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8q
IEFsaWdubWVudC5oICovOyB9OwotCQlBOEE0NzM4MTE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLzsgfTsKLQkJQThB
NDczODIxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1NzE1MUE4MjVBMDA0MTIzRkYgLyog
QXJyYXlCdWZmZXIuaCAqLzsgfTsKLQkJQThBNDczODMxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5
QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEE0NzI1ODE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLzsg
fTsKLQkJQThBNDczODQxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTkxNTFBODI1
QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oICovOyB9OwogCQlBOEE0NzM4NTE1MUE4MjVC
MDA0MTIzRkYgLyogQVNDSUlDVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDcyNUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCAq
LzsgfTsKIAkJQThBNDczODYxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNUIxNTFBODI1
QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwICovOyB9OwogCQlBOEE0NzM4NzE1MUE4MjVCMDA0
MTIzRkYgLyogQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLzsg
fTsKQEAgLTEyOCw4ICsxMjQsNiBAQAogCQlBOEE0NzNDMzE1MUE4MjVCMDA0MTIzRkYgLyogRmFz
dE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi87IH07CiAJCUE4
QTQ3M0M0MTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyog
RmFzdE1hbGxvYy5oICovOyB9OwogCQlBOEE0NzNDNTE1MUE4MjVCMDA0MTIzRkYgLyogRml4ZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThB
NDcyQTMxNTFBODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAqLzsgfTsKLQkJQThBNDczQzYx
NTFBODI1QjAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTQxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0
MzJBcnJheS5oICovOyB9OwotCQlBOEE0NzNDNzE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQ2NEFy
cmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0
NzJBNTE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCUE4QTQ3M0M4
MTUxQTgyNUIwMDQxMjNGRiAvKiBGb3J3YXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5o
ICovOyB9OwogCQlBOEE0NzNDOTE1MUE4MjVCMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTcxNTFBODI1
QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAqLzsgfTsKIAkJQThBNDczQ0ExNTFBODI1QjAwNDEy
M0ZGIC8qIEdldFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThBNDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdldFB0ci5oICovOyB9OwpAQCAtMTQz
LDEwICsxMzcsNiBAQAogCQlBOEE0NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQkEx
NTFBODI1QTAwNDEyM0ZGIC8qIEhhc2hUcmFpdHMuaCAqLzsgfTsKIAkJQThBNDczREIxNTFBODI1
QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDcyQkIxNTFBODI1QTAwNDEyM0ZGIC8qIEhleE51bWJlci5oICov
OyB9OwogCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyogSW5saW5lQVNNLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCQzE1MUE4MjVBMDA0
MTIzRkYgLyogSW5saW5lQVNNLmggKi87IH07Ci0JCUE4QTQ3M0REMTUxQTgyNUIwMDQxMjNGRiAv
KiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MkJEMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCAqLzsgfTsKLQkJQThB
NDczREUxNTFBODI1QjAwNDEyM0ZGIC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkJFMTUxQTgyNUEwMDQxMjNGRiAvKiBJ
bnQxNkFycmF5LmggKi87IH07Ci0JCUE4QTQ3M0RGMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQzMkFy
cmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0
NzJCRjE1MUE4MjVBMDA0MTIzRkYgLyogSW50MzJBcnJheS5oICovOyB9OwotCQlBOEE0NzNFMDE1
MUE4MjVCMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZG
IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLzsgfTsKIAkJQThBNDczRTExNTFBODI1QjAw
NDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzJDMTE1MUE4MjVBMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCAq
LzsgfTsKIAkJQThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQzMxNTFBODI1QTAwNDEy
M0ZGIC8qIExvY2tlci5oICovOyB9OwogCQlBOEE0NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFp
blRocmVhZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tICovOyB9OwpA
QCAtMjUwLDEzICsyNDAsOCBAQAogCQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5
U2VtYXBob3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzMzQjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggKi87IH07CiAJ
CUE4QTQ3NDU0MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczM0UxNTFBODI1
QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi87IH07CiAJCUE4QTQ3NDU1MTUx
QTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVh
ZFNwZWNpZmljLmggKi87IH07Ci0JCUE4QTQ3NDU3MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlZEFy
cmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDczNDExNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggKi87IH07CiAJCUE4
QTQ3NDU4MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQyMTUxQTgyNUIwMDQxMjNGRiAv
KiBUeXBlVHJhaXRzLmNwcCAqLzsgfTsKIAkJQThBNDc0NTkxNTFBODI1QjAwNDEyM0ZGIC8qIFR5
cGVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTQ3MzQzMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmggKi87IH07Ci0JCUE4QTQ3
NDVBMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0NDE1MUE4MjVCMDA0MTIzRkYgLyogVWlu
dDhBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1QjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFt
cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTQ3MzQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oICovOyB9Owot
CQlBOEE0NzQ1QzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ2MTUxQTgyNUIwMDQxMjNG
RiAvKiBVaW50MTZBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1RDE1MUE4MjVCMDA0MTIzRkYgLyog
VWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5oICovOyB9OwogCQlB
OEE0NzQ1RTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFtZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ5MTUxQTgyNUIwMDQxMjNG
RiAvKiBDaGFyYWN0ZXJOYW1lcy5oICovOyB9OwogCQlBOEE0NzQ1RjE1MUE4MjVCMDA0MTIzRkYg
LyogQ29sbGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MzRBMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvci5oICovOyB9OwogCQlBOEE0
NzQ2MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNG
RiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovOyB9OwpAQCAtMzQ5LDEwICszMzQsNiBAQAogCQlB
NzQ4NzQ1MTE3QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxh
dGZvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8qIEFs
aWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbm1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8q
IEFycmF5QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFy
cmF5QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTcxNTFB
ODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFycmF5QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3
MjU4MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJWaWV3LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTkxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVy
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNUExNTFBODI1QTAwNDEyM0ZG
IC8qIEFTQ0lJQ1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVNDSUlD
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzI1QjE1MUE4MjVBMDA0
MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBc3NlcnRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcy
NUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXNzZXJ0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDEzLDggKzM5NCw2IEBACiAJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9j
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYg
LyogRmFzdE1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0TWFs
bG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkEzMTUxQTgyNUEwMDQx
MjNGRiAvKiBGaXhlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
eGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQTQxNTFBODI1
QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGbG9hdDMyQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcy
QTUxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGbG9hdDY0QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRm9yd2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEE0NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MjgsMTAgKzQwNyw2IEBACiAJCUE4QTQ3MkJBMTUxQTgyNUEwMDQxMjNGRiAvKiBIYXNo
VHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQkIxNTFBODI1QTAwNDEyM0ZGIC8q
IEhleE51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZXhOdW1iZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQkMxNTFBODI1QTAwNDEyM0ZG
IC8qIElubGluZUFTTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVB
U00uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQkQxNTFBODI1QTAwNDEy
M0ZGIC8qIEludDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQ4
QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQkUxNTFBODI1QTAw
NDEyM0ZGIC8qIEludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50MTZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzJCRjE1MUE4
MjVBMDA0MTIzRkYgLyogSW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkMw
MTUxQTgyNUEwMDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVncmFsVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzExNTFBODI1QTAwNDEyM0ZGIC8qIExpc3RIYXNo
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RIYXNoU2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkMzMTUxQTgyNUEwMDQxMjNGRiAvKiBM
b2NrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9ja2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWlu
VGhyZWFkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWFp
blRocmVhZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNSwxMyArNTEw
LDggQEAKIAkJQThBNDczM0IxNTFBODI1QjAwNDEyM0ZGIC8qIEJpbmFyeVNlbWFwaG9yZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaW5hcnlTZW1hcGhvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczM0UxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVh
ZFNhZmVSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVh
ZFNhZmVSZWZDb3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzNG
MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUaHJlYWRTcGVjaWZpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBOEE0NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRBcnJheUJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNDIxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVRyYWl0cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzQzMTUxQTgyNUIwMDQxMjNGRiAv
KiBUeXBlVHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVUcmFp
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczNDQxNTFBODI1QjAwNDEy
M0ZGIC8qIFVpbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWlu
dDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM0NTE1MUE4MjVC
MDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVWludDhDbGFtcGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQThBNDczNDYxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE4QTQ3MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MzJBcnJheS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzM0OTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFt
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyTmFtZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNEExNTFBODI1QjAwNDEyM0ZGIC8q
IENvbGxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAv
KiBDb2xsYXRvckRlZmF1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sbGF0b3JEZWZhdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYy
NiwxMCArNTk2LDYgQEAKIAkJCQlBOEE0NzMzOTE1MUE4MjVCMDA0MTIzRkYgLyogdGhyZWFkcyAq
LywKIAkJCQlBOEE0NzM0ODE1MUE4MjVCMDA0MTIzRkYgLyogdW5pY29kZSAqLywKIAkJCQlBOEE0
NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi8sCi0JCQkJQThBNDcyNTYxNTFB
ODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLywKLQkJCQlBOEE0NzI1NzE1MUE4MjVB
MDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuaCAqLywKLQkJCQlBOEE0NzI1ODE1MUE4MjVBMDA0MTIz
RkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKLQkJCQlBOEE0NzI1OTE1MUE4MjVBMDA0MTIz
RkYgLyogQXJyYXlCdWZmZXJWaWV3LmggKi8sCiAJCQkJQThBNDcyNUExNTFBODI1QTAwNDEyM0ZG
IC8qIEFTQ0lJQ1R5cGUuaCAqLywKIAkJCQlBOEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyogQXNz
ZXJ0aW9ucy5jcHAgKi8sCiAJCQkJQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlv
bnMuaCAqLywKQEAgLTY4Miw4ICs2NDgsNiBAQAogCQkJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4
NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4
NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKIAkJCQlBOEE0NzJBMzE1MUE4MjVBMDA0MTIzRkYg
LyogRml4ZWRBcnJheS5oICovLAotCQkJCUE4QTQ3MkE0MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9h
dDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzJBNTE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFy
cmF5LmggKi8sCiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLywK
IAkJCQlBOEE0NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oICovLAogCQkJCTFB
MUQ4QjlEMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwICovLApAQCAt
NzAyLDEwICs2NjYsNiBAQAogCQkJCUE4QTQ3MkJCMTUxQTgyNUEwMDQxMjNGRiAvKiBIZXhOdW1i
ZXIuaCAqLywKIAkJCQlBOEE0NzJCQzE1MUE4MjVBMDA0MTIzRkYgLyogSW5saW5lQVNNLmggKi8s
CiAJCQkJQTcwREEwODIxNzk5RjA0RDAwNTI5QTlCIC8qIEluc2VydGlvbi5oICovLAotCQkJCUE4
QTQ3MkJFMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQxNkFycmF5LmggKi8sCi0JCQkJQThBNDcyQkYx
NTFBODI1QTAwNDEyM0ZGIC8qIEludDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzJCRDE1MUE4MjVB
MDA0MTIzRkYgLyogSW50OEFycmF5LmggKi8sCi0JCQkJQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZG
IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQlBNzBEQTA4MzE3OTlGMDREMDA1
MjlBOUIgLyogTGlzdER1bXAuaCAqLywKIAkJCQlBOEE0NzJDMTE1MUE4MjVBMDA0MTIzRkYgLyog
TGlzdEhhc2hTZXQuaCAqLywKIAkJCQlBNzM2QjM1ODE3OTlFMTFBMDBDNkYwNUUgLyogTExWTUhl
YWRlcnMuaCAqLywKQEAgLTgxNiwxMyArNzc2LDggQEAKIAkJCQlBOEE0NzMzRTE1MUE4MjVCMDA0
MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCAqLywKIAkJCQlBOEE0NzMzRjE1MUE4MjVC
MDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAw
QTQzMzEgLyogVHJpU3RhdGUuaCAqLywKLQkJCQlBOEE0NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyog
VHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQlBOEE0NzM0MjE1MUE4MjVCMDA0MTIzRkYgLyogVHlw
ZVRyYWl0cy5jcHAgKi8sCiAJCQkJQThBNDczNDMxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFp
dHMuaCAqLywKLQkJCQlBOEE0NzM0NjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCAq
LywKLQkJCQlBOEE0NzM0NzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCAqLywKLQkJ
CQlBOEE0NzM0NDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5oICovLAotCQkJCUE4QTQ3
MzQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJCUE4QTQ3
MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4
MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQx
MjNGRiAvKiBWZWN0b3IuaCAqLywKQEAgLTk0NSw4ICs5MDAsNiBAQAogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUE4QTQ3MzdGMTUxQTgyNUIwMDQx
MjNGRiAvKiBBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3MzgyMTUxQTgyNUIw
MDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDczODQxNTFB
ODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThB
NDczODUxNTFBODI1QjAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QTQ3NDM0MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzM4NzE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDA1LDggKzk1OCw2IEBACiAJCQkJMEY5RDMzNjExNjVEQkE3MzAwNUFEMzg3
IC8qIEZpbGVQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQjYxNTFBODI1
QjAwNDEyM0ZGIC8qIGZpeGVkLWR0b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0M1MTUx
QTgyNUIwMDQxMjNGRiAvKiBGaXhlZEFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzND
NjE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlB
OEE0NzNDNzE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNDODE1MUE4MjVCMDA0MTIzRkYgLyogRm9yd2FyZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczQzkxNTFBODI1QjAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMUQ4QjlDMTczMTg2Q0UwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTAyMiwxMSArOTczLDcgQEAKIAkJCQlBOEE0NzNEQjE1MUE4
MjVCMDA0MTIzRkYgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEQzE1
MUE4MjVCMDA0MTIzRkYgLyogSW5saW5lQVNNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4
NDE3OTlGMDREMDA1MjlBOUIgLyogSW5zZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0
NzNERTE1MUE4MjVCMDA0MTIzRkYgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QThBNDczREYxNTFBODI1QjAwNDEyM0ZGIC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAot
CQkJCUE4QTQ3M0REMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNFMDE1MUE4MjVCMDA0MTIzRkYgLyogSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwREEwODUxNzk5RjA0
RDAwNTI5QTlCIC8qIExpc3REdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFMTE1MUE4
MjVCMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Uz
MTUxQTgyNUIwMDQxMjNGRiAvKiBMb2NrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTExNywxMiAr
MTA2NCw3IEBACiAJCQkJQThBNDc0NTQxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZD
b3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NTE1MUE4MjVCMDA0MTIzRkYgLyog
VGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OUVGMTYzMTZCQkZFMEQwMDBB
NDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0NTcxNTFBODI1QjAw
NDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1OTE1
MUE4MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0
NUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlB
OEE0NzQ1RDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAot
CQkJCUE4QTQ3NDVBMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAq
LywKLQkJCQlBOEE0NzQ1QjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDY3MTUxQTgyNUIwMDQxMjNGRiAvKiBVbmljb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ2NDE1MUE4MjVCMDA0MTIzRkYgLyogVW5pY29kZUlj
dS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NjgxNTFBODI1QjAwNDEyM0ZGIC8qIFVuaWNv
ZGVNYWNyb3NGcm9tSUNVLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMDgsOCArMTE1MCw2IEBACiAJ
CQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlBOEE0NzM4MTE1MUE4MjVCMDA0MTIzRkYgLyogQXJy
YXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDczODMxNTFBODI1QjAwNDEyM0ZG
IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM4NjE1MUE4
MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQz
NTE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDViNTdmZTljNmZiY2EwNjY0ODg2ODdkY2E3MDA2YzI4MjMzMTI4NS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1
ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCi0KLSNpbmNsdWRlICJBcnJh
eUJ1ZmZlclZpZXcuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1ib29sIEFycmF5QnVmZmVyOjp0cmFuc2Zl
cihBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiA+JiBuZXV0ZXJlZFZpZXdzKQotewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2VlcEFs
aXZlKHRoaXMpOwotCi0gICAgaWYgKCFtX2NvbnRlbnRzLm1fZGF0YSkgewotICAgICAgICByZXN1
bHQubV9kYXRhID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wg
YWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gdHJ1ZTsKLSAgICBmb3IgKEFycmF5QnVmZmVyVmlldyog
aSA9IG1fZmlyc3RWaWV3OyBpOyBpID0gaS0+bV9uZXh0VmlldykgewotICAgICAgICBpZiAoIWkt
PmlzTmV1dGVyYWJsZSgpKQotICAgICAgICAgICAgYWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKGFsbFZpZXdzQXJlTmV1dGVyYWJsZSkKLSAgICAgICAgbV9j
b250ZW50cy50cmFuc2ZlcihyZXN1bHQpOwotICAgIGVsc2UgewotICAgICAgICBtX2NvbnRlbnRz
LmNvcHlUbyhyZXN1bHQpOwotICAgICAgICBpZiAoIXJlc3VsdC5tX2RhdGEpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgd2hpbGUgKG1fZmlyc3RWaWV3KSB7Ci0gICAg
ICAgIEFycmF5QnVmZmVyVmlldyogY3VycmVudCA9IG1fZmlyc3RWaWV3OwotICAgICAgICByZW1v
dmVWaWV3KGN1cnJlbnQpOwotICAgICAgICBpZiAoYWxsVmlld3NBcmVOZXV0ZXJhYmxlIHx8IGN1
cnJlbnQtPmlzTmV1dGVyYWJsZSgpKQotICAgICAgICAgICAgY3VycmVudC0+bmV1dGVyKCk7Ci0g
ICAgICAgIG5ldXRlcmVkVmlld3MuYXBwZW5kKGN1cnJlbnQpOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlcjo6YWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqIHZp
ZXcpCi17Ci0gICAgdmlldy0+bV9idWZmZXIgPSB0aGlzOwotICAgIHZpZXctPm1fcHJldlZpZXcg
PSAwOwotICAgIHZpZXctPm1fbmV4dFZpZXcgPSBtX2ZpcnN0VmlldzsKLSAgICBpZiAobV9maXJz
dFZpZXcpCi0gICAgICAgIG1fZmlyc3RWaWV3LT5tX3ByZXZWaWV3ID0gdmlldzsKLSAgICBtX2Zp
cnN0VmlldyA9IHZpZXc7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcoQXJyYXlC
dWZmZXJWaWV3KiB2aWV3KQotewotICAgIEFTU0VSVCh0aGlzID09IHZpZXctPm1fYnVmZmVyKTsK
LSAgICBpZiAodmlldy0+bV9uZXh0VmlldykKLSAgICAgICAgdmlldy0+bV9uZXh0Vmlldy0+bV9w
cmV2VmlldyA9IHZpZXctPm1fcHJldlZpZXc7Ci0gICAgaWYgKHZpZXctPm1fcHJldlZpZXcpCi0g
ICAgICAgIHZpZXctPm1fcHJldlZpZXctPm1fbmV4dFZpZXcgPSB2aWV3LT5tX25leHRWaWV3Owot
ICAgIGlmIChtX2ZpcnN0VmlldyA9PSB2aWV3KQotICAgICAgICBtX2ZpcnN0VmlldyA9IHZpZXct
Pm1fbmV4dFZpZXc7Ci0gICAgdmlldy0+bV9wcmV2VmlldyA9IHZpZXctPm1fbmV4dFZpZXcgPSAw
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oIGIvU291
cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
M2UwYTFiM2MzZTNkNjM1MTdjNjcyYWFkYWI3YTc3NzE2NDQwODg4MC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFy
cmF5QnVmZmVyX2gKLSNkZWZpbmUgQXJyYXlCdWZmZXJfaAotCi0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xh
c3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBBcnJheUJ1ZmZlclZpZXc7Ci0KLWNsYXNzIEFycmF5QnVm
ZmVyQ29udGVudHMgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVu
dHMpOwotcHVibGljOgotICAgIEFycmF5QnVmZmVyQ29udGVudHMoKSAKLSAgICAgICAgOiBtX2Rh
dGEoMCkKLSAgICAgICAgLCBtX3NpemVJbkJ5dGVzKDApCi0gICAgeyB9Ci0KLSAgICBpbmxpbmUg
fkFycmF5QnVmZmVyQ29udGVudHMoKTsKLQotICAgIHZvaWQqIGRhdGEoKSB7IHJldHVybiBtX2Rh
dGE7IH0KLSAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7
IH0KLQotcHJpdmF0ZToKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemVJbkJ5dGVzKSAKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3Np
emVJbkJ5dGVzKHNpemVJbkJ5dGVzKQotICAgIHsgfQotCi0gICAgZnJpZW5kIGNsYXNzIEFycmF5
QnVmZmVyOwotCi0gICAgZW51bSBJbml0aWFsaXphdGlvblBvbGljeSB7Ci0gICAgICAgIFplcm9J
bml0aWFsaXplLAotICAgICAgICBEb250SW5pdGlhbGl6ZQotICAgIH07Ci0KLSAgICBzdGF0aWMg
aW5saW5lIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMm
KTsKLSAgICB2b2lkIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOwotICAgICAgICBvdGhlci5tX2RhdGEgPSBt
X2RhdGE7Ci0gICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwotICAg
ICAgICBtX2RhdGEgPSAwOwotICAgICAgICBtX3NpemVJbkJ5dGVzID0gMDsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNvcHlUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCghb3RoZXIubV9kYXRhKTsKLSAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5
QWxsb2NhdGUobV9zaXplSW5CeXRlcywgc2l6ZW9mKGNoYXIpLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpEb250SW5pdGlhbGl6ZSwgb3RoZXIpOwotICAgICAgICBpZiAoIW90aGVyLm1fZGF0YSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbWVtY3B5KG90aGVyLm1fZGF0YSwgbV9kYXRhLCBt
X3NpemVJbkJ5dGVzKTsKLSAgICAgICAgb3RoZXIubV9zaXplSW5CeXRlcyA9IG1fc2l6ZUluQnl0
ZXM7Ci0gICAgfQotCi0gICAgdm9pZCogbV9kYXRhOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0
ZXM7Ci19OwotCi1jbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVm
ZmVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlC
dWZmZXIqKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMm
KTsKLQotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSk7Ci0KLSAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwotICAgIGlubGluZSBjb25zdCB2
b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25z
dDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4s
IGludCBlbmQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGlj
ZShpbnQgYmVnaW4pIGNvbnN0OwotCi0gICAgdm9pZCBhZGRWaWV3KEFycmF5QnVmZmVyVmlldyop
OwotICAgIHZvaWQgcmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKLQotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmLCBWZWN0b3I8UmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cyk7Ci0gICAgYm9vbCBpc05ldXRl
cmVkKCkgeyByZXR1cm4gIW1fY29udGVudHMubV9kYXRhOyB9Ci0KLSAgICB+QXJyYXlCdWZmZXIo
KSB7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0KLSAgICBpbmxp
bmUgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYpOwotICAgIGlubGluZSBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkg
Y29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25zdDsK
LSAgICBzdGF0aWMgaW5saW5lIGludCBjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50IHJp
Z2h0KTsKLQotICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250ZW50czsKLSAgICBBcnJheUJ1
ZmZlclZpZXcqIG1fZmlyc3RWaWV3OwotfTsKLQotaW50IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVl
KGludCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KQotewotICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0
KTsKLSAgICBpZiAoeCA8IGxlZnQpCi0gICAgICAgIHggPSBsZWZ0OwotICAgIGlmIChyaWdodCA8
IHgpCi0gICAgICAgIHggPSByaWdodDsKLSAgICByZXR1cm4geDsKLX0KLQotUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKQotewotICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMs
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwot
fQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVm
ZmVyKiBvdGhlcikKLXsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci0+ZGF0
YSgpLCBvdGhlci0+Ynl0ZUxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpCi17Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKLSAgICBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpaZXJvSW5pdGlhbGl6ZSwgY29udGVudHMpOwotICAgIGlmICghY29udGVudHMubV9kYXRhKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGFkb3B0
UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEo
KSwgc291cmNlLCBieXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2UoKTsKLX0K
LQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZl
ckNvbnRlbnRzJiBjb250ZW50cykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5QnVm
ZmVyKGNvbnRlbnRzKSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlh
bGl6YXRpb25Qb2xpY3kgcG9saWN5KQotewotICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVu
dHM7Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgcG9saWN5LCBjb250ZW50cyk7Ci0gICAgaWYgKCFjb250ZW50cy5tX2Rh
dGEpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXlCdWZm
ZXIoY29udGVudHMpKTsKLX0KLQotQXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVy
Q29udGVudHMmIGNvbnRlbnRzKQotICAgIDogbV9maXJzdFZpZXcoMCkKLXsKLSAgICBjb250ZW50
cy50cmFuc2ZlcihtX2NvbnRlbnRzKTsKLX0KLQotdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKQot
ewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKLX0KLQotY29uc3Qgdm9pZCogQXJyYXlC
dWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKLX0K
LQotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAotewotICAgIHJldHVy
biBtX2NvbnRlbnRzLm1fc2l6ZUluQnl0ZXM7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpzbGljZShpbnQgYmVnaW4sIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJbmRleChlbmQpKTsKLX0KLQot
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGludCBiZWdpbikgY29u
c3QKLXsKLSAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwotfQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBs
KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgc2l6
ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKLSAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXpl
KTsKLX0KLQotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25z
dAotewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7Ci0gICAgaWYg
KGluZGV4IDwgMCkKLSAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7Ci0gICAg
cmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwotfQotCi12b2lkIEFy
cmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9u
UG9saWN5IHBvbGljeSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVzdWx0KQotewotICAgIC8vIERv
IG5vdCBhbGxvdyAzMi1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgLy8gRklY
TUU6IFdoeSBub3Q/IFRoZSB0cnlGYXN0Q2FsbG9jIGZ1bmN0aW9uIGFscmVhZHkgY2hlY2tzIGl0
cyBhcmd1bWVudHMsCi0gICAgLy8gYW5kIHdpbGwgZmFpbCBpZiB0aGVyZSBpcyBhbnkgb3ZlcmZs
b3csIHNvIHdoeSBzaG91bGQgd2UgaW5jbHVkZSBhCi0gICAgLy8gcmVkdWRhbnQgdW5uZWNlc3Nh
cmlseSByZXN0cmljdGl2ZSBjaGVjayBoZXJlPwotICAgIGlmIChudW1FbGVtZW50cykgewotICAg
ICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsK
LSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSkg
ewotICAgICAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VlZGVkID0gZmFsc2U7Ci0g
ICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKLSAgICAgICAgYWxsb2NhdGlvblN1Y2Nl
ZWRlZCA9IFdURjo6dHJ5RmFzdENhbGxvYyhudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKS5n
ZXRWYWx1ZShyZXN1bHQubV9kYXRhKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHBvbGlj
eSA9PSBEb250SW5pdGlhbGl6ZSk7Ci0gICAgICAgIGFsbG9jYXRpb25TdWNjZWVkZWQgPSBXVEY6
OnRyeUZhc3RNYWxsb2MobnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemUpLmdldFZhbHVlKHJl
c3VsdC5tX2RhdGEpOwotICAgIH0KLQotICAgIGlmIChhbGxvY2F0aW9uU3VjY2VlZGVkKSB7Ci0g
ICAgICAgIHJlc3VsdC5tX3NpemVJbkJ5dGVzID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNp
emU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci19Ci0K
LUFycmF5QnVmZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRlbnRzKCkKLXsKLSAgICBXVEY6
OmZhc3RGcmVlKG1fZGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OkFycmF5QnVmZmVyOwotCi0jZW5kaWYgLy8gQXJyYXlCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVm
ZmVyVmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmIzYTJlNDE3ZmRk
ZjE0YmZkMjEyMDhkMDg1YTYyNTVkMzVlNDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5o
IgotCi1uYW1lc3BhY2UgV1RGIHsKLQotQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXco
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0KQotICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQot
ICAgICAgICAsIG1faXNOZXV0ZXJhYmxlKHRydWUpCi0gICAgICAgICwgbV9idWZmZXIoYnVmZmVy
KQotICAgICAgICAsIG1fcHJldlZpZXcoMCkKLSAgICAgICAgLCBtX25leHRWaWV3KDApCi17Ci0g
ICAgbV9iYXNlQWRkcmVzcyA9IG1fYnVmZmVyID8gKHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZl
ci0+ZGF0YSgpKSArIG1fYnl0ZU9mZnNldCkgOiAwOwotICAgIGlmIChtX2J1ZmZlcikgCi0gICAg
ICAgIG1fYnVmZmVyLT5hZGRWaWV3KHRoaXMpOwotfQotCi1BcnJheUJ1ZmZlclZpZXc6On5BcnJh
eUJ1ZmZlclZpZXcoKQotewotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXItPnJl
bW92ZVZpZXcodGhpcyk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKQotewot
ICAgIG1fYnVmZmVyID0gMDsKLSAgICBtX2J5dGVPZmZzZXQgPSAwOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL0Fy
cmF5QnVmZmVyVmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjcwOGZiZGZm
YWI5MWQ2ZjU2NDBiMWZkN2RlZjQxZTYzMDk2MTBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFycmF5QnVm
ZmVyVmlld19oCi0jZGVmaW5lIEFycmF5QnVmZmVyVmlld19oCi0KLSNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXIuaD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHMuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJy
YXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7Ci0gIHB1
YmxpYzoKLSAgICBlbnVtIFZpZXdUeXBlIHsKLSAgICAgICAgVHlwZUludDgsCi0gICAgICAgIFR5
cGVVaW50OCwKLSAgICAgICAgVHlwZVVpbnQ4Q2xhbXBlZCwKLSAgICAgICAgVHlwZUludDE2LAot
ICAgICAgICBUeXBlVWludDE2LAotICAgICAgICBUeXBlSW50MzIsCi0gICAgICAgIFR5cGVVaW50
MzIsCi0gICAgICAgIFR5cGVGbG9hdDMyLAotICAgICAgICBUeXBlRmxvYXQ2NCwKLSAgICAgICAg
VHlwZURhdGFWaWV3Ci0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25z
dCA9IDA7Ci0KLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyOwotICAgIH0KLQotICAgIHZvaWQqIGJhc2VBZGRy
ZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzOwotICAgIH0K
LQotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYnl0ZU9mZnNldDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgo
KSBjb25zdCA9IDA7Ci0KLSAgICB2b2lkIHNldE5ldXRlcmFibGUoYm9vbCBmbGFnKSB7IG1faXNO
ZXV0ZXJhYmxlID0gZmxhZzsgfQotICAgIGJvb2wgaXNOZXV0ZXJhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc05ldXRlcmFibGU7IH0KLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5B
cnJheUJ1ZmZlclZpZXcoKTsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCk7Ci0KLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2ln
bmVkIGJ5dGVPZmZzZXQpOwotCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0K
LSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVf
dCByYW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9m
ZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQqIG9mZnNldCwg
dW5zaWduZWQqIGxlbmd0aCk7Ci0KLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZl
biBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2Uo
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbnVtRWxlbWVudHMpCi0gICAgewotICAgICAgICBpZiAoIWJ1ZmZlcikKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHNpemVvZihUKSA+IDEgJiYgYnl0
ZU9mZnNldCAlIHNpemVvZihUKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
aWYgKGJ5dGVPZmZzZXQgPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLT5i
eXRlTGVuZ3RoKCkgLSBieXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKLSAgICAgICAgaWYgKG51bUVs
ZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBu
dW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKLSAgICAvLyBvdXRwdXQg
b2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidz
IHZpZXcuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xhbXBP
ZmZzZXRBbmROdW1FbGVtZW50cyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVP
ZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCAqb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgKm51bUVsZW1lbnRzKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0g
KFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKLSAgICAgICAgaWYgKCpv
ZmZzZXQgPiBtYXhPZmZzZXQpIHsKLSAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXItPmJ5dGVM
ZW5ndGgoKTsKLSAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZz
ZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXItPmJ5dGVM
ZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0g
KGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7Ci0gICAgICAgICpu
dW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwot
ICAgIH0KLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7Ci0K
LSAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2Us
IHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgotICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7Ci0KLSAgICB1
bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKLSAgICBib29sIG1faXNOZXV0ZXJhYmxlIDogMTsK
LQotICBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKLSAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwotICAgIEFycmF5QnVmZmVyVmlldyogbV9wcmV2VmlldzsK
LSAgICBBcnJheUJ1ZmZlclZpZXcqIG1fbmV4dFZpZXc7Ci19OwotCi1ib29sIEFycmF5QnVmZmVy
Vmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0
KQotewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVP
ZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAv
LyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgCi0gICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRk
cmVzcygpKTsKLSAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJl
c3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRh
dGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQotewotICAgIGlmIChieXRlT2Zmc2V0
ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBi
eXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNlID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOwotICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVP
ZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6
ZV90IHJhbmdlQnl0ZUxlbmd0aCkKLXsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgo
KQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7
Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGJhc2VBZGRyZXNzKCkpOwotICAgIG1lbXNldChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFu
Z2VCeXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlclZp
ZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVk
IGFycmF5U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQg
PCAwKQotICAgICAgICBzdGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAg
ICAgICAgc3RhcnQgPSAwOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlT
aXplOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXpl
OwotICAgIGlmIChlbmQgPCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNl
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11
c2luZyBXVEY6OkFycmF5QnVmZmVyVmlldzsKLQotI2VuZGlmIC8vIEFycmF5QnVmZmVyVmlld19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGM2MTM3MzZhYjVjMTVlNzljZmE5MTE1NDExNTM5NGRl
OTgxZjU4MTAuLjA4NjBlZTlhNjU1MDIwMGYyNTVhYTdjYjY3ZTRlMmJkZDNhNDgwNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0xNDUsOCArMTQ1LDYgQEAgc2V0KFdURl9IRUFERVJTCiApCiAK
IHNldChXVEZfU09VUkNFUwotICAgIEFycmF5QnVmZmVyLmNwcAotICAgIEFycmF5QnVmZmVyVmll
dy5jcHAKICAgICBBc3NlcnRpb25zLmNwcAogICAgIEF0b21pY3MuY3BwCiAgICAgQml0VmVjdG9y
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmxvYXQzMkFycmF5LmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GbG9hdDMyQXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY3
MmEwYWZmNjMyNjFhNTAzNmFhMjU3ZWUyMWE4NzU5NmE4NDQ2My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXku
aAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZsb2F0
MzJBcnJheV9oCi0jZGVmaW5lIEZsb2F0MzJBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvVHlwZWRB
cnJheUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotY2xhc3MgRmxvYXQzMkFycmF5IDogcHVibGljIFR5cGVkQXJyYXlCYXNlPGZsb2F0PiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0
MzJBcnJheT4gY3JlYXRlKGNvbnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0K
LSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBh
cnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMg
ZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpzZXQ7Ci0K
LSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6bV9sZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6ZGF0YSgpW2luZGV4
XSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSk7Ci0gICAgfQotCi0gICAgaW5saW5lIFBhc3NS
ZWZQdHI8RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGlu
ZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gVHlwZUZsb2F0MzI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBG
bG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAg
ZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGZsb2F0PjsKLX07Ci0KLVBhc3NSZWZQdHI8Rmxv
YXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAg
cmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZsb2F0MzJBcnJheT4obGVuZ3Ro
KTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlKGNv
bnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQot
Ci1QYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZsb2F0MzJB
cnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0
MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGVVbmluaXRpYWxp
emVkPEZsb2F0MzJBcnJheT4obGVuZ3RoKTsKLX0KLQotRmxvYXQzMkFycmF5OjpGbG9hdDMyQXJy
YXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBUeXBlZEFycmF5QmFzZTxmbG9hdD4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMy
QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXko
c3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBz
dWJhcnJheUltcGw8RmxvYXQzMkFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCi0KLXVzaW5nIFdURjo6RmxvYXQzMkFycmF5OwotCi0jZW5kaWYgLy8gRmxvYXQzMkFy
cmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zsb2F0NjRBcnJheS5oIGIvU291cmNl
L1dURi93dGYvRmxvYXQ2NEFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNh
OTMwY2UwMDhlOWZkODZiNDljYjNlYjk0ZjQ4MzRkMjZlMjc4ZGIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZsb2F0
NjRBcnJheV9oCi0jZGVmaW5lIEZsb2F0NjRBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvVHlwZWRB
cnJheUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotY2xhc3MgRmxvYXQ2NEFycmF5IDogcHVibGljIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4g
ewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9h
dDY0QXJyYXk+IGNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
LQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJl
IGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0
cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpzZXQ7
Ci0KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAg
ICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46Om1fbGVuZ3RoKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpkYXRhKClb
aW5kZXhdID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Ci0gICAgfQotCi0gICAgaW5saW5l
IFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAg
IGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gVHlwZUZsb2F0NjQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlu
bGluZSBGbG9hdDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAg
ZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT47Ci19OwotCi1QYXNzUmVmUHRyPEZs
b2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewotICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5PihsZW5n
dGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUo
Y29uc3QgZG91YmxlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBl
ZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5PihhcnJheSwgbGVuZ3RoKTsK
LX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8Rmxv
YXQ2NEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8
RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGVVbmlu
aXRpYWxpemVkPEZsb2F0NjRBcnJheT4obGVuZ3RoKTsKLX0KLQotRmxvYXQ2NEFycmF5OjpGbG9h
dDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBUeXBlZEFycmF5QmFzZTxkb3VibGU+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4g
RmxvYXQ2NEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1
YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBG
bG9hdDY0QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3ViYXJyYXlJbXBsPEZsb2F0NjRBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkZsb2F0NjRBcnJheTsKLQotI2VuZGlmIC8vIEZs
b2F0NjRBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggODJjMmUxODFhYzYyZTQ3NzgxMzJhMDM5MjcwMWFi
MTlhNDNjMjliYy4uMmE0NzUwM2NiYzM0MDAzZWIwN2U0OWMzYmU2ZDRjOWNjNDU5YzQ4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zv
cndhcmQuaApAQCAtMzMsMzAgKzMzLDE5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y2xhc3MgUmVmUHRyOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBjbGFzcyBWZWN0b3I7Ci0gICAgCi0gICAg
Y2xhc3MgQXJyYXlCdWZmZXI7Ci0gICAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworCiAgICAgY2xh
c3MgQXRvbWljU3RyaW5nOwogICAgIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CiAgICAgY2xhc3Mg
QmluYXJ5U2VtYXBob3JlOwogICAgIGNsYXNzIENTdHJpbmc7CiAgICAgY2xhc3MgRGVjb2RlcjsK
ICAgICBjbGFzcyBFbmNvZGVyOwotICAgIGNsYXNzIEZsb2F0MzJBcnJheTsKLSAgICBjbGFzcyBG
bG9hdDY0QXJyYXk7CiAgICAgY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyOwotICAgIGNsYXNzIElu
dDhBcnJheTsKLSAgICBjbGFzcyBJbnQxNkFycmF5OwotICAgIGNsYXNzIEludDMyQXJyYXk7CiAg
ICAgY2xhc3MgUHJpbnRTdHJlYW07CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiAgICAgY2xhc3MgU3RyaW5nQnVpbGRlcjsK
ICAgICBjbGFzcyBTdHJpbmdJbXBsOwotICAgIGNsYXNzIFVpbnQ4QXJyYXk7Ci0gICAgY2xhc3Mg
VWludDhDbGFtcGVkQXJyYXk7Ci0gICAgY2xhc3MgVWludDE2QXJyYXk7Ci0gICAgY2xhc3MgVWlu
dDMyQXJyYXk7CiB9CiAKIHVzaW5nIFdURjo6RnVuY3Rpb247CkBAIC02OCwyOCArNTcsMTcgQEAg
dXNpbmcgV1RGOjpQYXNzUmVmUHRyOwogdXNpbmcgV1RGOjpSZWZQdHI7CiB1c2luZyBXVEY6OlZl
Y3RvcjsKIAotdXNpbmcgV1RGOjpBcnJheUJ1ZmZlcjsKLXVzaW5nIFdURjo6QXJyYXlCdWZmZXJW
aWV3OwogdXNpbmcgV1RGOjpBdG9taWNTdHJpbmc7CiB1c2luZyBXVEY6OkF0b21pY1N0cmluZ0lt
cGw7CiB1c2luZyBXVEY6OkJpbmFyeVNlbWFwaG9yZTsKIHVzaW5nIFdURjo6Q1N0cmluZzsKIHVz
aW5nIFdURjo6RW5jb2RlcjsKIHVzaW5nIFdURjo6RGVjb2RlcjsKLXVzaW5nIFdURjo6RmxvYXQz
MkFycmF5OwotdXNpbmcgV1RGOjpGbG9hdDY0QXJyYXk7CiB1c2luZyBXVEY6OkZ1bmN0aW9uRGlz
cGF0Y2hlcjsKLXVzaW5nIFdURjo6SW50OEFycmF5OwotdXNpbmcgV1RGOjpJbnQxNkFycmF5Owot
dXNpbmcgV1RGOjpJbnQzMkFycmF5OwogdXNpbmcgV1RGOjpQcmludFN0cmVhbTsKIHVzaW5nIFdU
Rjo6U3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1c2luZyBXVEY6OlN0cmluZ0J1
aWxkZXI7CiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7Ci11c2luZyBXVEY6OlVpbnQ4QXJyYXk7Ci11
c2luZyBXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OwotdXNpbmcgV1RGOjpVaW50MTZBcnJheTsKLXVz
aW5nIFdURjo6VWludDMyQXJyYXk7CiAKICNlbmRpZiAvLyBXVEZfRm9yd2FyZF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxNkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQxNkFy
cmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNWE1NzlhNzI4MWJhOGZmYjNm
OTgxYTJlMDg0ZTJkZjVjNTQ4NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEludDE2QXJyYXlfaAotI2RlZmluZSBJ
bnQxNkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgSW50MTZBcnJh
eSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHNob3J0PiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGUoY29u
c3Qgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBi
ZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4g
RG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlw
dCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPElu
dDE2QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVz
aW5nIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6c2V0OwotICAgIHVzaW5nIEludGVncmFsVHlwZWRB
cnJheUJhc2U8c2hvcnQ+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDE2
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFs
IFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQx
NjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEludDE2QXJyYXkoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0g
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1
Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlC
YXNlPHNob3J0PjsKLX07Ci0KLVBhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2hvcnQ+
OjpjcmVhdGU8SW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQxNkFycmF5
PiBJbnQxNkFycmF5OjpjcmVhdGUoY29uc3Qgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
Ci17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6Y3JlYXRlPEludDE2QXJyYXk+
KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6
OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2hvcnQ+
OjpjcmVhdGU8SW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1Q
YXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaG9ydD46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQ8SW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotSW50MTZBcnJheTo6SW50
MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8c2hvcnQ+
KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPEludDE2QXJy
YXk+IEludDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJ
bnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHN1YmFycmF5SW1wbDxJbnQxNkFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6SW50MTZBcnJheTsKLQotI2VuZGlmIC8vIEludDE2QXJy
YXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50MzJBcnJheS5oIGIvU291cmNlL1dU
Ri93dGYvSW50MzJBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWE5OTc4
MDlhMjkzZWZkZmJlZDk4NzA3Nzc2NDhjZWRjNDgxYzAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludDMyQXJyYXkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEludDMyQXJyYXlf
aAotI2RlZmluZSBJbnQzMkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBJbnQzMkFycmF5IDogcHVibGlj
IEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgaW50KiBhcnJh
eSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJB
cnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0
IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90
IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxs
aW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5
QmFzZTxpbnQ+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ+Ojpz
ZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3Rh
cnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IHN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgaW5saW5lIEludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJj
bGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8aW50PjsKLX07Ci0KLVBhc3NS
ZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsK
LSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGxlbmd0
aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKGNvbnN0
IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVm
UHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJbnQzMkFycmF5PihsZW5ndGgp
OwotfQotCi1JbnQzMkFycmF5OjpJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTxpbnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQot
Ci1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFz
c1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQzMkFycmF5PihzdGFydCwg
ZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6SW50MzJBcnJheTsK
LQotI2VuZGlmIC8vIEludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50
OEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjI5ZDJkOWFhYmEzMjI1ZTY0OTY4Y2NhMDQ0MDQwMWUwOTczMzYzYS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9JbnQ4QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aWZuZGVmIEludDhBcnJheV9oCi0jZGVmaW5lIEludDhBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYv
SW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJy
YXlCdWZmZXI7Ci0KLWNsYXNzIEludDhBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlPHNpZ25lZCBjaGFyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEludDhBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlKGNvbnN0IHNpZ25lZCBjaGFyKiBhcnJheSwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBj
cmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25v
d24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJu
IHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmly
c3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8c2ln
bmVkIGNoYXI+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaWduZWQg
Y2hhcj46OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IHN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdl
dFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQ4OwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBpbmxpbmUgSW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAot
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8g
c3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+
OwotfTsKLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKHVuc2lnbmVk
IGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+OjpjcmVh
dGU8SW50OEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFy
cmF5OjpjcmVhdGUoY29uc3Qgc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17
Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPjo6Y3JlYXRlPEludDhBcnJh
eT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6
OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2lnbmVk
IGNoYXI+OjpjcmVhdGU8SW50OEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19
Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hh
cj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50OEFycmF5PihsZW5ndGgpOwotfQotCi1JbnQ4QXJy
YXk6OkludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8
c2lnbmVkIGNoYXI+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVm
UHRyPEludDhBcnJheT4gSW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50
OEFycmF5PiBJbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDhBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkludDhBcnJheTsKLQotI2VuZGlmIC8vIElu
dDhBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYWYxNGNhYjUxMzMzYjA2YjIzNWMyNzZjYWZkMmQ5MTRh
NjhjMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCi0j
ZGVmaW5lIEludGVncmFsVHlwZWRBcnJheUJhc2VfaAotCi0jaW5jbHVkZSA8d3RmL1R5cGVkQXJy
YXlCYXNlLmg+Ci0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIGFsbCBXZWJHTDxUPkFycmF5IHR5cGVzIGhvbGRpbmcgaW50
ZWdyYWwKLS8vIChub24tZmxvYXRpbmctcG9pbnQpIHZhbHVlcy4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgSW50ZWdyYWxUeXBlZEFycmF5QmFzZSA6
IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxUPiB7Ci0gIHB1YmxpYzoKLSAgICB2b2lkIHNldCh1bnNp
Z25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5
cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
aWYgKHN0ZDo6aXNuYW4odmFsdWUpKSAvLyBDbGFtcCBOYU4gdG8gMAotICAgICAgICAgICAgdmFs
dWUgPSAwOwotICAgICAgICAvLyBUaGUgZG91YmxlIGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGdldCB0
aGUgY29ycmVjdCB3cmFwcGluZwotICAgICAgICAvLyBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcyB3
aXRoIEludDMyQXJyYXkgYW5kIFVpbnQzMkFycmF5LgotICAgICAgICBUeXBlZEFycmF5QmFzZTxU
Pjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0PFQ+KHN0YXRpY19jYXN0PGludDY0X3Q+KHZh
bHVlKSk7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQotICAgICAgICA6IFR5cGVkQXJyYXlCYXNlPFQ+KGJ1ZmZlciwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKQotICAgIHsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQot
dXNpbmcgV1RGOjpJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlOwotCi0jZW5kaWYgLy8gSW50ZWdyYWxU
eXBlZEFycmF5QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFz
ZS5oIGIvU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWRlODI0ZmE4MmM3YmFiOWM3ZjJlNTEyZDdkM2I2YzU2NDE0NTJkYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9UeXBlZEFycmF5QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaWZuZGVmIFR5cGVkQXJyYXlCYXNlX2gKLSNkZWZpbmUgVHlwZWRBcnJheUJhc2VfaAot
Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Vmlldy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewotICBwdWJsaWM6Ci0g
ICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihiYXNlQWRkcmVzcygp
KTsgfQotCi0gICAgYm9vbCBzZXQoVHlwZWRBcnJheUJhc2U8VD4qIGFycmF5LCB1bnNpZ25lZCBv
ZmZzZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6
ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBib29sIHNldFJhbmdlKGNvbnN0IFQqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0
UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBkYXRhTGVuZ3Ro
ICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBzaXplb2YoVCkpOwotICAgIH0KLQotICAgIGJvb2wgemVy
b1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAqIHNpemVvZihUKSwgbGVuZ3RoICogc2l6ZW9mKFQp
KTsKLSAgICB9Ci0KLSAgICAvLyBPdmVycmlkZGVuIGZyb20gQXJyYXlCdWZmZXJWaWV3LiBUaGlz
IG11c3QgYmUgcHVibGljIGJlY2F1c2Ugb2YKLSAgICAvLyBydWxlcyBhYm91dCBpbmhlcml0YW5j
ZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRlIGNsYXNzZXMsIGFuZAotICAgIC8vIGJlY2F1c2UgaXQg
aXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJzIHRvIHN1YmNsYXNzZXMuCi0gICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlbmd0aDsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQpOwotICAgIH0KLQotICAgIC8vIEludm9rZWQgYnkgdGhl
IGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5vdCBwZXJmb3JtIHJhbmdlIGNoZWNrczsgY2FsbGVyCi0g
ICAgLy8gaXMgcmVzcG9uc2libGUgZm9yIGRvaW5nIHNvIGFuZCByZXR1cm5pbmcgdW5kZWZpbmVk
IGFzIG5lY2Vzc2FyeS4KLSAgICBUIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IFR5cGVkQXJy
YXlCYXNlPFQ+OjptX2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6
ZGF0YSgpW2luZGV4XTsKLSAgICB9Ci0KLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3MpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG9m
ZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3Ro
Ci0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsg
cG9zID49IG9mZnNldCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVHlwZWRBcnJheUJhc2Uo
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCi0gICAgICAgIDogQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNl
dCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBs
YXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAg
IGlmICghYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVy
biBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNy
ZWF0ZShjb25zdCBUKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgUmVm
UHRyPFN1YmNsYXNzPiBhID0gY3JlYXRlPFN1YmNsYXNzPihsZW5ndGgpOwotICAgICAgICBpZiAo
YSkKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgICAgICBhLT5zZXQoaSwgYXJyYXlbaV0pOwotICAgICAgICByZXR1cm4gYTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3ViY2xhc3M+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWYoYnVmZmVyKTsKLSAgICAgICAg
aWYgKCF2ZXJpZnlTdWJSYW5nZTxUPihidWYsIGJ5dGVPZmZzZXQsIGxlbmd0aCkpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKLQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1YmNsYXNzKGJ1
ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1
YmNsYXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2Yo
VCkpOwotICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0aCk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIFBhc3NSZWZQdHI8U3ViY2xh
c3M+IHN1YmFycmF5SW1wbChpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci0gICAgewotICAgICAg
ICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICAgICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVu
Z3RoKHN0YXJ0LCBlbmQsIG1fbGVuZ3RoLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICAgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxUPihidWZmZXIoKSwgbV9ieXRlT2Zmc2V0LCAmb2Zmc2V0
LCAmbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVyKCksIG9m
ZnNldCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbmV1dGVyKCkKLSAgICB7
Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKCk7Ci0gICAgICAgIG1fbGVuZ3RoID0g
MDsKLSAgICB9Ci0KLSAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBoYXZlIHRvIGFjY2VzcyB0aGlz
IHZpYSBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gc3ViY2xhc3NlcywKLSAgICAvLyB3aGljaCBpcyB3
aHkgaXQgaXMgcHJvdGVjdGVkIHJhdGhlciB0aGFuIHByaXZhdGUuCi0gICAgdW5zaWduZWQgbV9s
ZW5ndGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpUeXBlZEFycmF5
QmFzZTsKLQotI2VuZGlmIC8vIFR5cGVkQXJyYXlCYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1VpbnQxNkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50MTZBcnJheS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2Y1ZjljOTlkNGE4ZmYyOGI3YzU4NjBhNDQwOWRl
N2VhNTllMmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVaW50MTZBcnJheV9oCi0jZGVmaW5lIFVpbnQxNkFycmF5
X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFj
ZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDE2QXJyYXkgOiBwdWJs
aWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD4gewotcHVibGljOgotICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBjcmVhdGUo
Y29uc3QgdW5zaWduZWQgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8g
U2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2ls
bCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5
IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+OjpzZXQ7Ci0g
ICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OnNldDsKLQot
ICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNv
bnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3Rh
cnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlVWludDE2OwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBpbmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2UgY29uc3RydWN0b3Ig
dmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBzaG9ydD47Ci19OwotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJh
eTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8
dW5zaWduZWQgc2hvcnQ+OjpjcmVhdGU8VWludDE2QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NS
ZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUoY29uc3QgdW5zaWduZWQgc2hv
cnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVuc2lnbmVkIHNob3J0Pjo6Y3JlYXRlPFVpbnQxNkFycmF5PihhcnJheSwgbGVuZ3RoKTsKLX0K
LQotUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+OjpjcmVhdGU8
VWludDE2QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0
cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDE2QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVVpbnQxNkFycmF5
OjpVaW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8
dW5zaWduZWQgc2hvcnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNz
UmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25z
dAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVm
UHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5k
KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDE2QXJyYXk+KHN0YXJ0LCBl
bmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpVaW50MTZBcnJheTsK
LQotI2VuZGlmIC8vIFVpbnQxNkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Vp
bnQzMkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50MzJBcnJheS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxYmFkZjZiZmMxOTUxMDZhOGI4NzcxNDAzZjc5MGQ4MmNjMTNlZGI3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VpbnQzMkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2lmbmRlZiBVaW50MzJBcnJheV9oCi0jZGVmaW5lIFVpbnQzMkFycmF5X2gKLQotI2lu
Y2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewot
Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDMyQXJyYXkgOiBwdWJsaWMgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKGNvbnN0IHVuc2ln
bmVkIGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBi
ZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4g
RG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlw
dCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVp
bnQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1
c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZD46OnNldDsKLSAgICB1c2luZyBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlPHVuc2lnbmVkPjo6c2V0OwotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8VWlu
dDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQ
dHI8VWludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAg
ICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IFR5cGVVaW50MzI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBVaW50MzJBcnJheShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBm
cmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50PjsKLX07Ci0KLVBhc3NSZWZQ
dHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewot
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGU8VWludDMyQXJy
YXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5Ojpj
cmVhdGUoY29uc3QgdW5zaWduZWQgaW50KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGU8VWludDMyQXJyYXk+
KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJh
eTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNp
Z25lZCBpbnQ+OjpjcmVhdGU8VWludDMyQXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBpbnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQzMkFycmF5PihsZW5ndGgpOwot
fQotCi1VaW50MzJBcnJheTo6VWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
Ci17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpzdWJhcnJheShp
bnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7
Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50MzJB
cnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OlVpbnQzMkFycmF5OwotCi0jZW5kaWYgLy8gVWludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVWludDhBcnJheS5oIGIvU291cmNlL1dURi93dGYvVWludDhBcnJheS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2FmMDU0NzY2NWI0ODg4N2E4OWQzYTRkMmU4
NzRlZmJhOTNjOGI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVpbnQ4QXJyYXlfaAotI2RlZmluZSBVaW50OEFycmF5
X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFj
ZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDhBcnJheSA6IHB1Ymxp
YyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZShjb25z
dCB1bnNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBm
aWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEph
dmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0K
LSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6c2V0OwotICAgIHVzaW5n
IEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OnNldDsKLQotICAgIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAg
aW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5k
KSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gVHlwZVVpbnQ4OwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIGlubGlu
ZSBVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1
cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+
OwotfTsKLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6
Y3JlYXRlPFVpbnQ4QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4g
VWludDhBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBs
ZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVh
dGU8VWludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJh
eT4gVWludDhBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4QXJyYXk+KGJ1ZmZlciwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRB
cnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDhBcnJheT4o
bGVuZ3RoKTsKLX0KLQotVWludDhBcnJheTo6VWludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLTogSW50
ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxl
bmd0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgo
KSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6c3ViYXJyYXkoaW50
IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDhB
cnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OlVpbnQ4QXJyYXk7Ci0KLSNlbmRpZiAvLyBVaW50OEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1w
ZWRBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWNjMmQ4MmIyOTE0MmJk
MzEyODM2YTUwNzk3Njg1MDhhZGIzMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBV
aW50OENsYW1wZWRBcnJheV9oCi0jZGVmaW5lIFVpbnQ4Q2xhbXBlZEFycmF5X2gKLQotI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotCi0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KLSNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgVWludDhD
bGFtcGVkQXJyYXkgOiBwdWJsaWMgVWludDhBcnJheSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0
ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLQot
ICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFy
cmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBk
aXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0aWMg
aW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIEl0J3Mgb25seSBuZWVkZWQgdG8gcG90ZW50aWFs
bHkgY2FsbCB0aGlzIG1ldGhvZCBpZiB0aGUgYXJyYXkKLSAgICAvLyB3YXMgY3JlYXRlZCB1bmlu
aXRpYWxpemVkIC0tIHRoZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uIHBhdGhzCi0gICAgLy8gemVy
byB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KLSAgICBpbmxpbmUgdm9pZCB6ZXJvRmlsbCgpOwotCi0g
ICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OnNldDsKLSAgICBpbmxpbmUg
dm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSk7Ci0KLSAgICBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAg
ICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0
LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQ4Q2xhbXBlZDsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgaW5saW5lIFVpbnQ4Q2xhbXBlZEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2Ug
Y29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBl
ZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjsKLX07Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewotICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4Q2xhbXBl
ZEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50
OENsYW1wZWRBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+Ojpj
cmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVp
bnQ4Q2xhbXBlZEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5z
aWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDhDbGFtcGVkQXJyYXk+KGxlbmd0
aCk7Ci19Ci0KLXZvaWQgVWludDhDbGFtcGVkQXJyYXk6Onplcm9GaWxsKCkKLXsKLSAgICB6ZXJv
UmFuZ2UoMCwgbGVuZ3RoKCkpOwotfQotCi12b2lkIFVpbnQ4Q2xhbXBlZEFycmF5OjpzZXQodW5z
aWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKLXsKLSAgICBpZiAoaW5kZXggPj0gbV9sZW5ndGgp
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkgfHwgdmFsdWUgPCAw
KQotICAgICAgICB2YWx1ZSA9IDA7Ci0gICAgZWxzZSBpZiAodmFsdWUgPiAyNTUpCi0gICAgICAg
IHZhbHVlID0gMjU1OwotICAgIGRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihscmludCh2YWx1ZSkpOwotfQotCi1VaW50OENsYW1wZWRBcnJheTo6VWludDhDbGFtcGVk
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCi06IFVpbnQ4QXJyYXkoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFy
cmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0
YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4
Q2xhbXBlZEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OENsYW1wZWRBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OwotCi0j
ZW5kaWYgLy8gVWludDhDbGFtcGVkQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4N2Q5
OGM4YWVlOGU5NDc3MjVhMWU3ZjI0MTg1Mjc0MDE3OWE3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAg
LTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0FycmF5QnVmZmVyX2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfQXJyYXlCdWZmZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlMzk1MjY2
OTdjZDEwZGIzZjQ4ZjhiOTZkZDAwNGQ4YjNmOTQ4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBA
IC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZlclZpZXdfaAorI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZlclZpZXdfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDMyQXJyYXkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MjQ1M2RkMjE2MDhkM2NjYzljZTQ4YzEwNTA2NGE3NzZmZWIzZDBlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDMyQXJyYXku
aApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRmxvYXQzMkFycmF5X2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfRmxvYXQzMkFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GbG9hdDMyQXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdlMzVh
YWRjODhhZWJjOTU1MGFlNWY1ODFkMWI4ZDg5YzgzYTZlMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5LmgKQEAg
LTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0Zsb2F0NjRBcnJheV9oCisjZGVmaW5l
IFdlYkNvcmVfRldEX0Zsb2F0NjRBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxv
YXQ2NEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9JbnQxNkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkMDAzOTlkYTM1NDk3
OTNjZGI5YzFiN2VhMmUxNGE0ODdjODEyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oCkBAIC0wLDAgKzEsNCBA
QAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnQxNkFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
SW50MTZBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50MTZBcnJheS5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L0ludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNjU3NDFkNzY5YmNlNjkwOTFmZGYyMGYxOGFhMGJl
ZGM2ZWEwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29y
ZV9GV0RfSW50MzJBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0ludDMyQXJyYXlfaAorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDMyQXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50OEFycmF5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmI2YWQ1Mjc0MGI1MWYxZmRmYjg4YWFlYWMzMWNjYTk1Yjg5MTQ2YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50OEFy
cmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0ludDhBcnJheV9oCisj
ZGVmaW5lIFdlYkNvcmVfRldEX0ludDhBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW50OEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzY3OWI1Njg0YzY2MDcxMzdjYzU4Yjc2N2FlNmZmYTE2YmFmOGE2MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZX
RF9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW50ZWdyYWxU
eXBlZEFycmF5QmFzZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY0MWE1N2Mz
YTY1OGJiYzVmMDAyZGYwMTY3OTcwZTYyZjVmMTQwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApAQCAt
MCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVHlwZWRBcnJheUJhc2VfaAorI2RlZmlu
ZSBXZWJDb3JlX0ZXRF9UeXBlZEFycmF5QmFzZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
VHlwZWRBcnJheUJhc2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjY2VhMmMx
YjBjMDczN2VjNmM4MGY0M2I2YTVlMWIwMzVkOTYyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQxNkFycmF5LmgKQEAgLTAs
MCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1VpbnQxNkFycmF5X2gKKyNkZWZpbmUgV2Vi
Q29yZV9GV0RfVWludDE2QXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQxNkFy
cmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjAyNmYxNWMwNjM2MThjYzZi
MmQ0MTYyZDhjYmVjOGFhN2IwYjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9VaW50MzJBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1Vp
bnQzMkFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1VpbnQ4QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
VWludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOGRlNGVhNzhjY2FkZTQ5MjNhODY5NjAxYjE1MGRk
NTg1N2Q3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29y
ZV9GV0RfVWludDhBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1VpbnQ4QXJyYXlfaAorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENsYW1wZWRBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENsYW1w
ZWRBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZDJlMDFkMWE4ZTU3MGQ4YWE1Mjk1ODRlMTFhOTg2NTUz
YzY5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdl
YkNvcmVfRldEX1VpbnQ4Q2xhbXBlZEFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVWludDhD
bGFtcGVkQXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2Vy
Tm9kZS5oCmluZGV4IDlmMmYwYjg3MzIwOTIzNzZlZGQ3OWRjN2MxYWVhNWVhOTdjZDgzNDQuLmMz
YWE1Yzc3ODJjMDc3YzRkMTRiYzAwYzE1YTdiNTAxZGMzMjBkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApAQCAtNTksOSArNTksOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTbW9vdGhpbmdUaW1lQ29uc3RhbnQoZmxvYXQgaywgRXhjZXB0
aW9uQ29kZSYpOwogICAgIGZsb2F0IHNtb290aGluZ1RpbWVDb25zdGFudCgpIGNvbnN0IHsgcmV0
dXJuIG1fYW5hbHlzZXIuc21vb3RoaW5nVGltZUNvbnN0YW50KCk7IH0KIAotICAgIHZvaWQgZ2V0
RmxvYXRGcmVxdWVuY3lEYXRhKEZsb2F0MzJBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRG
bG9hdEZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9Ci0gICAgdm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0
YShVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKGFy
cmF5KTsgfQotICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkqIGFycmF5
KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGFycmF5KTsgfQorICAgIHZvaWQg
Z2V0RmxvYXRGcmVxdWVuY3lEYXRhKEpTQzo6RmxvYXQzMkFycmF5KiBhcnJheSkgeyBtX2FuYWx5
c2VyLmdldEZsb2F0RnJlcXVlbmN5RGF0YShhcnJheSk7IH0KKyAgICB2b2lkIGdldEJ5dGVGcmVx
dWVuY3lEYXRhKEpTQzo6VWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRlRnJl
cXVlbmN5RGF0YShhcnJheSk7IH0KKyAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0YShKU0M6
OlVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGFy
cmF5KTsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCBmMDBiZDFhZGNmMjEwNGNmZDJl
OTdmYTM1MDFiNjAzZGM3ZGEyODhhLi4wOTM4M2VmNWY0NzlmMzU0MDdmZjExMzAwODBkM2UxNjI0
NmJiZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5j
QXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fz
eW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9C
dWZmZXIuaCIKICNpbmNsdWRlICJBdWRpb0J1ZmZlckNhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3Rm
L0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKaW5kZXggY2VkODA1OGMwZjYwMTQzZDMzMzUxZDRlY2E1
NjVhYmQ4ZDc4NDhhNy4uOWNmYTg4ZTVlYzBjYjNlNmY3MDZiZGEyNjRmMGU5Mjc1ZDMyZmIyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVm
ZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyOwpAQCAt
NDcsMjAgKzUxLDIwIEBAIHB1YmxpYzoKICAgICB+QXN5bmNBdWRpb0RlY29kZXIoKTsKIAogICAg
IC8vIE11c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2b2lkIGRlY29kZUFz
eW5jKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVm
ZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOworICAgIHZvaWQgZGVjb2RlQXN5bmMoSlNDOjpB
cnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlv
QnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBEZWNvZGluZ1Rh
c2sgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZWNvZGluZ1Rhc2spOwogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8RGVjb2RpbmdUYXNrPiBjcmVhdGUoQXJy
YXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1
ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPERlY29kaW5n
VGFzaz4gY3JlYXRlKEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0
ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAKICAgICAgICAgdm9p
ZCBkZWNvZGUoKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGVjb2RpbmdUYXNr
KEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVk
aW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOworICAgICAgICBEZWNvZGluZ1Rhc2soSlNDOjpBcnJh
eUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVm
ZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKTsKIAotICAgICAgICBBcnJheUJ1ZmZlciogYXVkaW9EYXRhKCkg
eyByZXR1cm4gbV9hdWRpb0RhdGEuZ2V0KCk7IH0KKyAgICAgICAgSlNDOjpBcnJheUJ1ZmZlciog
YXVkaW9EYXRhKCkgeyByZXR1cm4gbV9hdWRpb0RhdGEuZ2V0KCk7IH0KICAgICAgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgICAgICBBdWRp
b0J1ZmZlckNhbGxiYWNrKiBzdWNjZXNzQ2FsbGJhY2soKSB7IHJldHVybiBtX3N1Y2Nlc3NDYWxs
YmFjay5nZXQoKTsgfQogICAgICAgICBBdWRpb0J1ZmZlckNhbGxiYWNrKiBlcnJvckNhbGxiYWNr
KCkgeyByZXR1cm4gbV9lcnJvckNhbGxiYWNrLmdldCgpOyB9CkBAIC02OSw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHN0YXRpYyB2b2lkIG5vdGlmeUNvbXBsZXRlRGlzcGF0Y2godm9pZCog
dXNlckRhdGEpOwogICAgICAgICB2b2lkIG5vdGlmeUNvbXBsZXRlKCk7CiAKLSAgICAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBtX2F1ZGlvRGF0YTsKKyAgICAgICAgUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+IG1fYXVkaW9EYXRhOwogICAgICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgICAg
IFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKICAgICAgICAg
UmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaAppbmRleCA4MjdkZjllYmI4NGU2
ZTBhMjdiZGUyY2Q4MDE1MDMxNmViMDY3ZGFmLi4xY2E2NzY2YmM5OWUyYTJhZjM5OThlMmZkZTk4
N2EwOTRiMWVlMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIEF1ZGlvQnVmZmVyX2gKICNkZWZp
bmUgQXVkaW9CdWZmZXJfaAogCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRl
eCAyYjRkMTc5ODhhMmFmMTYyMjE0NzQ0ODU1NjljZmFiOWVmZmYzNTI1Li44YTBlOGQ1YjJiNjE1
MGVkY2QyNGM0ZGZjYzA1YjNmZmZjOWI3ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBACiAjaW5jbHVk
ZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYv
QXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaApp
bmRleCA1MjRmOThmMDdmOGMyYWFlNjM5MDMxOTZjNzQxZmMyYjk0YzQ4OTkxLi4xZTQwN2JhMGJh
NDg1MTNlYTg2NDUzYTcxMjNjNjQ3YmY1NDAxNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgIkF1
ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgogI2luY2x1ZGUg
IkF1ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXku
aD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKaW5kZXggYzBhOTYwODcw
NDkxMzA4ZTcxMDQ0MDlkYWQ3OTQ4NjAzNWRjMWIxMS4uZTBlNWE1ZGNjYjUwMmJiMzczZWRiZDA3
MjAxYjU0ZGVmYmE0NmNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjZGVmaW5lIEF1
ZGlvUGFyYW1UaW1lbGluZV9oCiAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKLSNpbmNsdWRl
IDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGVyaW9kaWNXYXZlLmgKaW5kZXggM2I2ZGU2OGZlMGUwZmIzMjkwNmIwZjcyODQy
NmFiOTgxYjA3OTBmNi4uMTI0M2Q5MDgwZDJkY2VlNjZjMDYzYmQ4NzE3ODk2YzQyYTFiZGZmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oCkBA
IC0zMCw3ICszMCw3IEBACiAjZGVmaW5lIFBlcmlvZGljV2F2ZV9oCiAKICNpbmNsdWRlICJBdWRp
b0FycmF5LmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4
IDY4MTYzY2U1NTdhMWZlMTgwMTkxMmVhMjlmZGE3ZWQwYzU4MjI5NzYuLjY0YTNjZjNiOTQ5NzMx
MDNjZTA4YmEwYjkxZGEyN2IyYjYxZGYxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBA
CiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRl
IDxjb21wbGV4PgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNp
bmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmgKaW5k
ZXggMDJlYTA1ZjVlZWVhNWNmYWVmMjA2NTMzNTBkZjQyM2YzOWE5YzAwYi4uMWZiYjY4YTU2Njdk
NzFhZWNkMzlmOTUzNTkxOTcwOWEzZmIxYTM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmgKQEAgLTMwLDYgKzMwLDExIEBACiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZsb2F0MzJBcnJheTsKK2NsYXNzIFVpbnQ4QXJyYXk7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CkBAIC01Nyw5ICs2Miw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNtb290aGluZ1RpbWVDb25zdGFudChmbG9hdCBrKSB7
IG1fc21vb3RoaW5nVGltZUNvbnN0YW50ID0gazsgfQogICAgIGZsb2F0IHNtb290aGluZ1RpbWVD
b25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3Ntb290aGluZ1Rp
bWVDb25zdGFudCk7IH0KIAotICAgIHZvaWQgZ2V0RmxvYXRGcmVxdWVuY3lEYXRhKEZsb2F0MzJB
cnJheSopOwotICAgIHZvaWQgZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSopOwotICAg
IHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIGdldEZs
b2F0RnJlcXVlbmN5RGF0YShKU0M6OkZsb2F0MzJBcnJheSopOworICAgIHZvaWQgZ2V0Qnl0ZUZy
ZXF1ZW5jeURhdGEoSlNDOjpVaW50OEFycmF5Kik7CisgICAgdm9pZCBnZXRCeXRlVGltZURvbWFp
bkRhdGEoSlNDOjpVaW50OEFycmF5Kik7CiAKICAgICAvLyBUaGUgYXVkaW8gdGhyZWFkIHdyaXRl
cyBpbnB1dCBkYXRhIGhlcmUuCiAgICAgdm9pZCB3cml0ZUlucHV0KEF1ZGlvQnVzKiwgc2l6ZV90
IGZyYW1lc1RvUHJvY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCA0ZTM2ZTg3OTdhNmVkZDkyZjcx
MTkxYzAzOTA0MGE5ZTFlODNjODk2Li5hYjFkMmVlMGZiMjg0NWY5NmIxYTlkZjk1MTRkNTBjM2Ey
MzQwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJBdWRp
b05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaAppbmRleCA1NTk3YTk0YzFlNzI3NDNhZGY3Zjg0
YWJmMjhmMjc0ZGNmMzkwOTc3Li42MzVhYzc1ZDk0YjIzZDMxZjhhOWQ2OWNhOTc1NDdkYjFhOTMy
YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkF1ZGlvRFNQS2Vy
bmVsLmgiCiAjaW5jbHVkZSAiQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaCIKICNpbmNsdWRlICJB
dWRpb05vZGUuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVu
dGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDE4ZDk5
YTlmMGFhZjAyZDVlOTRmNWQ1ZThlYTRlODNmNTMyODRiYWEuLmZmNzI4M2Q4NTdmOGUyY2RlMzhj
ZjAyMzM1ODQ5YmI3YmU0MWVmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0z
Nyw2ICszNywxMSBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7Citj
bGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QmxvYjsKQEAgLTYwLDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnBy
b3RvY29sKCkgPSAwOyAvLyBXaWxsIGJlIGF2YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2Fs
bGJhY2sgaXMgaW52b2tlZC4KICAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgPSAwOyAv
LyBXaWxsIGJlIGF2YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sgaXMgaW52b2tl
ZC4KICAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0g
MDsKLSAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIFNl
bmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5k
KGNvbnN0IEJsb2ImKSA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggYjRiNDljMTBlOTQ5NGRkNTI2ZGFiODFhNTlmMDdkOWE5
OTFhZWU1ZS4uNWZhM2Q5ZjZhMGQxYzhkZjE4MWYwZDI0MjkwZDU4MTIzZjI5MzQwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU0
LDggKzU0LDggQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgot
I2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZp
ZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGU2NDc5MDMxNTU2NzBl
YzljOTA3YTVhOWEyNDEzMTVkN2NlZjZhODMuLjlhNTgyMzcwZmZkODY0MGM0MDFmMmQzN2UxYjlj
ZDlhYmRmM2JkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKQEAgLTczLDggKzczLDggQEAgcHVibGljOgogICAgIHZvaWQgY29ubmVjdChjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c2VuZChKU0M6OkFycmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChK
U0M6OkFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQoQmxv
YiosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNWJlOTlhOTEy
ZTU5N2ViODhlNTk5NWIzZWE5NzZjYTE5N2QwOTFhMC4uMzRmNGFiZTYyMGY4ZTJlYTNmYzBkMDEw
YjAxMDliYmRhYWIxNTYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTYsNyArNTYsNyBAQAogI2luY2x1
ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hh
a2UuaCIKIAotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
QXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAxNzBhYjE4
M2FkNDgzZTk5NDM0OTE5ZmUyOWRlYTEwM2E2NjA4NTkyLi5mMTQ4Y2Q5MWIwODEwMDhmOGJhZjUw
MDVmZTA5YTQ5NzQ4MzcxNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBT
dHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
c2VuZChjb25zdCBBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKSBPVkVSUklERTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA1NjdiOTc5NTIyNTJmNDNmZDdj
NTE5ZGEzZjQ3YzIzMjRhMjY2NjM1Li43OGI1YjEwM2EyNDI1ZTlmNjUyNWE3YzExODY2NTVjZjRl
NmE5Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlIDx3
dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaAppbmRleCAyNDIxMzQzNWQxM2Q2YjU1MGZhNjRkZmIyMmM3OGZlNmI2NDYzMDMz
Li40MTlhYzQyZDZiYzM5ZDg2ZmI2Y2MyZmI3NzlmYzFjNjllZjJkYmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0
cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBz
ZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pIE9WRVJSSURFOwpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAg
dm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgICAgIHZvaWQgc2VuZChjb25z
dCBBcnJheUJ1ZmZlciYpOworICAgICAgICB2b2lkIHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZl
ciYpOwogICAgICAgICB2b2lkIHNlbmQoY29uc3QgQmxvYiYpOwogICAgICAgICB2b2lkIGJ1ZmZl
cmVkQW1vdW50KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRp
YWxpemUoKTsKICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwogICAgICAgICBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEJsb2ImKTsKICAgICAg
ICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpOwogICAgICAgICB2b2lkIGNsb3NlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDRm
MmM3MDczMTkyZmFjNDFkYzM1NWMyZjkzOWEwNzZjODc2NWM5M2EuLmIxZmYyMTY5N2Q2NWZhN2Q3
ZDc2MTUxZDIyNDkzZThkNGJlZGViNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03MjAsNyAr
NzIwLDcgQEAgX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXJEMkV2CiBfX1pON1dl
YkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUEsxNU9wYXF1ZUpTQ29u
dGV4dFBQSzEzT3BhcXVlSlNWYWx1ZQogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFs
dWUxMWRlc2VyaWFsaXplRVBOM0pTQzlFeGVjU3RhdGVFUE5TMV8xNEpTR2xvYmFsT2JqZWN0RVBO
M1dURjZWZWN0b3JJTlM2XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVOUzZfMTVDcmFz
aE9uT3ZlcmZsb3dFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVFCiBfX1pON1dlYkNvcmUy
MVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUEsxNU9wYXF1ZUpTQ29udGV4dFBLMTNPcGFx
dWVKU1ZhbHVlUFM2XwotX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRl
RVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBOM1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJ
TlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVOUzVfMTVDcmFzaE9uT3ZlcmZsb3dFRUVQTlM2X0lOUzdf
SU5TNV8xMUFycmF5QnVmZmVyRUVFTG0xRVNBX0VFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
RQorX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVj
U3RhdGVFTlMxXzdKU1ZhbHVlRVBOM1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdl
UG9ydEVFRUxtMUVOUzVfMTVDcmFzaE9uT3ZlcmZsb3dFRUVQTlM2X0lOUzdfSU5TMV8xMUFycmF5
QnVmZmVyRUVFTG0xRVNBX0VFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJD
b3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWVDMUVSTjNXVEY2VmVjdG9ySWhMbTBFTlMxXzE1
Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQx
RXYKQEAgLTkwNyw3ICs5MDcsNyBAQCBfX1pON1dlYkNvcmU0UGF0aEMxRXYKIF9fWk43V2ViQ29y
ZTRQYXRoRDFFdgogX19aTjdXZWJDb3JlNGNvcmVFUDIwTlNVUkxQcm90ZWN0aW9uU3BhY2UKIF9f
Wk43V2ViQ29yZTRjb3JlRVAyOE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKLV9fWk43V2Vi
Q29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zV1RG
MTFBcnJheUJ1ZmZlckUKK19fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3
SlNET01HbG9iYWxPYmplY3RFUE5TMF8xMUFycmF5QnVmZmVyRQogX19aTjdXZWJDb3JlNHRvSlNF
UE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBDbGllbnRSZWN0
RQogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9i
amVjdEVQTlNfMTNET01TdHJpbmdMaXN0RQogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNT
dGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTRDbGllbnRSZWN0TGlzdEUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAKaW5k
ZXggMmZhMzA2YTlkMzhjMmMzOWIzNzJlNTk0YTZmODI4MjlhNDYzNTg5ZS4uZGZkNTJhYjc4ZmNj
NjdlN2QyYjQ2M2EwNWY2NWI2ZjQwN2Y2MGEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNp
bmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmll
d0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdI
ZWxwZXIuaAppbmRleCA5YWYzZjhhZGQ3ZDY5NTdiNWVkMGI5NTA2NTc1YTNhNGFhOWI3NTI2Li44
N2I2ZTRjOTE3ZGM0NTQ4Nzk5ODJlMjc4ODg5Y2NhMDcxZWZhMGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKQEAgLTMy
LDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgPGludGVy
cHJldGVyL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNP
YmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYv
QXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL1R5cGVkQXJyYXlCYXNlLmg+CisjaW5j
bHVkZSA8cnVudGltZS9UeXBlZEFycmF5QmFzZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9t
LmNwcAppbmRleCBkNzMwMzZmZjkxYjEwZWU2NmU3MDNkN2FjM2Y2NTA5NTQ3MzJjNmVkLi5hYjY4
NTI2ZWM2MjU0ZDI2ZTFjMmZkYjMzZjBmMTJkYmY5YmM3MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCkBAIC0zNCw4ICsz
NCw4IEBACiAjaW5jbHVkZSAiSlNBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJKU09mZmxpbmVB
dWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNp
bmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCmluZGV4IGE5NjNh
NzQ2ODc2NTRhMmVjODAwOGQ0ZmMzNzIyMTgzMWE5YjViYTUuLmQ5ZTkyOTgxYTZhMzkxYzY5OTg0
MzVlNjY2ODQ5YTFlZGIwYmUzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b0N1c3RvbS5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKIAorI2luY2x1ZGUgPHJ1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1
ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaAppbmRleCAxZjg2ODRmZjBjMTM3
NTFjYjFiN2ZmMDI4ZWE4MDQ5ZWY2MDg0ZjA2Li4wNTE5ZmUyNjVkZmUwOTQ0NTJjZDZhMjNhOTFm
YTIyMzQxMGFjYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rp
Y3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnku
aApAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBzdGF0aWMgdm9pZCBj
b252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEFycmF5VmFsdWUmIHJlc3VsdCk7Ci0gICAgc3RhdGljIHZv
aWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8VWlu
dDhBcnJheT4mIHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8SlNDOjpVaW50OEFycmF5PiYgcmVzdWx0KTsK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPE1lZGlhS2V5RXJyb3I+JiBy
ZXN1bHQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ZpbGVSZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxl
UmVhZGVyQ3VzdG9tLmNwcAppbmRleCA4YjQ5M2NhMTc2OWYyZWQ5OTdhOWU1MDU1N2YwYzU0ZDU0
MDMyYzM3Li5lODUxMjE5YWZhNzQ4OGIzMzU5MWY0NmNiYTY0ZDgwM2E1MDkxNzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZpbGVSZWFkZXIuaCIKICNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKaW5kZXggNWVkNTNlN2I1M2QyOTMwNGRiMzNhZWRjMjc5MjEwZTIwMTEzZTEw
Yy4uMjJiZjFhYWM3YzEyMDY5NDJmNTdlZjJhZTJlZGVmYjZkNDVhZDJlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcApAQCAtODUsMTEgKzg1LDExIEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNB
cnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3
dGYvSW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgogCiAjaWYgRU5B
QkxFKFZJREVPKQogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXgg
MmI3OTljNTBlZWJjMGIxYzQ5MzI0ZDU2ZWMxOWFhOWFlZmQwMGU2Yi4uOGRkOGJmNTU5MjJmNjU0
NDc1OTQ1YjA0YWMxNDJjODU5NDJhNmFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTQ4LDggKzQ4LDggQEAK
ICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5o
IgogI2luY2x1ZGUgPGludGVycHJldGVyL1N0YWNrSXRlcmF0b3IuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRl
eCAxMjZhMDRiZmJhMTE5NDQ1ODQxNTg3OTg1YTM1ODUyZjRhNzBlOThlLi4zODJjYjI3ZWIzZWQ0
YjJiMDUzZDJlNWE2ODcxY2Q1NzE0YWMwZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAK
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSVNoaW1zLmg+CisjaW5jbHVkZSA8cnVudGltZS9B
cnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpA
QCAtNjcsOSArNjgsOCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaD4K
ICNpbmNsdWRlIDxydW50aW1lL1JlZ0V4cC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUmVnRXhwT2Jq
ZWN0Lmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9V
aW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtOTc4LDcgKzk3OCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgcmV0dXJu
IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKIH0KIAotdHlwZWRlZiBWZWN0b3I8V1RGOjpBcnJheUJ1
ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxK
U0M6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsKIAogY2xh
c3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogcHVibGljOgpAQCAtMTc3Nyw3ICsx
Nzc3LDcgQEAgUGFzc093blB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4gU2VyaWFsaXplZFNjcmlwdFZhbHUKICAgICBWZWN0b3I8UmVmUHRyPERPTVdy
YXBwZXJXb3JsZD4gPiB3b3JsZHM7CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0
YSo+KGV4ZWMtPnZtKCkuY2xpZW50RGF0YSktPmdldEFsbFdvcmxkcyh3b3JsZHMpOwogCi0gICAg
SGFzaFNldDxXVEY6OkFycmF5QnVmZmVyKj4gdmlzaXRlZDsKKyAgICBIYXNoU2V0PEpTQzo6QXJy
YXlCdWZmZXIqPiB2aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAw
OyBhcnJheUJ1ZmZlckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRl
eCsrKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiA+IG5ldXRlcmVk
Vmlld3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKaW5kZXggZDNjZDg4MDhkODQ2YjNlNzdjODAwMzUwNjZkZTVmNTRjN2EwNzdj
OS4uNjExMTJlN2M2ODUwMDllNjc0ZjYzNzA0Mzc4MjRiNmIzMmE0NDczNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTI5
LDggKzI5LDggQEAKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8aGVhcC9T
dHJvbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTWVzc2FnZVBvcnQ7CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
LCAxPiBNZXNzYWdlUG9ydEFycmF5OwotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFdURjo6QXJyYXlC
dWZmZXI+LCAxPiBBcnJheUJ1ZmZlckFycmF5OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+LCAxPiBBcnJheUJ1ZmZlckFycmF5OwogIAogZW51bSBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZSB7CiAgICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLApAQCAtMTEzLDcgKzExMyw3
IEBAIHB1YmxpYzoKICAgICB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAKIHByaXZhdGU6Ci0g
ICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk7CisgICAgdHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRz
PiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4
Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVT
dWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwogICAgIHN0YXRpYyBQYXNzT3du
UHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gdHJhbnNmZXJBcnJheUJ1ZmZlcnMoSlNDOjpF
eGVjU3RhdGUqLCBBcnJheUJ1ZmZlckFycmF5JiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggMGYyOGY2ZWU1MjkyYjQyMmU0MGM1ZGY2MWZhYTNiY2Y2MWUwZDU3Mi4uNmQ1ODky
ZDc5NTY3ZjM5ZmI4OTYzOTA1OGUyNmZhZTAyOGZjZDcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIyNiw3ICsyMjYs
NyBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgfSBlbHNpZiAoJGlzQ2FsbGJhY2sgJiYg
JGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpKSB7CiAgICAgICAgICRpbmNsdWRl
c1JlZi0+eyJKUyR7dHlwZX0uaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+
SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgJGluY2x1ZGVzUmVmLT57Ijx3dGYv
JHt0eXBlfS5oPiJ9ID0gMTsKKyAgICAgICAgJGluY2x1ZGVzUmVmLT57IjxydW50aW1lLyR7dHlw
ZX0uaD4ifSA9IDE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBkZWZhdWx0LCBpbmNsdWRlIHRo
ZSBzYW1lIG5hbWVkIGZpbGUKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IiR7dHlwZX0uaCJ9ID0g
MTsKQEAgLTY4Myw3ICs2ODMsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmICgkaGFz
UGFyZW50ICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0dlbmVyYXRlVG9O
YXRpdmVPYmplY3QifSkgewogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJh
eVR5cGUoJGludGVyZmFjZU5hbWUpKSB7Ci0gICAgICAgICAgICAkaGVhZGVySW5jbHVkZXN7Ijx3
dGYvJGludGVyZmFjZU5hbWUuaD4ifSA9IDE7CisgICAgICAgICAgICAkaGVhZGVySW5jbHVkZXN7
IjxydW50aW1lLyRpbnRlcmZhY2VOYW1lLmg+In0gPSAxOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyIkaW50ZXJmYWNlTmFtZS5oIn0gPSAxOwogICAgICAg
ICB9CkBAIC0zNjEyLDcgKzM2MTIsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICMg
RGVmYXVsdCwgaW5jbHVkZSBoZWFkZXIgd2l0aCBzYW1lIG5hbWUuCiAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJKUyR0eXBlLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiPHd0Zi8kdHlwZS5oPiIsICRjb25kaXRpb25hbCkgaWYgbm90ICRjb2RlR2Vu
ZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSk7CisgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiPHJ1bnRpbWUvJHR5cGUuaD4iLCAkY29uZGl0aW9uYWwpIGlmIG5vdCAkY29kZUdl
bmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR0eXBlLmgiLCAkY29uZGl0aW9uYWwpIGlmIG5v
dCAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjU5OGVmYjdmYjYwZTNkMDYzN2UyZDEyNzM2
YmI5YWJhMjExMGYxMi4uZjA0ZmJiMmQzMzg4ODA4NmI1ZGZkODgyNGM0ZTBmYWVmMmE5YWNkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggYmY4YzMzZDk2ZDM4NmE5MTU5OWUz
NjBkMWEwYTA3Y2I1MDY2NzE3Zi4uZjY5Njc3NWIzYjhkNWRjMDI2ZDNmMTIwNTBkNmIzOWE3Mjk5
MDhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00MCw3ICs0MCw3
IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVm
ZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXIuaAppbmRleCA3ZjIxMzNkZTA4YTFlMTQ3MWNiYTljM2RmZTBlNzk5
NDA0MDNlM2ExLi5jMjBmOTdhOWZiZjNkZjkzYTI1NGM1M2IwYzNlYTU5MDMxY2JjOTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC03Myw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBSZWFkeVN0
YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAgICAgUGFzc1JlZlB0
cjxGaWxlRXJyb3I+IGVycm9yKCkgeyByZXR1cm4gbV9lcnJvcjsgfQogICAgIEZpbGVSZWFkZXJM
b2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkVHlwZTsgfQot
ICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0
OwogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA3N2MwNWZlODEz
Yjc4NzA0ZGE0M2Y5M2NhMmE5NTAyZTQyYTM1NWQ0Li4yNDQ3YzMwZWE1MTRhZmM4YWYyMjViNGVh
NmVmMDRjMjJkYTU3Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCBlYzFiZGZkYjJkNTEyOTU3YTM4M2Jl
NjVhZGYxYTVmZmE5ODY5ZDc4Li4yNGYxZTdmMWJkYTg2YTM0Nzc3MThmMTcxYWYwNzJjYmVjOWY5
NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNDAs
NiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC03Miw3ICs3Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAK
ICAgICBTdHJpbmcgc3RyaW5nUmVzdWx0KCk7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXJSZXN1bHQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNUUkVBTSkKICAgICBQ
YXNzUmVmUHRyPEJsb2I+IGJsb2JSZXN1bHQoKTsKICNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNKQpA
QCAtMTA1LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgS1VSTCBtX3VybEZvclJlYWRpbmc7CiAg
ICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCi0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBtX3Jhd0RhdGE7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmF3RGF0
YTsKICAgICBib29sIG1faXNSYXdEYXRhQ29udmVydGVkOwogCiAgICAgU3RyaW5nIG1fc3RyaW5n
UmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3lu
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcAppbmRleCA3
OWU1MjAwZWE3YWZiZGNjZTk3MjJhOGYxZmYyNjUxYzA4YjRiNTc0Li4yZDUzYWZkMWI5ZTcyMThi
NTJkMzM1MjgwOTYwMTYyZGI2NDNiMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJTeW5jLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNp
bmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgot
I2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgKaW5kZXggOWZlNWMzMDAzYjVk
ZTc4YjMzMTJjOGIwM2ZjOGU3NzJjOTRjNDlkZC4uNTAxNDBlZmNkZDYwZDY1OTg1NDNmZmM3ZWNi
YjNiZDc4MDZhMDE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaApA
QCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVm
ZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC01NCw3ICs1
OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZpbGVSZWFkZXJTeW5jKCkgeyB9CiAKLSAg
ICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+IHJlYWRBc0FycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBC
bG9iKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyByZWFkQXNCaW5hcnlTdHJpbmcoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5n
IHJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAppbmRleCAxNjIyZTJmZTQyYjBiOTNhYjkw
ZDgzZjFkZjFhNDc0MWZlNDNjMWJmLi40YjNhMmVhN2FhZjE2Mjk3YjU1OTlkYjhmZjA3NjZiM2Ni
OTliNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNw
cApAQCAtNDAsOCArNDAsOCBAQAogI2luY2x1ZGUgIkxpbmVFbmRpbmcuaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlIDx3
dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmgKaW5kZXggMzM1YmM3NjZkZWE1ZDYyYjllNzA0
Njc1YjFmYThkMDBmNTcyZTQ3Yy4uYmNjYzI3ODAyMDEyZGUzMDkyYzk1MTVjMmZhZWZlZWRmOWM0
ZGJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaApAQCAt
MzQsNiArMzQsMTEgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJh
eUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IE1vdmUg
dGhpcyBmaWxlIHRvIEJsb2JCdWlsZGVyLmgKQEAgLTUwLDggKzU1LDggQEAgcHVibGljOgogICAg
IHZvaWQgYXBwZW5kKEJsb2IqKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFN0cmluZyYgZW5kaW5nKTsKICNpZiBFTkFCTEUoQkxPQikKLSAgICB2b2lkIGFwcGVu
ZChBcnJheUJ1ZmZlciopOwotICAgIHZvaWQgYXBwZW5kKEFycmF5QnVmZmVyVmlldyopOworICAg
IHZvaWQgYXBwZW5kKEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFwcGVuZChKU0M6OkFy
cmF5QnVmZmVyVmlldyopOwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPEJsb2I+IGdldEJsb2Io
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCAzYTlhNmQ5MzJjNmY2MDI3YjNiYjI0YjQwNWVkODRiNWZlZGFhYWY2
Li45NjMyNDkzYmI1M2QxZWI3NjNhMmViY2FmNmNlMTEwZjQ4Mzc1YTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQAogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8bGlt
aXRzPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05v
bkNvcHlpbmdTb3J0Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCA3NjE2ODcwNjNhNTVlNTQ1ZmJjZGRjNjhmYjA4OTJm
NDllNDljYTlhLi44MGIzZWIwY2RmYjZmODkwYWMyMDNkNDM2ZmI1NjhhZmE2MDI1YWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTMwLDkgKzMwLDkgQEAKICNkZWZpbmUgSW1hZ2VEYXRh
X2gKIAogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBl
ZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlC
dWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsCmlu
ZGV4IDBmNzBhZjY0ZGExN2NmMzBkMDBmNGRiYWFkNWYwOWI2OTVmZjY2ZjQuLjgzNjMxMzdhOGE2
MWQ2NjFmYTk5ZjQ0OWFlMTBiZTA3OGFiNjE1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BcnJheUJ1ZmZlci5pZGwKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBHZW5lcmF0ZUlzUmVh
Y2hhYmxlPUltcGwsCiAgICAgQ3VzdG9tQ29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBsZW5ndGgp
LAogICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RG
LAorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQywKICAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCiBdIGludGVyZmFjZSBBcnJheUJ1ZmZlciB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgYnl0ZUxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRsCmluZGV4IDNkNmZhZTJhNDBlOGI1Mzk5ZGExZTU3YThh
NDQ2MzVhMzAyNmU0NGMuLmZjNjFhNWU4MjdmMDg2YmRlMmQzZTljZWUyZjUzYTAzOTBmMTdmYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmlkbApA
QCAtMjYsNyArMjYsNyBAQAogWwogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgSlNOb1N0YXRp
Y1RhYmxlcywKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRh
dGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEFycmF5QnVmZmVyVmlldyB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEFycmF5QnVmZmVyIGJ1ZmZlcjsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggY2FhZTBiYTI1
NjhlNTBlM2Y2YjA2ZGRiMWNkNWY5ZDYyZTI5ZGZkMy4uODUxYzAzNGNkNzEwODBhYTRjYjQ1Y2M0
M2U0NWMxZDVkZDI0MTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC02MiwxMCArNjIsMTEgQEAKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgogI2VuZGlmCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4
Q2xhbXBlZEFycmF5Lmg+CisKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9EYXRhVmlldy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcu
aAppbmRleCAwMGQ1NmQ4ZjE4N2Y5Zjk2ZTdmZDBiNzQ1OGI3ZDI0ODQwYmQ1MDQyLi4wMGRkNmU0
Y2EwODhkMWU4OTc1Yzc2OWVmY2RhODcxMmExYzA0MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0RhdGFWaWV3LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgRGF0YVZpZXdfaAogI2Rl
ZmluZSBEYXRhVmlld19oCiAKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
RmxvYXQzMkFycmF5LmlkbAppbmRleCBhYzI1OGQ1NTU2MWM1YzU5YzBmZGYzZTY0MzYxOWFiMzc1
MmQ2MWFlLi44MzNkMDExMWFhZWE5ODcyNWE2MzBlOThlYTBiMGM0NDk2NWNkODVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcg
QEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAg
VHlwZWRBcnJheT1mbG9hdCwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJ
bXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEZsb2F0MzJBcnJheSA6IEFy
cmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVO
VCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRB
cnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDY0QXJyYXkuaWRsCmlu
ZGV4IGRlZTQ0ZjZjNDBhYTUwMmRhNzFmNzkxMjA4ZDYyYmRiYjViZTU0YWYuLmM5OGMwMzJjYzBi
ZmZjYzhlNTc4MTIzNDg3YTIxM2Y2MjYzMGJhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRmxvYXQ2NEFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNP
YmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PWRvdWJsZSwK
LSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVz
cGFjZT1KU0MKIF0gaW50ZXJmYWNlIEZsb2F0NjRBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAg
ICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDg7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKaW5kZXggMDU3NjQ2MGRiNjAyZGJmNDY4
YjFmYzRiOWU2ZDI3YTkyNmU5MjFiNC4uNDMzZjM2ZjcyOWRhNjJjNTNlYzY3N2VkZjk3ZTg3Mjg5
NzMzNjMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJh
eS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKQEAg
LTMyLDcgKzMyLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25z
dGFudHMsCiAgICAgVHlwZWRBcnJheT1zaG9ydCwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFj
ZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEludDE2
QXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNf
UEVSX0VMRU1FTlQgPSAyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9JbnQzMkFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXku
aWRsCmluZGV4IGQ4NjdlNjVkZDI5ZDAwZDQxZTRiYTdhYjk2ZmQ0ZDMxYTcyZTdmMGMuLjUzYTcw
YjcyNjFkZDUxZjU1NmYwNWJjZmQ2MTZlM2RjN2EzOTFjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9K
U09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9aW50LAot
ICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNw
YWNlPUpTQwogXSBpbnRlcmZhY2UgSW50MzJBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAg
Y29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsCmluZGV4IDZjYjIwYTE0NmUzNjkyNDAxMWQ5ZDg3
NGFjZmM3YTUwNmUzOWMzYjYuLjVkYjAyYWQzMjk4OTA0YTA3NTY4NGZkMzIxMzhlYWViNDkxZmUz
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbApAQCAtMzMsNyAr
MzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywK
ICAgICBUeXBlZEFycmF5PXNpZ25lZCBjaGFyLAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNl
PVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgSW50OEFy
cmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BF
Ul9FTEVNRU5UID0gMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
VWludDE2QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXku
aWRsCmluZGV4IDcwOGNkYjMwMTViNzM2YmY5MGU4MTY1Mzc3M2YwZmMxOWY3OGRjOGYuLjgyOTJi
M2I5ZDQyMmNlN2ZlZjUwY2RjMmNiY2MyZGNiN2MxYmZmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21U
b0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT11bnNp
Z25lZCBzaG9ydCwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1l
bnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIFVpbnQxNkFycmF5IDogQXJyYXlCdWZm
ZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gMjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRsCmluZGV4IDY0M2Mw
OTJkZTNhYjE4YTk1ODZiNjc1OGU2NDQ2Y2MzYzNhYzk4NmMuLmI1YzA1NWQ0MzEyZDkzN2QzY2I2
MzM5NTE1ZTIzNzFiNWFjNTI3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1VpbnQzMkFycmF5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50
MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAg
IERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT11bnNpZ25lZCBpbnQsCi0gICAg
SW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9
SlNDCiBdIGludGVyZmFjZSBVaW50MzJBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKaW5kZXggZGFmM2Y4MDU3MzAzMGUyZjg2ZjFhNDU3
NWIzMjk1ODljZTA0MTcxYi4uMjQxNmE0N2RmNjQ4YjM3ODcyMDFlOTM4ZDZjNDkwOTBjNmZhMmVi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKQEAgLTMzLDcg
KzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMs
CiAgICAgVHlwZWRBcnJheT11bnNpZ25lZCBjaGFyLAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNw
YWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgVWlu
dDhBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRF
U19QRVJfRUxFTUVOVCA9IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Vp
bnQ4Q2xhbXBlZEFycmF5LmlkbAppbmRleCBiMTdmMTM1NzJjZWI5NTBmNTU2N2JmODJjYzA3N2Jl
NGZlYmQwZjhmLi41YTk5OTVlODA4MzQ4ODZlY2M0M2Q3MzA2OWU5YThkMDg2MmZhN2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsCkBA
IC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29u
c3RhbnRzLAogICAgIFR5cGVkQXJyYXk9dW5zaWduZWQgY2hhciwKLSAgICBJbXBsZW1lbnRhdGlv
bk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJm
YWNlIFVpbnQ4Q2xhbXBlZEFycmF5IDogVWludDhBcnJheSB7CiAgICAgY29uc3QgdW5zaWduZWQg
bG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEJ1ZmZlci5oCmluZGV4IDA1MTI0NTBkNzYyZGNhYTRlMTI5YmE5Yjc2MzFjZjM5ZjkyM2E2
ZDAuLjk0NjViNjc0YWQ4NjgwNDllMDU0NTNkYjg0ZTE3MWYzMjQyMmNhYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtMzAsNiArMzAsMTEgQEAKIAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZm
ZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV2ViR0xCdWZmZXIgOiBwdWJsaWMgV2ViR0xTaGFyZWRPYmplY3QgewpAQCAtMzksMTMg
KzQ0LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogCiAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJE
YXRhKEdDM0RzaXplaXB0ciBzaXplKTsKLSAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoQXJy
YXlCdWZmZXIqKTsKLSAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXJWaWV3
Kik7Ci0gICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJTdWJEYXRhKEdDM0RpbnRwdHIgb2Zmc2V0LCBB
cnJheUJ1ZmZlciopOwotICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YShHQzNEaW50cHRy
IG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3Kik7CisgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRh
KEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoSlNDOjpB
cnJheUJ1ZmZlclZpZXcqKTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGlu
dHB0ciBvZmZzZXQsIEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZl
clN1YkRhdGEoR0MzRGludHB0ciBvZmZzZXQsIEpTQzo6QXJyYXlCdWZmZXJWaWV3Kik7CiAKICAg
ICBHQzNEc2l6ZWlwdHIgYnl0ZUxlbmd0aCgpIGNvbnN0OwotICAgIGNvbnN0IEFycmF5QnVmZmVy
KiBlbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBcnJheUJ1ZmZl
ci5nZXQoKTsgfQorICAgIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXIqIGVsZW1lbnRBcnJheUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOyB9CiAKICAgICAv
LyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZS4gUmV0dXJucyAt
MSBpZgogICAgIC8vIG5vbmUgaGFzIGJlZW4gc2V0LgpAQCAtNjgsNyArNzMsNyBAQCBwcml2YXRl
OgogCiAgICAgR0MzRGVudW0gbV90YXJnZXQ7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1f
ZWxlbWVudEFycmF5QnVmZmVyOworICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX2VsZW1l
bnRBcnJheUJ1ZmZlcjsKICAgICBHQzNEc2l6ZWlwdHIgbV9ieXRlTGVuZ3RoOwogCiAgICAgLy8g
T3B0aW1pemF0aW9uIGZvciBpbmRleCB2YWxpZGF0aW9uLiBGb3IgZWFjaCB0eXBlIG9mIGluZGV4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAppbmRleCBmNzE2
NmM0MTkzMmRjMzQ3NmQ4YjVjMmUxMWEzZWM0MmU0NDI1YjFkLi44ZTI3ZDNiOWExMTIwYTc2Zjdj
MzBhYzAxZTFiODA0YmQwNjYyNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEdldEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMR2V0SW5mby5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVy
YnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNs
dWRlIDx3dGYvSW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXku
aD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1Vp
bnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaApp
bmRleCA3ZjliMDQyNjZhMGVhNjY3ODViMGJjOTFiNjBmYmE4ZTFiZjQ0NWU0Li4wODI2MTJhYzll
MWM4NzI4MTBhODk2MTI4NjlhNTU1N2U3OTVmYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEdldEluZm8uaApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSAiV2ViR0xS
ZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgot
I2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJy
YXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1l
L1VpbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1VpbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggOGZmMDkxYmM5MmEyYjRkYmQ1NDY0MjVkMjkzZjkxODE4NjA4NGNkOC4uZDFlMjEyMTc3YWQw
Nzg0M2M0M2IzMmRkNTc2MTczZjk3OTRjZGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03NCw5ICs3NCw5IEBA
CiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRp
b24uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
T3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5NzIzY2E3NzZiMDg0
ODlhOWRkNjQwYTM2NWI0YWNjNmNhZmVkNDhjLi44YjVjYjY5Y2E5NjBlZmUwMzA3NWYxOWNmNjc1
NjQwZmFkMDJmM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgiCiAKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5
Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0
MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRl
eCA4OGYzZDYwZTE2NzZlMjMxN2NmMTM3YWRhOWQyNDZkNmVlYWU3YmY3Li4xZGMzZTEyZWNhNDcw
ZmU2NGIxNTQwMjhkZGE4OGY3NmRjMDE1NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNs
dWRlICJTY3JpcHRHQ0V2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNs
dWRlICJTdHlsZWRFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKaW5kZXggYWU0MTZlZTE3NzdlZTg2MzliZmFmZTA4
Y2I0NzQ2YzU3YmZmMzVjYS4uZjBlNGI1ZGE4YmNmMjg4OWZlMTM4MmE2NzI0MWMwYzI2NDFiNjE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKLSNp
bmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1
ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgKaW5kZXggMTcyNWFmODZl
YjIxYTQ4MTY0ZDcwZDhhZmUyYmFiNjFmY2MzMDIzMC4uODY1NTJiYzYxMDViZWNhYTZjYzI2YjVj
NWM4Yzc2MjNjNDc1YTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCkBAIC0zNCw2ICszNCwxMCBAQAog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKQEAgLTQyLDcgKzQ2LDcg
QEAgY2xhc3MgQ3J5cHRvIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8Q3J5cHRvPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3J5cHRvPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvKCkpOyB9CiAKLSAgICB2b2lkIGdldFJh
bmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBn
ZXRSYW5kb21WYWx1ZXMoSlNDOjpBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CiAK
IHByaXZhdGU6CiAgICAgQ3J5cHRvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggNWEyNDhkMGE1YzczMTJl
ZWUxYmM3MWI0MjdmNGY4NWIwMDQ2ZGU2OC4uNjExMDU2ZGQ3OTczNjRjN2IxNjQyMjI0YmRmNzVi
YmMwZWE4N2Q4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNETkVPTi5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZm
ZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRl
IDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4
IDg3MWQ3YzA1NTUwZTk4NTlkMGMxYWZhNzYzNDhiMTUwNTU2NzE4YjQuLmRjOGM2NDM3YWQ4MzMy
MTBhZDExZDVhMjU5ZTQwNGVhZmNkYTA4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMzksMTEgKzM5LDExIEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA1M2QxMmFjMzlh
ZWI3MjFlMWE3OGYyNjc3MzU4Y2E5NWZhYmFmYzk1Li42MDFjZjAzM2RjZTRjNjliY2E5NGNlMGE2
NjM1MTZiMDhjNTcwZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTQ3LDEwICs0Nywx
MCBAQAogI2ltcG9ydCAiV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQg
PHJ1bnRpbWUvVWludDE2QXJyYXkuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvVWludDMyQXJyYXkuaD4K
KyNpbXBvcnQgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1l
Lmg+Ci0jaW1wb3J0IDx3dGYvVWludDE2QXJyYXkuaD4KLSNpbXBvcnQgPHd0Zi9VaW50MzJBcnJh
eS5oPgotI2ltcG9ydCA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmgKaW5kZXggOGU2MWVkZmY5Yzg2Y2ZjZmE0MWFiNzMzMThkOTY5OTNkYWMyMTlkMi4uNzkzZWI3
YmM4OWEwYzNiODhhM2FiZGM5ZmI3ODEwOGQ4ODE0MjIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCkBAIC0y
NSwxMCArMjUsMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGlj
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogI2lmIChQTEFURk9STShNQUMp
ICYmIFVTRShDQSkgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwKSkKICNkZWZpbmUgV1RGX1VTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJ
TkdfU1RPUkUgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggYmY1MjdmZjUzYjYzMTY3YzJiODVhMTVlZjQzZDI0MGU2
Njc0NmY2YS4uODE0NTM5MGI4MTQzZjg3ZDc5MjMyNzJkY2U4ZTY2ZGViNWExYjA1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdHlwZWRlZiB1bnNp
Z25lZCBjaGFyICgqQmxlbmRUeXBlKSh1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5zaWduZWQgY2hh
ciBjb2xvckIsIHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFscGhhQik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IGJkZjU1NTJhZTE4OTgxMDQzZjUyNjJiODRiOTIwYzIy
NzFjZmMyZmEuLjRkNTJmOGY1N2M3OGE2NzIyZmM0ZmE2NDFmNmZjNmRiNmJlYjc0NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVB
c1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRl
IDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAppbmRleCAyMjk0NDI2ZGVmOWNlMTVhNjQxMzU5MjBm
NjYzZjFhYTRjZWUyZDJkLi5lNDk0YjA4YmQxZjA2NmNmMDJkOTkxMDI3NTZlMTA3OWMyNWJmOWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNp
bmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCisj
aW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9V
aW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5j
cHAKaW5kZXggMjdlNzNhYTljZjU3NTEwZTQzMmI0NDg1OTdhZTRmYjkxYzYxOTNhMC4uMDYyOTFl
NzliMjdhMzg3MzQ0NzRmY2QxMzE0ZWZiZDFhNWFlN2M5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IGZhZDkyYzk1YTFmNTBlNDBjZjE1MzA3
ODZjYmNlZjY1NWQ4YmQ3NGEuLjczOTY4ZDg4YjlmNmM2YmZjODhlM2ViNzI2NDc4NGJhY2MyYTg5
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1
ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNs
dWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVs
Sm9icy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKaW5kZXggYzIyZjUwZWY5MDEwOWMyODBh
YmNkZmJhNDY3NGE4ODQ4Zjc3NDdjZC4uYzQzMDZjMGZhMTRhODI0NDNhMzk0MmQ4NWMzN2JhYjAy
ZmYzMGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUN1c3RvbUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNs
dWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5j
bHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OENs
YW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVu
dE1hcC5jcHAKaW5kZXggMDI1ZmY2NWFjM2E4NmMzNzI5Y2Q3ZTA1ZWMzNDE5MGJiMDg3YmJhNS4u
OGViNTY0MGUyOGJjNmVhYjJlNWJiMWFhOGQ5YjJlNjVhZmE1MTYxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3Bs
YWNlbWVudE1hcC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xh
bXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAppbmRleCBjMWVmYTJhZGVhZjY1
MDJmNjY4MTAxMDYxYWY4ZTU1NjlkMjM0ZGM4Li4wOTc3ZGQyZWY3NWViYjZiNDY5ZjljNGQyNDJk
MDJiMDU5ZDM5ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5j
bHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKICNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBl
ZEFycmF5Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAK
aW5kZXggNDQ2ZTI1YTEwYzVlNjM0NzVhNWU0MGE0NzRlZGRlNGEyM2I2Yzg0ZS4uNjFiYTMwMmE0
YWNlZDgxN2U5NDM4OTY1NThiYjUzYzhjOGViMmM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAK
QEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVk
ZSAiVGV4dFN0cmVhbS5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9i
cy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVMaWdodGluZy5oCmluZGV4IGI0MGJiMTMwOTBhYmYzMTI3NjQ4OTEzNzY5Njc3ODYz
ZWIwZGViOGUuLmViNzliYmRiY2I1NGIwNWMzOGExOTg0MmIwNTA3NTc0NzAyNDA4MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiTGlnaHRTb3VyY2UuaCIKICNpbmNs
dWRlICJQb2ludExpZ2h0U291cmNlLmgiCiAjaW5jbHVkZSAiU3BvdExpZ2h0U291cmNlLmgiCi0j
aW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50
OENsYW1wZWRBcnJheS5oPgogCiAvLyBDb21tb24gYmFzZSBjbGFzcyBmb3IgRkVEaWZmdXNlTGln
aHRpbmcgYW5kIEZFU3BlY3VsYXJMaWdodGluZwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggOWU3
MjBmNzRhY2ViOTc4OTcxZjQyZjFlOTUxNTM3MzhkMmY1Y2QyOC4uNmIwMjhlZTM5Mzc2OTI5ZGRl
ZWI3ZjM0YWMxNDI3ODI2ZmQyZTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMzAsOCArMzAs
OCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL1BhcmFsbGVsSm9icy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgc3RkOjptaW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5j
cHAKaW5kZXggMTc2ODg3NDZmNmY5ZTQ0NjI3MWE0MWZjYjFlMjUxMTFlYWQxYzVhNS4uYzRiZDk3
OTVkNmNlZDgzM2Q0ZTdmYjY5ZmUzYjFjNWFjOTc0ZmY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcApA
QCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRl
ICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2Jz
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IDVkZDA2NWQ5OGRhN2M3OWY1YzliN2IxNzk4
ZmQwMDExN2IzYTdjYjUuLmYxYjQ1ZDY5NzExMzJiYzhkZWQ0NDlkMTA4ZTFiNWU0YTYwYmQ0MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGaWx0ZXIu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKLSNp
bmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4
Q2xhbXBlZEFycmF5Lmg+CiAKICNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCiAjaW5jbHVk
ZSA8YXJtX25lb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDI5NjQ2MWY5ZjE5NzRiODg5YzIzZmQ4
MjM2YWY4NjdhZDUyZWNhY2UuLmNkYzdhNTAxMmVmNzhjZmFjMWI1ZWRiZDE1YTE4Yzk4Mjg1Y2I4
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtMjcsMTAgKzI3LDExIEBACiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENs
YW1wZWRBcnJheS5oPgorCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFC
TEUoT1BFTkNMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCmluZGV4IDI2MTNhYWFhODY0MmU5ODVh
NmI5Mzc2Y2MyNDQ2OTU5MDc4NDcwMzEuLmMyYzQzZTk0NjAxODE3MmMzYmY2OTRjZTYzOTY2ZWRh
Y2Y0OTg5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KQEAgLTQzLDExICs0MywxMSBAQAog
I2luY2x1ZGUgPE9wZW5HTC9nbC5oPgogI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJHTE9iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgotI2lu
Y2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5
QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCA5ZDQ2
YTRjM2RlMGEwODNlMTg4OTAxYWI1ZTI2YTA0NDBlN2VlMDQ5Li42OTAyYjYxMzVlZmIxYTVmNmUw
NThkMDM5M2ZkYjNjYWM4Nzc5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQAogI2luY2x1ZGUgIkludFNpemUu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5j
bHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5o
PgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJh
eS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJy
YXlQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2lmIFVTRShPUEVOR0xfRVNfMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IDI1YmE0NDk4ZWI2ZGJiZjM4N2EzOWIwNzM4MGIzZGNhNWRhYzVhZjUuLmQw
MjQ5ZWRhZGQyY2I4NGNmZGRjMTNhMTY1MTg3NzMyNTQwNDcwOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAj
aW5jbHVkZSAiTm9kZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNs
dWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDll
N2ZlNTgyNTJmOTE5Yjg2NzBkZTFkOGFmZGFlMTlmYjY3M2NmZi4uNGJjMDU5NmU3OGNlMDAxYzk2
ZTk0MDdhYzA3MDI5MmQ0NTUxYmE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCkBAIC01OCwxMCArNTgsMTAgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFVwbG9hZC5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL09w
ZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYv
QXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDFjZDc2YmNkZDQ5MDUy
Yjg4MDU4ZDhhZTNmMDNhYzVhMzZhOTM2ZGEuLjZhZmZmMzdlYTZjYjRkMDUxMDAxY2FmY2Y5YWIy
YWVkMDUyYTlhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0zNSw2ICsz
NSwxMSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJy
YXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQmxvYjsKQEAgLTkxLDggKzk2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2Vu
ZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKEJsb2IqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKERPTUZvcm1EYXRhKiwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2Vu
ZChKU0M6OkFycmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChKU0M6
OkFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFib3J0KCk7CiAg
ICAgdm9pZCBzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgb3ZlcnJpZGVNaW1lVHlw
ZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKQEAgLTEyMCw4ICsxMjUsOCBAQCBwdWJsaWM6CiAg
ICAgUmVzcG9uc2VUeXBlQ29kZSByZXNwb25zZVR5cGVDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNwb25zZVR5cGVDb2RlOyB9CiAgICAgCiAgICAgLy8gcmVzcG9uc2UgYXR0cmlidXRlIGhhcyBj
dXN0b20gZ2V0dGVyLgotICAgIEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyKEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBBcnJheUJ1ZmZlciogb3B0aW9uYWxSZXNwb25zZUFycmF5QnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUFycmF5QnVmZmVyLmdldCgpOyB9CisgICAgSlND
OjpBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlcihFeGNlcHRpb25Db2RlJik7CisgICAg
SlNDOjpBcnJheUJ1ZmZlciogb3B0aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZUFycmF5QnVmZmVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNldExhc3RT
ZW5kTGluZU51bWJlcih1bnNpZ25lZCBsaW5lTnVtYmVyKSB7IG1fbGFzdFNlbmRMaW5lTnVtYmVy
ID0gbGluZU51bWJlcjsgfQogICAgIHZvaWQgc2V0TGFzdFNlbmRVUkwoY29uc3QgU3RyaW5nJiB1
cmwpIHsgbV9sYXN0U2VuZFVSTCA9IHVybDsgfQpAQCAtMjIyLDcgKzIyNyw3IEBAIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKICAgICAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKLSAgICBt
dXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9yZXNwb25zZUFycmF5QnVmZmVyOworICAgIG11
dGFibGUgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmVzcG9uc2VBcnJheUJ1ZmZlcjsKIAog
ICAgIGJvb2wgbV9lcnJvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208141</attachid>
            <date>2013-08-05 12:47:24 -0700</date>
            <delta_ts>2013-08-05 13:12:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119489-20130805125036.patch</filename>
            <type>text/plain</type>
            <size>271725</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YjRkNzAyYTM1YjEzNDQ5ODJkNTUzNzhlZTAxZDY0MGM3NWQyN2E2Li4wN2UxY2MzNjRmZGZmZTQz
ZTM1NGEzZDY5NjI0NmMxYjVjNzYxNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQyBpbiBhZHZhbmNlIG9mIHJlLWltcGxlbWVudGF0aW9u
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEpTQ1R5cGVkQXJy
YXlTdHVicy5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Ojp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjphZGRWaWV3KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmguCisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpkYXRhKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM6OmNvcHlUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjppc05ldXRlcmVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6On5BcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZSk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpzbGljZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp+
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaC4KKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJhc2VBZGRyZXNz
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXROZXV0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojppc05ldXRlcmFibGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeVN1YlJhbmdlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojpz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6CisgICAgICAg
ICogcnVudGltZS9GbG9hdDMyQXJyYXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0Zs
b2F0MzJBcnJheS5oLgorICAgICAgICAoSlNDOjpGbG9hdDMyQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OkZsb2F0MzJBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OkZsb2F0MzJBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpGbG9hdDMyQXJyYXkpOgorICAgICAg
ICAoSlNDOjpGbG9hdDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0Zsb2F0
NjRBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmguCisg
ICAgICAgIChKU0M6OkZsb2F0NjRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFycmF5OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheSk6CisgICAgICAgIChKU0M6OkZsb2F0NjRB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSW50MTZBcnJheS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oLgorICAgICAgICAoSlNDOjpJbnQxNkFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkludDE2QXJyYXk6OkludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpJbnQxNkFycmF5OjpzdWJh
cnJheSk6CisgICAgICAgICogcnVudGltZS9JbnQzMkFycmF5Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9JbnQzMkFycmF5LmguCisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OmdldFR5
cGUpOgorICAgICAgICAoSlNDOjpJbnQzMkFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJ
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50MzJBcnJh
eTo6SW50MzJBcnJheSk6CisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OnN1YmFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL0ludDhBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYv
SW50OEFycmF5LmguCisgICAgICAgIChKU0M6OkludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAg
IChKU0M6OkludDhBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpJbnQ4QXJyYXkpOgor
ICAgICAgICAoSlNDOjpJbnQ4QXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTo6SW50ZWdyYWxU
eXBlZEFycmF5QmFzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QmFzZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6
VHlwZWRBcnJheUJhc2U6OmRhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c2V0
KToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OnNldFJhbmdlKToKKyAgICAgICAgKEpT
Qzo6VHlwZWRBcnJheUJhc2U6Onplcm9SYW5nZSk6CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlC
YXNlOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlCYXNlOjppdGVtKToKKyAgICAgICAgKEpTQzo6VHlw
ZWRBcnJheUJhc2U6OmNoZWNrSW5ib3VuZERhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5
QmFzZTo6VHlwZWRBcnJheUJhc2UpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c3ViYXJyYXlJbXBsKToKKyAgICAgICAg
KEpTQzo6VHlwZWRBcnJheUJhc2U6Om5ldXRlcik6CisgICAgICAgICogcnVudGltZS9VaW50MTZB
cnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaC4KKyAgICAg
ICAgKEpTQzo6VWludDE2QXJyYXk6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJheTo6VWludDE2QXJyYXkpOgorICAgICAgICAo
SlNDOjpVaW50MTZBcnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDMyQXJy
YXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQzMkFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6OlVpbnQzMkFycmF5KToKKyAgICAgICAgKEpT
Qzo6VWludDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL1VpbnQ4QXJyYXku
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaC4KKyAgICAgICAgKEpT
Qzo6VWludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpVaW50OEFycmF5OjpVaW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6VWludDhB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6Onpl
cm9GaWxsKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheSk6CisgICAgICAgIChK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDEzLTA4LTA1ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbQXV0b21ha2VdIERlZmluZSBFTkFCTEVfSklUIHRocm91Z2ggdGhlIEF1dG9jb25m
IGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCBiZjgzMjAzNjExZGMzOGVmMDMxZDRkMDFkMDNjY2ExMzczZWU0MGFmLi5l
ZGEwMjFiNzdjMTg1NzQyMDMxZjQ1ZTBkOGYwMDRmODA3ZmQ3YjJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEzLTA4LTA1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBUeXBlZEFycmF5IGltcGxlbWVudGF0aW9uIGludG8gSlNDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk0ODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgVHlwZWRBcnJheSBpbXBs
ZW1lbnRhdGlvbiBmcm9tIFdURgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9y
d2FyZC5oOgorCiAyMDEzLTA4LTAyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBidW5jaCBvZiByZWR1bmRhbnQgY2hlY2tzIGZvciBl
bXB0eSBzdHJpbmcgaW4gU3RyaW5nSW1wbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUzMWY1OTE5NzhmNGZkODJk
ZjMxYWNkZjRiYTZjZDQ2ZmMxYWI3M2QuLjZlYmFlOWEzN2MzZGNlM2QwOWQ4YTYxNzM2NDFmNTEz
Njg5ZmU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjIgQEAKKzIwMTMtMDgtMDUgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1w
bGVtZW50YXRpb24gaW50byBKU0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExOTQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBXZWJDb3JlIGZvciBuZXcgbG9jYXRpb24gb2YgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
QXJyYXlCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9GbG9hdDMyQXJyYXkuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9GbG9hdDY0QXJyYXkuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9JbnQxNkFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvSW50MzJBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0ludDhBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaDogQWRkZWQuCisgICAgICAg
ICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQxNkFycmF5Lmg6IEFkZGVkLgor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OEFycmF5Lmg6IEFkZGVk
LgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDhDbGFtcGVkQXJyYXku
aDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0RmxvYXRGcmVxdWVuY3lEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRCeXRlVGltZURvbWFpbkRhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvRGF0YSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlclByb2Nlc3Nvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
OgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJy
YXlCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJW
aWV3SGVscGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zp
bGVSZWFkZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0cmFuc2Zl
ckFycmF5QnVmZmVycyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGUpOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgor
ICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0Zp
bGVSZWFkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmls
ZVJlYWRlclN5bmMuY3BwOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaDoKKyAg
ICAgICAgKiBmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcDoKKyAgICAgICAgKiBmaWxlYXBp
L1dlYktpdEJsb2JCdWlsZGVyLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Fy
cmF5QnVmZmVyLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvRGF0YVZpZXcuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9G
bG9hdDMyQXJyYXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9j
YW52YXMvSW50MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvSW50OEFycmF5Lmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGw6CisgICAgICAgICogaHRt
bC9jYW52YXMvVWludDMyQXJyYXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQ4QXJy
YXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xCdWZmZXI6OmVsZW1lbnRBcnJheUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgICogcGFnZS9DcnlwdG8uY3BwOgor
ICAgICAgICAqIHBhZ2UvQ3J5cHRvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Om9wdGlvbmFs
UmVzcG9uc2VBcnJheUJ1ZmZlcik6CisKIDIwMTMtMDgtMDUgIFZpdmVrIEdhbGF0YWdlICA8dml2
ZWsudmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgWE1MVHJlZVZpZXdlciBzaG91bGQgYmUgY3Jl
YXRlZCBvbmx5IGluIHRoZSBYTUwgdmlld2VyIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMGY5ZWVjYjVkY2VmNWUwNjY5NmRkMmZkYTUyNzRjNzg0
OTE4NzFlZC4uMjBiMzBkYjhiMmIyM2IzMGY3YWFjZjI1YWJkYzQ4MjhmYWY4MGE5OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMyLDcgKzMyLDcgQEAg
amF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAogamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
Ci0gICAgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElTaGltcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBl
ck9iamVjdC5oIFwKQEAgLTY0Myw2ICs2NDMsMTAgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5oIFwKQEAgLTcw
NCw2ICs3MDgsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRpb25IYXJuZXNzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zsb2F0
MzJBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0QXJyYXku
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlRHVt
cC5jcHAgXApAQCAtNzIyLDYgKzcyOCwxMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MTZBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnQzMkFycmF5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludDhBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVu
ZGVkU3RydWN0dXJlQ2hhaW4uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uY3BwIFwKQEAgLTg4MSw4ICs4OTEsMTMgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UcmFjaW5nLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlEZXNjcmlwdG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VpbnQxNkFycmF5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VpbnQxNldpdGhGcmFjdGlvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VaW50MzJBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OEFy
cmF5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNU3RhY2tCb3VuZHMuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5U3R1YnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
U0NUeXBlZEFycmF5U3R1YnMuaAppbmRleCBkN2FjMWVmNzJlY2FjNmEyZTZkYzcyODNhNzgxZTVh
YmU1NWJmNzIxLi4zOTNlMTIxYjJiZmY3MDA4ZDg3YjIzMDljN2RlOTNlNzFiOGY2NWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCkBAIC0yNiwxOSArMjYs
MjAgQEAKICNpZm5kZWYgSlNDVHlwZWRBcnJheVN0dWJzX2gKICNkZWZpbmUgSlNDVHlwZWRBcnJh
eVN0dWJzX2gKIAorI2luY2x1ZGUgIkZsb2F0MzJBcnJheS5oIgorI2luY2x1ZGUgIkZsb2F0NjRB
cnJheS5oIgorI2luY2x1ZGUgIkludDE2QXJyYXkuaCIKKyNpbmNsdWRlICJJbnQzMkFycmF5Lmgi
CisjaW5jbHVkZSAiSW50OEFycmF5LmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3Qu
aCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDY0QXJy
YXkuaD4KKyNpbmNsdWRlICJVaW50MTZBcnJheS5oIgorI2luY2x1ZGUgIlVpbnQzMkFycmF5Lmgi
CisjaW5jbHVkZSAiVWludDhBcnJheS5oIgorI2luY2x1ZGUgIlVpbnQ4Q2xhbXBlZEFycmF5Lmgi
CisKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9JbnQxNkFycmF5Lmg+
Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSW50OEFycmF5Lmg+
Ci0jaW5jbHVkZSA8d3RmL1VpbnQxNkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFt
cGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDViOTk2M2M5MWFkNDY3MThlODgyNGU4Y2NiYjNkNjAyNjdmNTY0ZjUuLmFi
NGY5N2M0MjUyMjA0NjBiYTlkZjI3N2FkZThjMTE3ODNkNGU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04MTQsNiArODE0LDIxIEBACiAJCUE3QTRBRTBEMTc5NzNCNEQwMDU2
MTJCMSAvKiBKSVRTdHVic01JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QTRBRTA5MTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic01JUFMuaCAq
LzsgfTsKIAkJQTdBNEFFMEYxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzU0g0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwQjE3OTczQjRE
MDA1NjEyQjEgLyogSklUU3R1YnNTSDQuaCAqLzsgfTsKIAkJQTdBNEFFMTAxNzk3M0I0RDAwNTYx
MkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwQzE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1YnNYODZD
b21tb24uaCAqLzsgfTsKKwkJQTdBOEFGMzQxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThB
RjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi87IH07CisJCUE3QThBRjM1
MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5
QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTdBOEFGMzYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyNzE3QURCNUYz
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLzsgfTsKKwkJQTdBOEFGMzcxN0FEQjVG
MzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVm
ZmVyVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI5MTdBREI1RjMwMDVB
QjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYy
QTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8q
IEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdBOEFGMkIxN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNCMTdBREI1RjMwMDVB
QjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNDMTdB
REI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyRDE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
QThBRjNEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyRTE3QURCNUYz
MDA1QUIxNzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNFMTdBREI1RjMwMDVBQjE3NCAv
KiBUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdBOEFGMkYxN0FEQjVGMzAwNUFCMTc0IC8qIFR5cGVkQXJyYXlCYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGM0Yx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFy
cmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTdBOEFGNDAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMTE3QURCNUYzMDA1
QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjQyMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdCNDhGNDkwRUU4
OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8q
IEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwICovOyB9OwogCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhB
MzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3QjYw
MTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1
IC8qIFVubGlua2VkQ29kZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE5MDEsNiArMTkxNiwyMSBAQAogCQlBN0E0QUUwQzE3OTczQjRE
MDA1NjEyQjEgLyogSklUU3R1YnNYODZDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklUU3R1YnNYODZDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTdBN0VFNzQxMUI5OEI4RDAwNjVBMTRGIC8qIEFTVEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVNUQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBN0E3RUU3NzExQjk4QjhEMDA2NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW50YXhDaGVja2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3
NCAvKiBBcnJheUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJh
eUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNzE3QURCNUYz
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMy
QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQzMkFycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAv
KiBGbG9hdDY0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQ2
NEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJCMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50OEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJDMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkQx
N0FEQjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4
QUYyRTE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBl
ZEFycmF5QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYzMDE3QURCNUYzMDA1
QUIxNzQgLyogVWludDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
aW50OEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjMxMTdBREI1
RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVaW50OENsYW1wZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQzMkFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxl
QWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVB
bGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCNDhEQjYwRUU3NENG
QzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jv
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4cG9ydE1hY3Jvcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NSw2ICsyODI1LDIxIEBACiAJCTdFRjZF
MEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXIuY3BwICovLAorCQkJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZl
ci5oICovLAorCQkJCUE3QThBRjI3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcu
Y3BwICovLAorCQkJCUE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcu
aCAqLywKKwkJCQlBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8s
CisJCQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAorCQkJ
CUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYy
QzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAorCQkJCUE3QThBRjJEMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMkUxN0FEQjVGMzAwNUFC
MTc0IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLywKKwkJCQlBN0E4QUYyRjE3QURCNUYz
MDA1QUIxNzQgLyogVHlwZWRBcnJheUJhc2UuaCAqLywKKwkJCQlBN0E4QUYzMDE3QURCNUYzMDA1
QUIxNzQgLyogVWludDhBcnJheS5oICovLAorCQkJCUE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAv
KiBVaW50OENsYW1wZWRBcnJheS5oICovLAorCQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAv
KiBVaW50MTZBcnJheS5oICovLAorCQkJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50
MzJBcnJheS5oICovLAogCQkJCTY1NTNBMzJGMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93
UGF0aHNFeGNlcHRpb25zLmNwcCAqLywKIAkJCQk2NTUzQTMzMDE3QTFGMUVFMDA4Q0Y2RjMgLyog
Q29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5
QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKQEAgLTM1MTAsNiArMzU1NSw3IEBACiAJCQkJQkM2QUFB
RTUwRTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
M0Q3QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3QThBRjQyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9j
a0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBD
b2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIxNjQwODhC
MjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTk0LDcgKzM2NDAs
OSBAQAogCQkJCTBGQkMwQUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3NzUxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZp
bmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRkYzQzAxNzk4Njg5NDAwMDJGNDYyIC8q
IERGR0ZpbHRyYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNDMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzhBOTc3NzE3
OTczOEI4MDA5REY3NDQgLyogREZHRmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4
QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdEODlDRjgxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQTE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hMaXZl
bmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzY1OSw2ICszNzA3LDcgQEAK
IAkJCQkwRjJCREM0OTE1MjI4MDk2MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQkRDNEIxNTIyODA5RDAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZl
bnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAv
KiBERkdWYXJpYWRpY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzQTE3QURC
NUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk2MDE0
RUY5MEJEMDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkRCMkNFODE3NDgzMEEyMDA3QjNDMUIgLyogREZHV29ya2xpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzMxMTU4RUJENTQwMDRDQjlGRiAvKiBEaXNhc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzY3Niw2ICszNzI1LDcgQEAKIAkJCQkwRkIxMDU4
NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4
M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkRCMkNDOTE3M0RBNTIwMDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0YxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTA4MTcwNTEzREIwMEJCNzIyQyAvKiBGVExB
YmJyZXZpYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcy
MkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhC
MDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNzI2LDYgKzM3NzYsNyBAQAogCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBI
YW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJD
IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAv
KiBIZWFwQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3
NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Rjk3NDQ3MTM4Qzg1
M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNEQz
MUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zODQ5LDkgKzM5MDAsMTIgQEAKIAkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyog
TExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwQTMxNEJBN0Y4
RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFG
M0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE3QThBRjNFMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5QmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkVEMjg3QjIxNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bj
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRTbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3
NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4MzlEMTRCQ0Y0NjYw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFNUFCMzgxNzk5
RTRCMjAwRDI4MzNEIC8qIExMVk1EaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
MkUzMTM5MTM0RkYwQTYwMEFGQURCNSAvKiBMb2NhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTEy
LDYgKzM5NjYsNyBAQAogCQkJCTE0OTcyMDkxMTRFQjgzMTUwMEZFQjFCNyAvKiBQYXNzV2Vhay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNEIxNEMxNkQ0M0UwRDAwMUNEQTVBIC8qIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzQxNEUx
QjYwMDAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE3QThBRjQxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY5ODIwNjExNkJGRTM4MzAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVO
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MDBFMTZGNUNEMDBCMzQ0NjAgLyogUHJv
ZmlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTM5LDE0ICszOTk0LDE3IEBACiAJCQkJMEZCN0Yz
OUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3RlY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE3QThBRjQwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQ
dXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQw
MEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIx
MDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY2MEFD
MjE2NzQwRjgzMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdBOEFGM0QxN0FEQjVGMzAwNUFCMTc0IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBp
biBIZWFkZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAyQzIwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4
cENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIx
NzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMkQ2MEUxNzA3MDgw
MDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
NzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDVCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QuaCBpbiBIZWFkZXJzICov
LApAQCAtNDYxOSw2ICs0Njc3LDcgQEAKIAkJCQkxNDZBQUIzODBCNjZBOTQ0MDBFNTVGMTYgLyog
SlNTdHJpbmdSZWZDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkUz
QzYxQTE2N0JBQkVFMDA2RDc2MEEgLyogSlNWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE3
QThBRjM2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTRCRDVBMzIwQTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDcxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTVmFyaWFibGVPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFM0M2MUMxNjdCQUJFRTAwNkQ3NjBBIC8qIEpT
VmlydHVhbE1hY2hpbmUubW0gaW4gU291cmNlcyAqLywKQEAgLTQ2MzAsNiArNDY4OSw3IEBACiAJ
CQkJQkNGRDhDOTIwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkI1NDY3OTE0RjVDNDZCMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTVBQjgzNDIwREE0MzIyNTAwQkM4M0YzIC8qIExl
Z2FjeVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3QThBRjM0MTdBREI1RjMwMDVB
QjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFCMDEwN0VD
NTQxMDA0MkVDMkMgLyogTGV4ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NTcxNTkx
NEEyMDAwNENCOUZGIC8qIExpbmtCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFMkVB
NkMwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmJlYjZiZTY2NTc4ZjhhNDQ0ZTIyZmE0YzZlMTNhMTBkNDIwZGJjMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAt
MCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFy
cmF5QnVmZmVyLmgiCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKworI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitib29sIEFycmF5QnVmZmVyOjp0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1
bHQsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiA+JiBuZXV0ZXJlZFZpZXdzKQorewor
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2VlcEFsaXZlKHRoaXMpOworCisgICAgaWYgKCFtX2Nv
bnRlbnRzLm1fZGF0YSkgeworICAgICAgICByZXN1bHQubV9kYXRhID0gMDsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGJvb2wgYWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gdHJ1
ZTsKKyAgICBmb3IgKEFycmF5QnVmZmVyVmlldyogaSA9IG1fZmlyc3RWaWV3OyBpOyBpID0gaS0+
bV9uZXh0VmlldykgeworICAgICAgICBpZiAoIWktPmlzTmV1dGVyYWJsZSgpKQorICAgICAgICAg
ICAgYWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGFsbFZp
ZXdzQXJlTmV1dGVyYWJsZSkKKyAgICAgICAgbV9jb250ZW50cy50cmFuc2ZlcihyZXN1bHQpOwor
ICAgIGVsc2UgeworICAgICAgICBtX2NvbnRlbnRzLmNvcHlUbyhyZXN1bHQpOworICAgICAgICBp
ZiAoIXJlc3VsdC5tX2RhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgd2hpbGUgKG1fZmlyc3RWaWV3KSB7CisgICAgICAgIEFycmF5QnVmZmVyVmlldyogY3VycmVu
dCA9IG1fZmlyc3RWaWV3OworICAgICAgICByZW1vdmVWaWV3KGN1cnJlbnQpOworICAgICAgICBp
ZiAoYWxsVmlld3NBcmVOZXV0ZXJhYmxlIHx8IGN1cnJlbnQtPmlzTmV1dGVyYWJsZSgpKQorICAg
ICAgICAgICAgY3VycmVudC0+bmV1dGVyKCk7CisgICAgICAgIG5ldXRlcmVkVmlld3MuYXBwZW5k
KGN1cnJlbnQpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBcnJheUJ1ZmZl
cjo6YWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCit7CisgICAgdmlldy0+bV9idWZmZXIg
PSB0aGlzOworICAgIHZpZXctPm1fcHJldlZpZXcgPSAwOworICAgIHZpZXctPm1fbmV4dFZpZXcg
PSBtX2ZpcnN0VmlldzsKKyAgICBpZiAobV9maXJzdFZpZXcpCisgICAgICAgIG1fZmlyc3RWaWV3
LT5tX3ByZXZWaWV3ID0gdmlldzsKKyAgICBtX2ZpcnN0VmlldyA9IHZpZXc7Cit9CisKK3ZvaWQg
QXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3KiB2aWV3KQoreworICAgIEFT
U0VSVCh0aGlzID09IHZpZXctPm1fYnVmZmVyKTsKKyAgICBpZiAodmlldy0+bV9uZXh0VmlldykK
KyAgICAgICAgdmlldy0+bV9uZXh0Vmlldy0+bV9wcmV2VmlldyA9IHZpZXctPm1fcHJldlZpZXc7
CisgICAgaWYgKHZpZXctPm1fcHJldlZpZXcpCisgICAgICAgIHZpZXctPm1fcHJldlZpZXctPm1f
bmV4dFZpZXcgPSB2aWV3LT5tX25leHRWaWV3OworICAgIGlmIChtX2ZpcnN0VmlldyA9PSB2aWV3
KQorICAgICAgICBtX2ZpcnN0VmlldyA9IHZpZXctPm1fbmV4dFZpZXc7CisgICAgdmlldy0+bV9w
cmV2VmlldyA9IHZpZXctPm1fbmV4dFZpZXcgPSAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2M3MzRjNjczNDgxMDk3
YzgxNzZkZDY0YThkYTBiZGIzNGM2ZWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQXJyYXlCdWZmZXJfaAorI2RlZmluZSBBcnJheUJ1ZmZlcl9oCisKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKKwor
Y2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJy
YXlCdWZmZXJDb250ZW50cyk7CitwdWJsaWM6CisgICAgQXJyYXlCdWZmZXJDb250ZW50cygpIAor
ICAgICAgICA6IG1fZGF0YSgwKQorICAgICAgICAsIG1fc2l6ZUluQnl0ZXMoMCkKKyAgICB7IH0K
KworICAgIGlubGluZSB+QXJyYXlCdWZmZXJDb250ZW50cygpOworCisgICAgdm9pZCogZGF0YSgp
IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgeyByZXR1cm4g
bV9zaXplSW5CeXRlczsgfQorCitwcml2YXRlOgorICAgIEFycmF5QnVmZmVyQ29udGVudHModm9p
ZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMpIAorICAgICAgICA6IG1fZGF0YShkYXRhKQor
ICAgICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCisgICAgeyB9CisKKyAgICBmcmll
bmQgY2xhc3MgQXJyYXlCdWZmZXI7CisKKyAgICBlbnVtIEluaXRpYWxpemF0aW9uUG9saWN5IHsK
KyAgICAgICAgWmVyb0luaXRpYWxpemUsCisgICAgICAgIERvbnRJbml0aWFsaXplCisgICAgfTsK
KworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSwgQXJyYXlC
dWZmZXJDb250ZW50cyYpOworICAgIHZvaWQgdHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYg
b3RoZXIpCisgICAgeworICAgICAgICBBU1NFUlQoIW90aGVyLm1fZGF0YSk7CisgICAgICAgIG90
aGVyLm1fZGF0YSA9IG1fZGF0YTsKKyAgICAgICAgb3RoZXIubV9zaXplSW5CeXRlcyA9IG1fc2l6
ZUluQnl0ZXM7CisgICAgICAgIG1fZGF0YSA9IDA7CisgICAgICAgIG1fc2l6ZUluQnl0ZXMgPSAw
OworICAgIH0KKworICAgIHZvaWQgY29weVRvKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOworICAgICAgICBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShtX3NpemVJbkJ5dGVzLCBzaXplb2YoY2hhciksIEFycmF5
QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplLCBvdGhlcik7CisgICAgICAgIGlmICghb3Ro
ZXIubV9kYXRhKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtZW1jcHkob3RoZXIubV9k
YXRhLCBtX2RhdGEsIG1fc2l6ZUluQnl0ZXMpOworICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVz
ID0gbV9zaXplSW5CeXRlczsKKyAgICB9CisKKyAgICB2b2lkKiBtX2RhdGE7CisgICAgdW5zaWdu
ZWQgbV9zaXplSW5CeXRlczsKK307CisKK2NsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIFJlZkNv
dW50ZWQ8QXJyYXlCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGNyZWF0ZShBcnJheUJ1ZmZlciopOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7
CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlC
dWZmZXJDb250ZW50cyYpOworCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFy
cmF5OjpjcmVhdGVVbmluaXRpYWxpemVkLgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKworICAgIGlubGluZSB2b2lkKiBkYXRhKCk7CisgICAg
aW5saW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKKyAgICBpbmxpbmUgdW5zaWduZWQgYnl0
ZUxlbmd0aCgpIGNvbnN0OworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHNs
aWNlKGludCBiZWdpbiwgaW50IGVuZCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IHNsaWNlKGludCBiZWdpbikgY29uc3Q7CisKKyAgICB2b2lkIGFkZFZpZXcoQXJy
YXlCdWZmZXJWaWV3Kik7CisgICAgdm9pZCByZW1vdmVWaWV3KEFycmF5QnVmZmVyVmlldyopOwor
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50
cyYsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiA+JiBuZXV0ZXJlZFZpZXdzKTsKKyAg
ICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9jb250ZW50cy5tX2RhdGE7IH0KKworICAg
IH5BcnJheUJ1ZmZlcigpIHsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5
KTsKKworICAgIGlubGluZSBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJik7CisgICAg
aW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwg
dW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChpbnQg
aW5kZXgpIGNvbnN0OworICAgIHN0YXRpYyBpbmxpbmUgaW50IGNsYW1wVmFsdWUoaW50IHgsIGlu
dCBsZWZ0LCBpbnQgcmlnaHQpOworCisgICAgQXJyYXlCdWZmZXJDb250ZW50cyBtX2NvbnRlbnRz
OworICAgIEFycmF5QnVmZmVyVmlldyogbV9maXJzdFZpZXc7Cit9OworCitpbnQgQXJyYXlCdWZm
ZXI6OmNsYW1wVmFsdWUoaW50IHgsIGludCBsZWZ0LCBpbnQgcmlnaHQpCit7CisgICAgQVNTRVJU
KGxlZnQgPD0gcmlnaHQpOworICAgIGlmICh4IDwgbGVmdCkKKyAgICAgICAgeCA9IGxlZnQ7Cisg
ICAgaWYgKHJpZ2h0IDwgeCkKKyAgICAgICAgeCA9IHJpZ2h0OworICAgIHJldHVybiB4OworfQor
CitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCit7CisgICAgcmV0dXJuIGNyZWF0
ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJv
SW5pdGlhbGl6ZSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpj
cmVhdGUoQXJyYXlCdWZmZXIqIG90aGVyKQoreworICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKG90aGVyLT5kYXRhKCksIG90aGVyLT5ieXRlTGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK3sKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwor
ICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5
QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplLCBjb250ZW50cyk7CisgICAgaWYgKCFjb250
ZW50cy5tX2RhdGEpCisgICAgICAgIHJldHVybiAwOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7CisgICAgbWVtY3B5
KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIHJldHVybiBidWZmZXIu
cmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKEFycmF5QnVmZmVyQ29udGVudHMmIGNvbnRlbnRzKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXJyYXlCdWZmZXIoY29udGVudHMpKTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1l
bnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXpl
KTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCit7CisgICAgQXJyYXlCdWZmZXJD
b250ZW50cyBjb250ZW50czsKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShu
dW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3ksIGNvbnRlbnRzKTsKKyAgICBpZiAo
IWNvbnRlbnRzLm1fZGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOworfQorCitBcnJheUJ1ZmZlcjo6QXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJDb250ZW50cyYgY29udGVudHMpCisgICAgOiBtX2ZpcnN0VmlldygwKQor
eworICAgIGNvbnRlbnRzLnRyYW5zZmVyKG1fY29udGVudHMpOworfQorCit2b2lkKiBBcnJheUJ1
ZmZlcjo6ZGF0YSgpCit7CisgICAgcmV0dXJuIG1fY29udGVudHMubV9kYXRhOworfQorCitjb25z
dCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVu
dHMubV9kYXRhOworfQorCit1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29udGVudHMubV9zaXplSW5CeXRlczsKK30KKworUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGludCBiZWdpbiwgaW50IGVuZCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBjbGFtcEluZGV4
KGVuZCkpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2Uo
aW50IGJlZ2luKSBjb25zdAoreworICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdp
biksIGJ5dGVMZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOworICAgIHJl
dHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
ICsgYmVnaW4sIHNpemUpOworfQorCit1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChp
bnQgaW5kZXgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5n
dGgoKTsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGgg
KyBpbmRleDsKKyAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7
Cit9CisKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5LCBBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQp
Cit7CisgICAgLy8gRG8gbm90IGFsbG93IDMyLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwgc2l6
ZS4KKyAgICAvLyBGSVhNRTogV2h5IG5vdD8gVGhlIHRyeUZhc3RDYWxsb2MgZnVuY3Rpb24gYWxy
ZWFkeSBjaGVja3MgaXRzIGFyZ3VtZW50cywKKyAgICAvLyBhbmQgd2lsbCBmYWlsIGlmIHRoZXJl
IGlzIGFueSBvdmVyZmxvdywgc28gd2h5IHNob3VsZCB3ZSBpbmNsdWRlIGEKKyAgICAvLyByZWR1
ZGFudCB1bm5lY2Vzc2FyaWx5IHJlc3RyaWN0aXZlIGNoZWNrIGhlcmU/CisgICAgaWYgKG51bUVs
ZW1lbnRzKSB7CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxl
bWVudEJ5dGVTaXplOworICAgICAgICBpZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxl
bWVudEJ5dGVTaXplKSB7CisgICAgICAgICAgICByZXN1bHQubV9kYXRhID0gMDsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBib29sIGFsbG9jYXRpb25TdWNjZWVk
ZWQgPSBmYWxzZTsKKyAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQorICAgICAgICBh
bGxvY2F0aW9uU3VjY2VlZGVkID0gV1RGOjp0cnlGYXN0Q2FsbG9jKG51bUVsZW1lbnRzLCBlbGVt
ZW50Qnl0ZVNpemUpLmdldFZhbHVlKHJlc3VsdC5tX2RhdGEpOworICAgIGVsc2UgeworICAgICAg
ICBBU1NFUlQocG9saWN5ID09IERvbnRJbml0aWFsaXplKTsKKyAgICAgICAgYWxsb2NhdGlvblN1
Y2NlZWRlZCA9IFdURjo6dHJ5RmFzdE1hbGxvYyhudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6
ZSkuZ2V0VmFsdWUocmVzdWx0Lm1fZGF0YSk7CisgICAgfQorCisgICAgaWYgKGFsbG9jYXRpb25T
dWNjZWVkZWQpIHsKKyAgICAgICAgcmVzdWx0Lm1fc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50cyAq
IGVsZW1lbnRCeXRlU2l6ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXN1bHQubV9k
YXRhID0gMDsKK30KKworQXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVudHMo
KQoreworICAgIFdURjo6ZmFzdEZyZWUobV9kYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKK3VzaW5nIEpTQzo6QXJyYXlCdWZmZXI7Cit1c2luZyBKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM7CisKKyNlbmRpZiAvLyBBcnJheUJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDg2YWY5OGVkMDJl
YzQwZjNmM2M3NzY3NDk2ODNjNWMyMmI2ZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFycmF5QnVmZmVyVmll
dy5oIgorCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0Fy
cmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCkKKyAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0
KQorICAgICwgbV9pc05ldXRlcmFibGUodHJ1ZSkKKyAgICAsIG1fYnVmZmVyKGJ1ZmZlcikKKyAg
ICAsIG1fcHJldlZpZXcoMCkKKyAgICAsIG1fbmV4dFZpZXcoMCkKK3sKKyAgICBtX2Jhc2VBZGRy
ZXNzID0gbV9idWZmZXIgPyAoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpICsg
bV9ieXRlT2Zmc2V0KSA6IDA7CisgICAgaWYgKG1fYnVmZmVyKSAKKyAgICAgICAgbV9idWZmZXIt
PmFkZFZpZXcodGhpcyk7Cit9CisKK0FycmF5QnVmZmVyVmlldzo6fkFycmF5QnVmZmVyVmlldygp
Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlci0+cmVtb3ZlVmlldyh0aGlz
KTsKK30KKwordm9pZCBBcnJheUJ1ZmZlclZpZXc6Om5ldXRlcigpCit7CisgICAgbV9idWZmZXIg
PSAwOworICAgIG1fYnl0ZU9mZnNldCA9IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUxYWMzYTMxNDcy
NDdiNTg5YzRlMmM1NzFiZTdjOWI0YTU1Nzk3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBAIC0wLDAgKzEsMjAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBBcnJheUJ1ZmZlclZpZXdfaAorI2RlZmluZSBBcnJheUJ1ZmZl
clZpZXdfaAorCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8
QXJyYXlCdWZmZXJWaWV3PiB7CitwdWJsaWM6CisgICAgZW51bSBWaWV3VHlwZSB7CisgICAgICAg
IFR5cGVJbnQ4LAorICAgICAgICBUeXBlVWludDgsCisgICAgICAgIFR5cGVVaW50OENsYW1wZWQs
CisgICAgICAgIFR5cGVJbnQxNiwKKyAgICAgICAgVHlwZVVpbnQxNiwKKyAgICAgICAgVHlwZUlu
dDMyLAorICAgICAgICBUeXBlVWludDMyLAorICAgICAgICBUeXBlRmxvYXQzMiwKKyAgICAgICAg
VHlwZUZsb2F0NjQsCisgICAgICAgIFR5cGVEYXRhVmlldworICAgIH07CisgICAgdmlydHVhbCBW
aWV3VHlwZSBnZXRUeXBlKCkgY29uc3QgPSAwOworCisgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gYnVmZmVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKKyAgICB9
CisKKyAgICB2b2lkKiBiYXNlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9iYXNlQWRkcmVzczsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2J5dGVPZmZzZXQ7CisgICAgfQorCisgICAgdmlydHVh
bCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgPSAwOworCisgICAgdm9pZCBzZXROZXV0ZXJh
YmxlKGJvb2wgZmxhZykgeyBtX2lzTmV1dGVyYWJsZSA9IGZsYWc7IH0KKyAgICBib29sIGlzTmV1
dGVyYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXV0ZXJhYmxlOyB9CisKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKworICAgIGlubGluZSBib29sIHNldEltcGwoQXJy
YXlCdWZmZXJWaWV3KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisKKyAgICBpbmxpbmUgYm9vbCBz
ZXRSYW5nZUltcGwoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNp
Z25lZCBieXRlT2Zmc2V0KTsKKworICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWdu
ZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CisKKyAgICBzdGF0aWMgaW5s
aW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKGludCBzdGFydCwgaW50IGVuZCwgdW5z
aWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsKKwor
ICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJh
eUJ1ZmZlciBpcworICAgIC8vIHdpdGhpbiByYW5nZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQorICAg
IHsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChzaXplb2YoVCkgPiAxICYmIGJ5dGVPZmZzZXQgJSBzaXplb2YoVCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnVmZmVyLT5ieXRl
TGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVuc2lnbmVkIHJl
bWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gYnl0ZU9mZnNldCkgLyBz
aXplb2YoVCk7CisgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBh
cnJheSdzIHZpZXc7CisgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMg
ZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQsIHVuc2lnbmVk
ICpvZmZzZXQsIHVuc2lnbmVkICpudW1FbGVtZW50cykKKyAgICB7CisgICAgICAgIHVuc2lnbmVk
IG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7Cisg
ICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CisgICAgICAgICAgICAqb2Zmc2V0ID0g
YnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgICAgICAqbnVtRWxlbWVudHMgPSAwOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICpvZmZzZXQgPSBhcnJheUJ5dGVP
ZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOworICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4o
YnVmZmVyLT5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOworICAgICAgICB1bnNpZ25lZCByZW1haW5p
bmdFbGVtZW50cyA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQp
OworICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51
bUVsZW1lbnRzKTsKKyAgICB9CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lk
IG5ldXRlcigpOworCisgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZm
ZXIncyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KKyAgICB2b2lkKiBtX2Jhc2VBZGRy
ZXNzOworCisgICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisgICAgYm9vbCBtX2lzTmV1
dGVyYWJsZSA6IDE7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEFycmF5QnVmZmVyOwor
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CisgICAgQXJyYXlCdWZmZXJWaWV3KiBt
X3ByZXZWaWV3OworICAgIEFycmF5QnVmZmVyVmlldyogbV9uZXh0VmlldzsKK307CisKK2Jvb2wg
QXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVk
IGJ5dGVPZmZzZXQpCit7CisgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKKyAgICAg
ICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKKyAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7
CisgICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBjaGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGJhc2VBZGRyZXNzKCkpOworICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGFycmF5
LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCit7CisgICAgaWYg
KGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFC
eXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCisgICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0
ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBv
ciBvdmVyZmxvdworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGNoYXIq
IGJhc2UgPSBzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZUFkZHJlc3MoKSk7CisgICAgbWVtbW92ZShi
YXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRl
T2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQoreworICAgIGlmIChieXRlT2Zmc2V0ID4g
Ynl0ZUxlbmd0aCgpCisgICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBi
eXRlTGVuZ3RoKCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5
dGVPZmZzZXQpIHsKKyAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGNoYXIqIGJhc2UgPSBzdGF0
aWNfY2FzdDxjaGFyKj4oYmFzZUFkZHJlc3MoKSk7CisgICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zm
c2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFy
cmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKGludCBzdGFydCwgaW50IGVu
ZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3Ro
KQoreworICAgIGlmIChzdGFydCA8IDApCisgICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKKyAg
ICBpZiAoc3RhcnQgPCAwKQorICAgICAgICBzdGFydCA9IDA7CisgICAgaWYgKGVuZCA8IDApCisg
ICAgICAgIGVuZCArPSBhcnJheVNpemU7CisgICAgaWYgKGVuZCA8IDApCisgICAgICAgIGVuZCA9
IDA7CisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQorICAg
ICAgICBlbmQgPSBhcnJheVNpemU7CisgICAgaWYgKGVuZCA8IHN0YXJ0KQorICAgICAgICBlbmQg
PSBzdGFydDsKKyAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKKyAg
ICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3OworCisjZW5kaWYg
Ly8gQXJyYXlCdWZmZXJWaWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Zsb2F0MzJBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxv
YXQzMkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1MjU3NDE3Y2EyNzUyZTY2Mjg4OTM4ZmJmNjk3ZTcz
M2I4ZWQ0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Zsb2F0MzJBcnJheS5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZsb2F0
MzJBcnJheV9oCisjZGVmaW5lIEZsb2F0MzJBcnJheV9oCisKKyNpbmNsdWRlICJUeXBlZEFycmF5
QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBGbG9hdDMyQXJyYXkgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGUo
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFy
cmF5PiBjcmVhdGUoY29uc3QgZmxvYXQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAg
IC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5
IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJl
Y3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxmbG9hdD46OnNldDsKKworICAg
IHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjptX2xlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpkYXRhKClbaW5kZXhdID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKTsKKyAgICB9CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0
cjxGbG9hdDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBh
c3NSZWZQdHI8RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0
OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBUeXBlRmxvYXQzMjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIEZsb2F0
MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJj
bGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OworfTsKKworUGFz
c1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGU8RmxvYXQzMkFy
cmF5PihsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5
OjpjcmVhdGUoY29uc3QgZmxvYXQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZsb2F0MzJBcnJheT4oYXJyYXksIGxl
bmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVh
dGU8RmxvYXQzMkFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NS
ZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQ8RmxvYXQzMkFycmF5PihsZW5ndGgpOworfQorCitGbG9hdDMyQXJyYXk6
OkZsb2F0MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFR5cGVkQXJyYXlCYXNlPGZsb2F0Pihi
dWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKK3sKK30KKworUGFzc1JlZlB0cjxGbG9hdDMyQXJy
YXk+IEZsb2F0MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVy
biBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJh
eT4gRmxvYXQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN1YmFycmF5SW1wbDxGbG9hdDMyQXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpGbG9hdDMyQXJyYXk7CisKKyNlbmRpZiAv
LyBGbG9hdDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0
QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNzdlZGJkM2I4ZTU5YzUyODE4Mzc0MTE5ZjhhOWQ5N2MyMjcx
YTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxv
YXQ2NEFycmF5LmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGbG9hdDY0QXJy
YXlfaAorI2RlZmluZSBGbG9hdDY0QXJyYXlfaAorCisjaW5jbHVkZSAiVHlwZWRBcnJheUJhc2Uu
aCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgRmxvYXQ2NEFycmF5IDogcHVibGljIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4geworcHVibGlj
OgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZSh1bnNp
Z25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+
IGNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8v
IFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdp
bGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3Rs
eSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpzZXQ7CisKKyAgICB2
b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYg
KGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46Om1fbGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpkYXRhKClbaW5kZXhdID0g
c3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7CisgICAgfQorCisgICAgaW5saW5lIFBhc3NSZWZQ
dHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQ
YXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25z
dDsKKworICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gVHlwZUZsb2F0NjQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBGbG9h
dDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgCisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRv
IHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT47Cit9
OworCitQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8
RmxvYXQ2NEFycmF5PihsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxv
YXQ2NEFycmF5OjpjcmVhdGUoY29uc3QgZG91YmxlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5
PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRB
cnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxk
b3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7
Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxk
b3VibGU+OjpjcmVhdGVVbmluaXRpYWxpemVkPEZsb2F0NjRBcnJheT4obGVuZ3RoKTsKK30KKwor
RmxvYXQ2NEFycmF5OjpGbG9hdDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBUeXBlZEFycmF5
QmFzZTxkb3VibGU+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVm
UHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQ
dHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEZsb2F0NjRBcnJheT4oc3RhcnQs
IGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkZsb2F0NjRBcnJh
eTsKKworI2VuZGlmIC8vIEZsb2F0NjRBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnQxNkFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnQxNkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ2NmFlNGRhN2UyMzJiNTY3ZjlhMjRlZjNm
OWJjOGYxZmJhMzAwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludDE2QXJyYXkuaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
SW50MTZBcnJheV9oCisjZGVmaW5lIEludDE2QXJyYXlfaAorCisjaW5jbHVkZSAiSW50ZWdyYWxU
eXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXJyYXlCdWZmZXI7
CisKK2NsYXNzIEludDE2QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQx
Nl90PiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJ
bnQxNkFycmF5PiBjcmVhdGUoY29uc3QgaW50MTZfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
KworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJl
IGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0
cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OnNldDsK
KyAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+OjpzZXQ7CisKKyAgICBp
bmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Owor
ICAgIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50
IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIFR5cGVJbnQxNjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5s
aW5lIEludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUg
dG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8aW50MTZfdD47
Cit9OworCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+OjpjcmVhdGU8
SW50MTZBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFy
cmF5OjpjcmVhdGUoY29uc3QgaW50MTZfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJbnQxNkFycmF5PihhcnJh
eSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpjcmVh
dGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+Ojpj
cmVhdGU8SW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNz
UmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6Y3JlYXRl
VW5pbml0aWFsaXplZDxJbnQxNkFycmF5PihsZW5ndGgpOworfQorCitJbnQxNkFycmF5OjpJbnQx
NkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQxNl90
PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKK3sKK30KKworUGFzc1JlZlB0cjxJbnQxNkFy
cmF5PiBJbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MTZBcnJheT4g
SW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJl
dHVybiBzdWJhcnJheUltcGw8SW50MTZBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkludDE2QXJyYXk7CisKKyNlbmRpZiAvLyBJbnQxNkFy
cmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDMyQXJy
YXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDMyQXJyYXkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZjY1OTI3ODgyNmIzZjI2YjMxMTk0ZDAyMmE4ZThjNmEyNmM1NzUxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oCkBAIC0w
LDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEludDMyQXJyYXlfaAorI2RlZmluZSBJbnQz
MkFycmF5X2gKKworI2luY2x1ZGUgIkludGVncmFsVHlwZWRBcnJheUJhc2UuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEludDMyQXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5
QmFzZTxpbnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJB
cnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPEludDMyQXJyYXk+IGNyZWF0ZShjb25zdCBpbnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
CisKKyAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGly
ZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3Vs
dHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGludD46OnNldDsKKyAg
ICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD46OnNldDsKKworICAgIGlubGluZSBQ
YXNzUmVmUHRyPEludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5s
aW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdDsKKworICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gVHlwZUludDMyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgSW50
MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJj
bGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8aW50PjsKK307CisKK1Bhc3NS
ZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGxlbmd0
aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKGNvbnN0
IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVm
UHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJbnQzMkFycmF5PihsZW5ndGgp
OworfQorCitJbnQzMkFycmF5OjpJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTxpbnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQor
CitQYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFz
c1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQzMkFycmF5PihzdGFydCwg
ZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6SW50MzJBcnJheTsK
KworI2VuZGlmIC8vIEludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50OEFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnQ4QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGYyMjg2NjY1OTQ2YjNkMzk4Yzk5MmFlODU4MGJjNTdj
YjRjZWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50OEFycmF5LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSW50OEFycmF5
X2gKKyNkZWZpbmUgSW50OEFycmF5X2gKKworI2luY2x1ZGUgIkludGVncmFsVHlwZWRBcnJheUJh
c2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVmZmVyOworCitjbGFzcyBJ
bnQ4QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVh
dGUoY29uc3QgaW50OF90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4s
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBTaG91bGQg
b25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZp
bGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2
YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPEludDhBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisg
ICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6c2V0OworICAgIHVzaW5nIEludGVncmFs
VHlwZWRBcnJheUJhc2U8aW50OF90Pjo6c2V0OworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50
OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRy
PEludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKKworICAgIHZp
cnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVHlw
ZUludDg7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBJbnQ4QXJyYXkoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisK
KyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmll
bmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8aW50OF90PjsKK307CisKK1Bhc3NSZWZQdHI8SW50OEFy
cmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5
cGVkQXJyYXlCYXNlPGludDhfdD46OmNyZWF0ZTxJbnQ4QXJyYXk+KGxlbmd0aCk7Cit9CisKK1Bh
c3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZShjb25zdCBpbnQ4X3QqIGFycmF5
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludDhfdD46
OmNyZWF0ZTxJbnQ4QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEludDhB
cnJheT4gSW50OEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPGludDhfdD46OmNyZWF0ZTxJbnQ4QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwg
bGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PGludDhfdD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50OEFycmF5PihsZW5ndGgpOworfQorCitJ
bnQ4QXJyYXk6OkludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IEludGVncmFsVHlwZWRBcnJh
eUJhc2U8aW50OF90PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKK3sKK30KKworUGFzc1Jl
ZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAorewor
ICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPElu
dDhBcnJheT4gSW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQ4QXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpJbnQ4QXJyYXk7CisKKyNlbmRpZiAvLyBJ
bnQ4QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5Yzk4OWVjN2YyMzA3ZDg3OGZhMTJl
YjViZTBjZDQ5NjllMWZiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCisjZGVmaW5lIEludGVncmFs
VHlwZWRBcnJheUJhc2VfaAorCisjaW5jbHVkZSAiVHlwZWRBcnJheUJhc2UuaCIKKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworLy8gQmFzZSBjbGFzcyBm
b3IgYWxsIFdlYkdMPFQ+QXJyYXkgdHlwZXMgaG9sZGluZyBpbnRlZ3JhbAorLy8gKG5vbi1mbG9h
dGluZy1wb2ludCkgdmFsdWVzLgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlIDogcHVibGljIFR5cGVkQXJyYXlC
YXNlPFQ+IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZh
bHVlKQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUp
KSAvLyBDbGFtcCBOYU4gdG8gMAorICAgICAgICAgICAgdmFsdWUgPSAwOworICAgICAgICAvLyBU
aGUgZG91YmxlIGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgY29ycmVjdCB3cmFwcGluZwor
ICAgICAgICAvLyBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcyB3aXRoIEludDMyQXJyYXkgYW5kIFVp
bnQzMkFycmF5LgorICAgICAgICBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XSA9IHN0
YXRpY19jYXN0PFQ+KHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSk7CisgICAgfQorCitwcm90
ZWN0ZWQ6CisgICAgSW50ZWdyYWxUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAg
OiBUeXBlZEFycmF5QmFzZTxUPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKKyAgICB7Cisg
ICAgfQorCit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEludGVncmFsVHlw
ZWRBcnJheUJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJy
YXlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZlN2E2YzFhNTY2OTU3OGVlMWQ1YTYwNmNjZGQ4ZDY0MGRj
MTE4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlCYXNlLmgKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEw
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFR5cGVk
QXJyYXlCYXNlX2gKKyNkZWZpbmUgVHlwZWRBcnJheUJhc2VfaAorCisjaW5jbHVkZSAiQXJyYXlC
dWZmZXIuaCIKKyNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRBcnJheUJhc2UgOiBwdWJsaWMg
QXJyYXlCdWZmZXJWaWV3IHsKK3B1YmxpYzoKKyAgICBUKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VCo+KGJhc2VBZGRyZXNzKCkpOyB9CisKKyAgICBib29sIHNldChUeXBlZEFy
cmF5QmFzZTxUPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVy
biBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YoVCkpOworICAgIH0KKworICAgIGJvb2wg
c2V0UmFuZ2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHVuc2lnbmVkIG9mZnNl
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBzZXRSYW5nZUltcGwocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksIGRhdGFMZW5ndGggKiBzaXplb2YoVCksIG9mZnNldCAqIHNpemVv
ZihUKSk7CisgICAgfQorCisgICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHplcm9SYW5nZUltcGwob2Zmc2V0ICog
c2l6ZW9mKFQpLCBsZW5ndGggKiBzaXplb2YoVCkpOworICAgIH0KKworICAgIC8vIE92ZXJyaWRk
ZW4gZnJvbSBBcnJheUJ1ZmZlclZpZXcuIFRoaXMgbXVzdCBiZSBwdWJsaWMgYmVjYXVzZSBvZgor
ICAgIC8vIHJ1bGVzIGFib3V0IGluaGVyaXRhbmNlIG9mIG1lbWJlcnMgaW4gdGVtcGxhdGUgY2xh
c3NlcywgYW5kCisgICAgLy8gYmVjYXVzZSBpdCBpcyBhY2Nlc3NlZCB2aWEgcG9pbnRlcnMgdG8g
c3ViY2xhc3Nlcy4KKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fbGVuZ3RoOworICAgIH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZUxlbmd0
aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YoVCk7Cisg
ICAgfQorCisgICAgLy8gSW52b2tlZCBieSB0aGUgaW5kZXhlZCBnZXR0ZXIuIERvZXMgbm90IHBl
cmZvcm0gcmFuZ2UgY2hlY2tzOyBjYWxsZXIKKyAgICAvLyBpcyByZXNwb25zaWJsZSBmb3IgZG9p
bmcgc28gYW5kIHJldHVybmluZyB1bmRlZmluZWQgYXMgbmVjZXNzYXJ5LgorICAgIFQgaXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGluZGV4IDwgVHlwZWRBcnJheUJhc2U8VD46Om1fbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdOworICAgIH0KKworICAg
IGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHBvcykgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiAob2Zmc2V0IDw9IG1fbGVuZ3RoCisgICAgICAgICAg
ICAmJiBvZmZzZXQgKyBwb3MgPD0gbV9sZW5ndGgKKyAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJm
bG93CisgICAgICAgICAgICAmJiBvZmZzZXQgKyBwb3MgPj0gb2Zmc2V0KTsKKyAgICB9CisKK3By
b3RlY3RlZDoKKyAgICBUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBBcnJh
eUJ1ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQorICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorICAgIHsK
KyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGxlbmd0aCwgc2l6ZW9mKFQpKTsKKyAgICAgICAgaWYgKCFidWZmZXIuZ2V0KCkpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVyLCAw
LCBsZW5ndGgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKGNvbnN0IFQqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgeworICAgICAgICBSZWZQdHI8U3ViY2xhc3M+IGEgPSBjcmVhdGU8U3Vi
Y2xhc3M+KGxlbmd0aCk7CisgICAgICAgIGlmIChhKQorICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGEtPnNldChpLCBhcnJh
eVtpXSk7CisgICAgICAgIHJldHVybiBhOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBT
dWJjbGFzcz4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWYoYnVmZmVyKTsKKyAg
ICAgICAgaWYgKCF2ZXJpZnlTdWJSYW5nZTxUPihidWYsIGJ5dGVPZmZzZXQsIGxlbmd0aCkpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1YmNs
YXNzKGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNs
YXNzIFN1YmNsYXNzPgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBz
aXplb2YoVCkpOworICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0aCk7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIFBhc3NSZWZQdHI8
U3ViY2xhc3M+IHN1YmFycmF5SW1wbChpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CisgICAgewor
ICAgICAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKKyAgICAgICAgY2FsY3VsYXRlT2Zmc2V0
QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIG1fbGVuZ3RoLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKKyAgICAg
ICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxUPihidWZmZXIoKSwgbV9ieXRlT2Zmc2V0LCAm
b2Zmc2V0LCAmbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVy
KCksIG9mZnNldCwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbmV1dGVyKCkK
KyAgICB7CisgICAgICAgIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKCk7CisgICAgICAgIG1fbGVu
Z3RoID0gMDsKKyAgICB9CisKKyAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBoYXZlIHRvIGFjY2Vz
cyB0aGlzIHZpYSBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gc3ViY2xhc3NlcywKKyAgICAvLyB3aGlj
aCBpcyB3aHkgaXQgaXMgcHJvdGVjdGVkIHJhdGhlciB0aGFuIHByaXZhdGUuCisgICAgdW5zaWdu
ZWQgbV9sZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpUeXBl
ZEFycmF5QmFzZTsKKworI2VuZGlmIC8vIFR5cGVkQXJyYXlCYXNlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNkFycmF5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9VaW50MTZBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMmZhYjFiMjdiODYy
YTlhMDhkOTE5MWM4YjQyODM0NTRjYmRkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZBcnJheS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIFVpbnQxNkFycmF5X2gKKyNkZWZpbmUgVWludDE2QXJyYXlfaAorCisjaW5j
bHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIFVpbnQxNkFycmF5IDogcHVibGljIEludGVncmFsVHlw
ZWRBcnJheUJhc2U8dWludDE2X3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8VWludDE2QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKGNvbnN0IHVpbnQxNl90KiBhcnJh
eSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2
QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBp
dCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5v
dCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmls
bGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5cGVkQXJy
YXlCYXNlPHVpbnQxNl90Pjo6c2V0OworICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8
dWludDE2X3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gc3Vi
YXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJh
eT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKKworICAgIHZpcnR1YWwgVmll
d1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVHlwZVVpbnQxNjsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIFVpbnQxNkFycmF5KFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIC8v
IE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFz
cyBUeXBlZEFycmF5QmFzZTx1aW50MTZfdD47Cit9OworCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5
PiBVaW50MTZBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8dWludDE2X3Q+OjpjcmVhdGU8VWludDE2QXJyYXk+KGxlbmd0aCk7Cit9CisK
K1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUoY29uc3QgdWludDE2
X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVpbnQxNl90Pjo6Y3JlYXRlPFVpbnQxNkFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFz
c1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OjpjcmVhdGU8VWludDE2QXJyYXk+
KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50MTZBcnJh
eT4gVWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8
VWludDE2QXJyYXk+KGxlbmd0aCk7Cit9CisKK1VpbnQxNkFycmF5OjpVaW50MTZBcnJheShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+KGJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50
MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJh
eShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBz
dWJhcnJheUltcGw8VWludDE2QXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwordXNpbmcgSlNDOjpVaW50MTZBcnJheTsKKworI2VuZGlmIC8vIFVpbnQxNkFycmF5
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MzJBcnJheS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFlYjAxZTAxYTFjYWQ0ZWJkZTQ5OWRhMTMyZjM5NzBhNTkxMjgzZWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MzJBcnJheS5oCkBAIC0w
LDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVpbnQzMkFycmF5X2gKKyNkZWZpbmUgVWlu
dDMyQXJyYXlfaAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIFVpbnQzMkFycmF5IDog
cHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKGNv
bnN0IHVpbnQzMl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBv
bmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmls
bGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZh
U2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8VWludDMyQXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKwor
ICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6c2V0OworICAgIHVzaW5nIEludGVn
cmFsVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0
cjxVaW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsK
KworICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gVHlwZVVpbnQzMjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIFVpbnQzMkFy
cmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNz
LgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD47Cit9OworCitQYXNz
UmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+OjpjcmVhdGU8VWludDMyQXJy
YXk+KGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5Ojpj
cmVhdGUoY29uc3QgdWludDMyX3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6Y3JlYXRlPFVpbnQzMkFycmF5PihhcnJheSwg
bGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+Ojpj
cmVhdGU8VWludDMyQXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFz
c1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK1VpbnQzMkFycmF5
OjpVaW50MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8
dWludDMyX3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRy
PFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAorewor
ICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPFVp
bnQzMkFycmF5PiBVaW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25z
dAoreworICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDMyQXJyYXk+KHN0YXJ0LCBlbmQpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpVaW50MzJBcnJheTsKKworI2Vu
ZGlmIC8vIFVpbnQzMkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1VpbnQ4QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQ4
QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lNjVmOWUxNzA1MzhkYzBjMjZhZjgxNTRlNjlkZGUwYWY2YjAy
YmNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWlu
dDhBcnJheS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVpbnQ4QXJyYXlf
aAorI2RlZmluZSBVaW50OEFycmF5X2gKKworI2luY2x1ZGUgIkludGVncmFsVHlwZWRBcnJheUJh
c2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVmZmVyOworCitjbGFzcyBV
aW50OEFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8dWludDhfdD4geworcHVi
bGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4g
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBT
aG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxs
IGJlIGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkg
dG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KTsKKworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpzZXQ7CisgICAgdXNpbmcg
SW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6c2V0OworCisgICAgaW5saW5lIFBhc3NS
ZWZQdHI8VWludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUg
UGFzc1JlZlB0cjxVaW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0
OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBUeXBlVWludDg7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgaW5saW5lIFVpbnQ4
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xh
c3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OworfTsKKworUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQor
eworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlPFVpbnQ4QXJyYXk+
KGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6Y3JlYXRl
KGNvbnN0IHVpbnQ4X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5
cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7
Cit9CisKK1Bhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6Y3JlYXRlKFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlPFVpbnQ4
QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50
OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQ8VWludDhBcnJheT4obGVuZ3RoKTsKK30KKworVWludDhBcnJheTo6VWludDhBcnJheShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKKzogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50OF90PihidWZmZXIsIGJ5dGVP
ZmZzZXQsIGxlbmd0aCkKK3sKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5
OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0
LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6c3Vi
YXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheUlt
cGw8VWludDhBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1
c2luZyBKU0M6OlVpbnQ4QXJyYXk7CisKKyNlbmRpZiAvLyBVaW50OEFycmF5X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZmZmZhZTc0N2NhZWU4YWUzYjBkNWUxNDExMGFlMTE4YzhkOWZkMjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OENsYW1wZWRBcnJheS5o
CkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVpbnQ4Q2xh
bXBlZEFycmF5X2gKKyNkZWZpbmUgVWludDhDbGFtcGVkQXJyYXlfaAorCisjaW5jbHVkZSAiVWlu
dDhBcnJheS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBVaW50OENsYW1wZWRBcnJheSA6IHB1YmxpYyBVaW50OEFycmF5IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRl
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRo
ZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVz
ZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0Lgor
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gSXQncyBvbmx5IG5lZWRlZCB0
byBwb3RlbnRpYWxseSBjYWxsIHRoaXMgbWV0aG9kIGlmIHRoZSBhcnJheQorICAgIC8vIHdhcyBj
cmVhdGVkIHVuaW5pdGlhbGl6ZWQgLS0gdGhlIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gcGF0aHMK
KyAgICAvLyB6ZXJvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LgorICAgIGlubGluZSB2b2lkIHplcm9G
aWxsKCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6c2V0OworICAgIGlu
bGluZSB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKTsKKworICAgIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0
OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDhDbGFtcGVkOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBpbmxpbmUgVWludDhDbGFtcGVkQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFr
ZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5
cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OworfTsKKworUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGxl
bmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFy
cmF5OjpjcmVhdGUoY29uc3QgdWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJh
eT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVp
bnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxV
aW50OENsYW1wZWRBcnJheT4obGVuZ3RoKTsKK30KKwordm9pZCBVaW50OENsYW1wZWRBcnJheTo6
emVyb0ZpbGwoKQoreworICAgIHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7Cit9CisKK3ZvaWQgVWlu
dDhDbGFtcGVkQXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQoreworICAg
IGlmIChpbmRleCA+PSBtX2xlbmd0aCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChzdGQ6Omlz
bmFuKHZhbHVlKSB8fCB2YWx1ZSA8IDApCisgICAgICAgIHZhbHVlID0gMDsKKyAgICBlbHNlIGlm
ICh2YWx1ZSA+IDI1NSkKKyAgICAgICAgdmFsdWUgPSAyNTU7CisgICAgZGF0YSgpW2luZGV4XSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGxyaW50KHZhbHVlKSk7Cit9CisKK1VpbnQ4Q2xhbXBlZEFy
cmF5OjpVaW50OENsYW1wZWRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKzogVWludDhBcnJheShidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCkKK3sKK30KKworUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gVWludDhDbGFtcGVkQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPFVpbnQ4Q2xhbXBlZEFycmF5Pihz
dGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6VWludDhD
bGFtcGVkQXJyYXk7CisKKyNlbmRpZiAvLyBVaW50OENsYW1wZWRBcnJheV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCBlNDg0M2IxOWMyZThmMzlkNzA2MmU2NzM4NDJjN2U1Yjgz
MGVkYWE0Li5lMjI3ZTI0ZjlhZWNmNGMwY2M4MmQ2OWFkNTM1YTc3ZDI1NmFkYmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY5LDggKzY5LDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKICAg
ICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgRmxvYXQzMkFycmF5OworICAgIGNsYXNzIEZs
b2F0NjRBcnJheTsKICAgICBjbGFzcyBIYW5kbGVTdGFjazsKICAgICBjbGFzcyBJZGVudGlmaWVy
VGFibGU7CisgICAgY2xhc3MgSW50OEFycmF5OworICAgIGNsYXNzIEludDE2QXJyYXk7CisgICAg
Y2xhc3MgSW50MzJBcnJheTsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKQEAgLTg4LDYgKzkzLDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBjbGFzcyBSZWdFeHA7
CiAjZW5kaWYKKyAgICBjbGFzcyBVaW50OEFycmF5OworICAgIGNsYXNzIFVpbnQ4Q2xhbXBlZEFy
cmF5OworICAgIGNsYXNzIFVpbnQxNkFycmF5OworICAgIGNsYXNzIFVpbnQzMkFycmF5OwogICAg
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogICAgIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9j
azsKICAgICBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA2NzQ5YzZhYzA2ZGJlMWU4Yzg5ZDljNzU4Yzg2ZjdkNGI4NGVlNjQ0Li5mNmEz
ODBiZmEzZmZhOWQ1YmU5Mjc1OTk2NjY1YjQ1OTg4MmE3N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC00LDEwICs0LDYgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3Rm
L0FTQ0lJQ1R5cGUuaCBcCiAgICAgU291cmNlL1dURi93dGYvQVZMVHJlZS5oIFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9BbGlnbm1lbnQuaCBcCi0gICAgU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIu
Y3BwIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oIFwKLSAgICBTb3VyY2UvV1RG
L3d0Zi9BcnJheUJ1ZmZlclZpZXcuY3BwIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZl
clZpZXcuaCBcCiAgICAgU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAgXAogICAgIFNvdXJj
ZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBcCiAgICAgU291cmNlL1dURi93dGYvQXRvbWljcy5jcHAg
XApAQCAtNTYsOCArNTIsNiBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYv
RmlsZVByaW50U3RyZWFtLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFt
LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0ZpeGVkQXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93
dGYvRmxvYXQzMkFycmF5LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0Zsb2F0NjRBcnJheS5oIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uRGlzcGF0Y2hlci5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hl
ci5oIFwKQEAgLTc2LDEwICs3MCw2IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9IZXhOdW1iZXIuaCBcCiAgICAgU291cmNlL1dURi93dGYvSW5saW5lQVNNLmggXAogICAg
IFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9JbnQxNkFy
cmF5LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0ludDMyQXJyYXkuaCBcCi0gICAgU291cmNlL1dU
Ri93dGYvSW50OEFycmF5LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0ludGVncmFsVHlwZWRBcnJh
eUJhc2UuaCBcCiAgICAgU291cmNlL1dURi93dGYvTGlzdER1bXAuaCBcCiAgICAgU291cmNlL1dU
Ri93dGYvTGlzdEhhc2hTZXQuaCBcCiAgICAgU291cmNlL1dURi93dGYvTExWTUhlYWRlcnMuaCBc
CkBAIC0xODksMTEgKzE3OSw2IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0
Zi9UcmlTdGF0ZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9UeXBlVHJhaXRzLmNwcCBcCiAgICAg
U291cmNlL1dURi93dGYvVHlwZVRyYWl0cy5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9UeXBlZEFy
cmF5QmFzZS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9VaW50MTZBcnJheS5oIFwKLSAgICBTb3Vy
Y2UvV1RGL3d0Zi9VaW50MzJBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9VaW50OEFycmF5
LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmggXAogICAgIFNvdXJj
ZS9XVEYvd3RmL1VuaW9uRmluZC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9VbmlTdGRFeHRyYXMu
aCBcCiAgICAgU291cmNlL1dURi93dGYvVk1UYWdzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTJhZjY4ZjVkMGY4NTQzYTEwMmNlODM5NWM4ZjcwODNj
ZDg3M2NkOC4uNzQ5MWZmYTFmYzk4NDUxNzlkZTg0ZTE2ODk1Y2U4MTM4NTE4NGE5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NywxMCArNjcsNiBAQAog
CQlBNzQ4NzQ1NDE3QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzQ4NzQ1MTE3QTBC
REFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggKi87IH07CiAJCUE4NzZEQkQ4
MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3Jt
LmggKi87IH07CiAJCUE4QTQ3MzdGMTUxQTgyNUIwMDQxMjNGRiAvKiBBbGlnbm1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjU0MTUxQTgy
NUEwMDQxMjNGRiAvKiBBbGlnbm1lbnQuaCAqLzsgfTsKLQkJQThBNDczODExNTFBODI1QjAwNDEy
M0ZGIC8qIEFycmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MjU2MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAg
Ki87IH07Ci0JCUE4QTQ3MzgyMTUxQTgyNUIwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTcxNTFBODI1
QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggKi87IH07Ci0JCUE4QTQ3MzgzMTUxQTgyNUIwMDQx
MjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTgxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVy
Vmlldy5jcHAgKi87IH07Ci0JCUE4QTQ3Mzg0MTUxQTgyNUIwMDQxMjNGRiAvKiBBcnJheUJ1ZmZl
clZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTQ3MjU5MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLzsgfTsKIAkJQThB
NDczODUxNTFBODI1QjAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjVBMTUxQTgyNUEwMDQxMjNGRiAvKiBB
U0NJSUNUeXBlLmggKi87IH07CiAJCUE4QTQ3Mzg2MTUxQTgyNUIwMDQxMjNGRiAvKiBBc3NlcnRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTQ3MjVCMTUxQTgyNUEwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmNwcCAqLzsgfTsKIAkJQThBNDcz
ODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjVDMTUxQTgyNUEwMDQxMjNGRiAvKiBBc3Nl
cnRpb25zLmggKi87IH07CkBAIC0xMjgsOCArMTI0LDYgQEAKIAkJQThBNDczQzMxNTFBODI1QjAw
NDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3Bw
ICovOyB9OwogCQlBOEE0NzNDNDE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTIxNTFBODI1
QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLzsgfTsKIAkJQThBNDczQzUxNTFBODI1QjAwNDEy
M0ZGIC8qIEZpeGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QTQ3MkEzMTUxQTgyNUEwMDQxMjNGRiAvKiBGaXhlZEFycmF5LmggKi87IH07
Ci0JCUE4QTQ3M0M2MTUxQTgyNUIwMDQxMjNGRiAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkE0MTUxQTgyNUEwMDQx
MjNGRiAvKiBGbG9hdDMyQXJyYXkuaCAqLzsgfTsKLQkJQThBNDczQzcxNTFBODI1QjAwNDEyM0ZG
IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThBNDcyQTUxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0NjRBcnJheS5oICovOyB9
OwogCQlBOEE0NzNDODE1MUE4MjVCMDA0MTIzRkYgLyogRm9yd2FyZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZG
IC8qIEZvcndhcmQuaCAqLzsgfTsKIAkJQThBNDczQzkxNTFBODI1QjAwNDEyM0ZGIC8qIEZ1bmN0
aW9uYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTQ3MkE3MTUxQTgyNUEwMDQxMjNGRiAvKiBGdW5jdGlvbmFsLmggKi87IH07CiAJCUE4QTQ3M0NB
MTUxQTgyNUIwMDQxMjNGRiAvKiBHZXRQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAq
LzsgfTsKQEAgLTE0MywxMCArMTM3LDYgQEAKIAkJQThBNDczREExNTFBODI1QjAwNDEyM0ZGIC8q
IEhhc2hUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MkJBMTUxQTgyNUEwMDQxMjNGRiAvKiBIYXNoVHJhaXRzLmggKi87IH07CiAJCUE4
QTQ3M0RCMTUxQTgyNUIwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkJCMTUxQTgyNUEwMDQxMjNGRiAvKiBI
ZXhOdW1iZXIuaCAqLzsgfTsKIAkJQThBNDczREMxNTFBODI1QjAwNDEyM0ZGIC8qIElubGluZUFT
TS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcy
QkMxNTFBODI1QTAwNDEyM0ZGIC8qIElubGluZUFTTS5oICovOyB9OwotCQlBOEE0NzNERDE1MUE4
MjVCMDA0MTIzRkYgLyogSW50OEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCRDE1MUE4MjVBMDA0MTIzRkYgLyogSW50OEFycmF5Lmgg
Ki87IH07Ci0JCUE4QTQ3M0RFMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQxNkFycmF5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCRTE1MUE4MjVB
MDA0MTIzRkYgLyogSW50MTZBcnJheS5oICovOyB9OwotCQlBOEE0NzNERjE1MUE4MjVCMDA0MTIz
RkYgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThBNDcyQkYxNTFBODI1QTAwNDEyM0ZGIC8qIEludDMyQXJyYXkuaCAqLzsgfTsK
LQkJQThBNDczRTAxNTFBODI1QjAwNDEyM0ZGIC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkMwMTUx
QTgyNUEwMDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi87IH07CiAJCUE4QTQ3
M0UxMTUxQTgyNUIwMDQxMjNGRiAvKiBMaXN0SGFzaFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQzExNTFBODI1QTAwNDEyM0ZGIC8qIExp
c3RIYXNoU2V0LmggKi87IH07CiAJCUE4QTQ3M0UzMTUxQTgyNUIwMDQxMjNGRiAvKiBMb2NrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkMz
MTUxQTgyNUEwMDQxMjNGRiAvKiBMb2NrZXIuaCAqLzsgfTsKIAkJQThBNDczRTQxNTFBODI1QjAw
NDEyM0ZGIC8qIE1haW5UaHJlYWRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZE1h
Yy5tbSAqLzsgfTsKQEAgLTI1MCwxMyArMjQwLDggQEAKIAkJQThBNDc0NTIxNTFBODI1QjAwNDEy
M0ZGIC8qIEJpbmFyeVNlbWFwaG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDczM0IxNTFBODI1QjAwNDEyM0ZGIC8qIEJpbmFyeVNlbWFwaG9y
ZS5oICovOyB9OwogCQlBOEE0NzQ1NDE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTQ3MzNFMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oICovOyB9Owog
CQlBOEE0NzQ1NTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzNGMTUxQTgyNUIwMDQx
MjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oICovOyB9OwotCQlBOEE0NzQ1NzE1MUE4MjVCMDA0MTIz
RkYgLyogVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MzQxMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlZEFycmF5QmFzZS5o
ICovOyB9OwogCQlBOEE0NzQ1ODE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0MjE1MUE4
MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5jcHAgKi87IH07CiAJCUE4QTQ3NDU5MTUxQTgyNUIw
MDQxMjNGRiAvKiBUeXBlVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzM0MzE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5oICov
OyB9OwotCQlBOEE0NzQ1QTE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczNDQxNTFBODI1QjAw
NDEyM0ZGIC8qIFVpbnQ4QXJyYXkuaCAqLzsgfTsKLQkJQThBNDc0NUIxNTFBODI1QjAwNDEyM0ZG
IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzM0NTE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJy
YXkuaCAqLzsgfTsKLQkJQThBNDc0NUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0NjE1
MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCAqLzsgfTsKLQkJQThBNDc0NUQxNTFBODI1
QjAwNDEyM0ZGIC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0NzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXku
aCAqLzsgfTsKIAkJQThBNDc0NUUxNTFBODI1QjAwNDEyM0ZGIC8qIENoYXJhY3Rlck5hbWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0OTE1
MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFtZXMuaCAqLzsgfTsKIAkJQThBNDc0NUYxNTFB
ODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QTE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3IuaCAq
LzsgfTsKIAkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QjE1
MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsKQEAgLTM0OSwxMCAr
MzM0LDYgQEAKIAkJQTc0ODc0NTExN0EwQkRBRTAwRkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29u
dGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdIYXNoRHVtcENv
bnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NkRCRDcxNTE4MTZFNTAw
REFEQjk1IC8qIFBsYXRmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MjU0MTUxQTgyNUEw
MDQxMjNGRiAvKiBBbGlnbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWxpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MjU2MTUxQTgy
NUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBcnJheUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE4QTQ3MjU3MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBOEE0NzI1ODE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyVmlldy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MjU5MTUxQTgyNUEwMDQxMjNGRiAv
KiBBcnJheUJ1ZmZlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MjVBMTUx
QTgyNUEwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFTQ0lJQ1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcy
NUIxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXNzZXJ0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4QTQ3MjVDMTUxQTgyNUEwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VydGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQxMyw4ICszOTQsNiBAQAogCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYg
LyogRmFzdE1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
YXN0TWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQTIxNTFB
ODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmFzdE1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJB
MzE1MUE4MjVBMDA0MTIzRkYgLyogRml4ZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaXhlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4
QTQ3MkE0MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9hdDMyQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE4QTQ3MkE1MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9hdDY0QXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQ2NEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldFB0ci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDI4LDEwICs0MDcsNiBAQAogCQlBOEE0NzJCQTE1MUE4MjVBMDA0
MTIzRkYgLyogSGFzaFRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
YXNoVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkJCMTUxQTgy
NUEwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGV4TnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkJDMTUx
QTgyNUEwMDQxMjNGRiAvKiBJbmxpbmVBU00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5saW5lQVNNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkJE
MTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50OEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3
MkJFMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQxNkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QThBNDcyQkYxNTFBODI1QTAwNDEyM0ZGIC8qIEludDMyQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBOEE0NzJDMDE1MUE4MjVBMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkMxMTUxQTgyNUEwMDQxMjNG
RiAvKiBMaXN0SGFzaFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0
SGFzaFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJDMzE1MUE4MjVB
MDA0MTIzRkYgLyogTG9ja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJDNTE1MUE4MjVBMDA0
MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE1haW5UaHJlYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MzUsMTMgKzUxMCw4IEBACiAJCUE4QTQ3MzNCMTUxQTgyNUIwMDQxMjNGRiAvKiBCaW5hcnlT
ZW1hcGhvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmluYXJ5U2VtYXBo
b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzNFMTUxQTgyNUIwMDQx
MjNGRiAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaHJlYWRTYWZlUmVmQ291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBOEE0NzMzRjE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkU3BlY2lmaWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczNDExNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVkQXJyYXlCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzQyMTUxQTgyNUIwMDQxMjNGRiAv
KiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5
cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM0MzE1MUE4
MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzQ0
MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVpbnQ4QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDczNDUxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQ4Q2xhbXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzQ2MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MTZBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MTZBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM0NzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMy
QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDMyQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNDkxNTFBODI1QjAwNDEyM0ZGIC8q
IENoYXJhY3Rlck5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJh
Y3Rlck5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzRBMTUxQTgy
NUIwMDQxMjNGRiAvKiBDb2xsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb2xsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM0QjE1MUE4
MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbGxhdG9yRGVmYXVsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MjYsMTAgKzU5Niw2IEBACiAJCQkJQThBNDczMzkxNTFBODI1QjAwNDEyM0ZG
IC8qIHRocmVhZHMgKi8sCiAJCQkJQThBNDczNDgxNTFBODI1QjAwNDEyM0ZGIC8qIHVuaWNvZGUg
Ki8sCiAJCQkJQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8qIEFsaWdubWVudC5oICovLAotCQkJ
CUE4QTQ3MjU2MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCi0JCQkJQThB
NDcyNTcxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggKi8sCi0JCQkJQThBNDcyNTgx
NTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8sCi0JCQkJQThBNDcyNTkx
NTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oICovLAogCQkJCUE4QTQ3MjVBMTUx
QTgyNUEwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggKi8sCiAJCQkJQThBNDcyNUIxNTFBODI1QTAw
NDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwICovLAogCQkJCUE4QTQ3MjVDMTUxQTgyNUEwMDQxMjNG
RiAvKiBBc3NlcnRpb25zLmggKi8sCkBAIC02ODIsOCArNjQ4LDYgQEAKIAkJCQkwRjlEMzM1QjE2
NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2
NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJQThBNDcyQTMxNTFB
ODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAqLywKLQkJCQlBOEE0NzJBNDE1MUE4MjVBMDA0
MTIzRkYgLyogRmxvYXQzMkFycmF5LmggKi8sCi0JCQkJQThBNDcyQTUxNTFBODI1QTAwNDEyM0ZG
IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBG
b3J3YXJkLmggKi8sCiAJCQkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwu
aCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVy
LmNwcCAqLywKQEAgLTcwMiwxMCArNjY2LDYgQEAKIAkJCQlBOEE0NzJCQjE1MUE4MjVBMDA0MTIz
RkYgLyogSGV4TnVtYmVyLmggKi8sCiAJCQkJQThBNDcyQkMxNTFBODI1QTAwNDEyM0ZGIC8qIElu
bGluZUFTTS5oICovLAogCQkJCUE3MERBMDgyMTc5OUYwNEQwMDUyOUE5QiAvKiBJbnNlcnRpb24u
aCAqLywKLQkJCQlBOEE0NzJCRTE1MUE4MjVBMDA0MTIzRkYgLyogSW50MTZBcnJheS5oICovLAot
CQkJCUE4QTQ3MkJGMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQzMkFycmF5LmggKi8sCi0JCQkJQThB
NDcyQkQxNTFBODI1QTAwNDEyM0ZGIC8qIEludDhBcnJheS5oICovLAotCQkJCUE4QTQ3MkMwMTUx
QTgyNUEwMDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8sCiAJCQkJQTcwREEw
ODMxNzk5RjA0RDAwNTI5QTlCIC8qIExpc3REdW1wLmggKi8sCiAJCQkJQThBNDcyQzExNTFBODI1
QTAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggKi8sCiAJCQkJQTczNkIzNTgxNzk5RTExQTAwQzZG
MDVFIC8qIExMVk1IZWFkZXJzLmggKi8sCkBAIC04MTYsMTMgKzc3Niw4IEBACiAJCQkJQThBNDcz
M0UxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi8sCiAJCQkJQThB
NDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmljLmggKi8sCiAJCQkJMTQ5RUYx
NjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8sCi0JCQkJQThBNDczNDExNTFBODI1
QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggKi8sCiAJCQkJQThBNDczNDIxNTFBODI1QjAw
NDEyM0ZGIC8qIFR5cGVUcmFpdHMuY3BwICovLAogCQkJCUE4QTQ3MzQzMTUxQTgyNUIwMDQxMjNG
RiAvKiBUeXBlVHJhaXRzLmggKi8sCi0JCQkJQThBNDczNDYxNTFBODI1QjAwNDEyM0ZGIC8qIFVp
bnQxNkFycmF5LmggKi8sCi0JCQkJQThBNDczNDcxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQzMkFy
cmF5LmggKi8sCi0JCQkJQThBNDczNDQxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4QXJyYXkuaCAq
LywKLQkJCQlBOEE0NzM0NTE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCAq
LywKIAkJCQlBOEE0NzM1QzE1MUE4MjVCMDA0MTIzRkYgLyogVW5pb25GaW5kLmggKi8sCiAJCQkJ
QThBNDczNkYxNTFBODI1QjAwNDEyM0ZGIC8qIFZhbHVlQ2hlY2suaCAqLywKIAkJCQlBOEE0NzM3
MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8sCkBAIC05NDUsOCArOTAwLDYgQEAKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQlBOEE0NzM3
RjE1MUE4MjVCMDA0MTIzRkYgLyogQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0
NzM4MjE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUE4QTQ3Mzg0MTUxQTgyNUIwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3Mzg1MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzQzNDE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlGYXN0UGF0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlv
bnMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwNSw4ICs5NTgsNiBAQAogCQkJCTBGOUQzMzYxMTY1
REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3M0I2MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzNDNTE1MUE4MjVCMDA0MTIzRkYgLyogRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQThBNDczQzYxNTFBODI1QjAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQThBNDczQzcxNTFBODI1QjAwNDEyM0ZGIC8qIEZsb2F0NjRBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzgxNTFBODI1QjAwNDEyM0ZGIC8qIEZvcndhcmQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0M5MTUxQTgyNUIwMDQxMjNGRiAvKiBGdW5jdGlvbmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFEOEI5QzE3MzE4NkNFMDAxNDFEQTQgLyogRnVuY3Rp
b25EaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjIsMTEgKzk3Myw3IEBACiAJCQkJ
QThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczREMxNTFBODI1QjAwNDEyM0ZGIC8qIElubGluZUFTTS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTcwREEwODQxNzk5RjA0RDAwNTI5QTlCIC8qIEluc2VydGlvbi5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQThBNDczREUxNTFBODI1QjAwNDEyM0ZGIC8qIEludDE2QXJyYXkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUE4QTQ3M0RGMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQzMkFycmF5LmggaW4g
SGVhZGVycyAqLywKLQkJCQlBOEE0NzNERDE1MUE4MjVCMDA0MTIzRkYgLyogSW50OEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyNjE0N0IwQTE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDczRTAxNTFBODI1QjAw
NDEyM0ZGIC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
MERBMDg1MTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDczRTExNTFBODI1QjAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFMzE1MUE4MjVCMDA0MTIzRkYgLyogTG9ja2VyLmggaW4gSGVhZGVycyAqLywK
QEAgLTExMTcsMTIgKzEwNjQsNyBAQAogCQkJCUE4QTQ3NDU0MTUxQTgyNUIwMDQxMjNGRiAvKiBU
aHJlYWRTYWZlUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NTUxNTFBODI1
QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmljLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDlFRjE2
MzE2QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3
NDU3MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0NTkxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuaCBpbiBIZWFkZXJzICov
LAotCQkJCUE4QTQ3NDVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MTZBcnJheS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQThBNDc0NUQxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQzMkFycmF5LmggaW4g
SGVhZGVycyAqLywKLQkJCQlBOEE0NzQ1QTE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0NUIxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4Q2xh
bXBlZEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ2NzE1MUE4MjVCMDA0MTIzRkYg
LyogVW5pY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NjQxNTFBODI1QjAwNDEyM0ZG
IC8qIFVuaWNvZGVJY3UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDY4MTUxQTgyNUIwMDQx
MjNGRiAvKiBVbmljb2RlTWFjcm9zRnJvbUlDVS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjA4LDgg
KzExNTAsNiBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJQThBNDczODExNTFBODI1QjAw
NDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4QTQ3MzgzMTUx
QTgyNUIwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczODYxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0MzUxNTFBODI1QjAwNDEyM0ZGIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QkM3MEYwNTE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQ1YjU3ZmU5YzZmYmNhMDY2NDg4Njg3ZGNhNzAwNmMyODIzMzEyODUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dU
Ri93dGYvQXJyYXlCdWZmZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgotCi0j
aW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotYm9vbCBBcnJheUJ1
ZmZlcjo6dHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYgcmVzdWx0LCBWZWN0b3I8UmVmUHRy
PEFycmF5QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cykKLXsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGtlZXBBbGl2ZSh0aGlzKTsKLQotICAgIGlmICghbV9jb250ZW50cy5tX2RhdGEpIHsK
LSAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBib29sIGFsbFZpZXdzQXJlTmV1dGVyYWJsZSA9IHRydWU7Ci0gICAgZm9yIChBcnJh
eUJ1ZmZlclZpZXcqIGkgPSBtX2ZpcnN0VmlldzsgaTsgaSA9IGktPm1fbmV4dFZpZXcpIHsKLSAg
ICAgICAgaWYgKCFpLT5pc05ldXRlcmFibGUoKSkKLSAgICAgICAgICAgIGFsbFZpZXdzQXJlTmV1
dGVyYWJsZSA9IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhbGxWaWV3c0FyZU5ldXRlcmFibGUp
Ci0gICAgICAgIG1fY29udGVudHMudHJhbnNmZXIocmVzdWx0KTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgbV9jb250ZW50cy5jb3B5VG8ocmVzdWx0KTsKLSAgICAgICAgaWYgKCFyZXN1bHQubV9kYXRh
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHdoaWxlIChtX2ZpcnN0
VmlldykgewotICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIGN1cnJlbnQgPSBtX2ZpcnN0VmlldzsK
LSAgICAgICAgcmVtb3ZlVmlldyhjdXJyZW50KTsKLSAgICAgICAgaWYgKGFsbFZpZXdzQXJlTmV1
dGVyYWJsZSB8fCBjdXJyZW50LT5pc05ldXRlcmFibGUoKSkKLSAgICAgICAgICAgIGN1cnJlbnQt
Pm5ldXRlcigpOwotICAgICAgICBuZXV0ZXJlZFZpZXdzLmFwcGVuZChjdXJyZW50KTsKLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXI6OmFkZFZpZXcoQXJyYXlC
dWZmZXJWaWV3KiB2aWV3KQotewotICAgIHZpZXctPm1fYnVmZmVyID0gdGhpczsKLSAgICB2aWV3
LT5tX3ByZXZWaWV3ID0gMDsKLSAgICB2aWV3LT5tX25leHRWaWV3ID0gbV9maXJzdFZpZXc7Ci0g
ICAgaWYgKG1fZmlyc3RWaWV3KQotICAgICAgICBtX2ZpcnN0Vmlldy0+bV9wcmV2VmlldyA9IHZp
ZXc7Ci0gICAgbV9maXJzdFZpZXcgPSB2aWV3OwotfQotCi12b2lkIEFycmF5QnVmZmVyOjpyZW1v
dmVWaWV3KEFycmF5QnVmZmVyVmlldyogdmlldykKLXsKLSAgICBBU1NFUlQodGhpcyA9PSB2aWV3
LT5tX2J1ZmZlcik7Ci0gICAgaWYgKHZpZXctPm1fbmV4dFZpZXcpCi0gICAgICAgIHZpZXctPm1f
bmV4dFZpZXctPm1fcHJldlZpZXcgPSB2aWV3LT5tX3ByZXZWaWV3OwotICAgIGlmICh2aWV3LT5t
X3ByZXZWaWV3KQotICAgICAgICB2aWV3LT5tX3ByZXZWaWV3LT5tX25leHRWaWV3ID0gdmlldy0+
bV9uZXh0VmlldzsKLSAgICBpZiAobV9maXJzdFZpZXcgPT0gdmlldykKLSAgICAgICAgbV9maXJz
dFZpZXcgPSB2aWV3LT5tX25leHRWaWV3OwotICAgIHZpZXctPm1fcHJldlZpZXcgPSB2aWV3LT5t
X25leHRWaWV3ID0gMDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXJyYXlC
dWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNlMGExYjNjM2UzZDYzNTE3YzY3MmFhZGFiN2E3NzcxNjQ0MDg4ODAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93
dGYvQXJyYXlCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBBcnJheUJ1ZmZlcl9oCi0jZGVmaW5lIEFycmF5QnVmZmVyX2gKLQotI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdURiB7Ci0KLWNsYXNzIEFycmF5QnVmZmVyOwotY2xhc3MgQXJyYXlCdWZmZXJWaWV3OwotCi1j
bGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJh
eUJ1ZmZlckNvbnRlbnRzKTsKLXB1YmxpYzoKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKCkgCi0g
ICAgICAgIDogbV9kYXRhKDApCi0gICAgICAgICwgbV9zaXplSW5CeXRlcygwKQotICAgIHsgfQot
Ci0gICAgaW5saW5lIH5BcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0KLSAgICB2b2lkKiBkYXRhKCkg
eyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSB7IHJldHVybiBt
X3NpemVJbkJ5dGVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcykgCi0gICAgICAgIDogbV9kYXRhKGRhdGEpCi0g
ICAgICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKLSAgICB7IH0KLQotICAgIGZyaWVu
ZCBjbGFzcyBBcnJheUJ1ZmZlcjsKLQotICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kgewot
ICAgICAgICBaZXJvSW5pdGlhbGl6ZSwKLSAgICAgICAgRG9udEluaXRpYWxpemUKLSAgICB9Owot
Ci0gICAgc3RhdGljIGlubGluZSB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5LCBBcnJheUJ1
ZmZlckNvbnRlbnRzJik7Ci0gICAgdm9pZCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBv
dGhlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghb3RoZXIubV9kYXRhKTsKLSAgICAgICAgb3Ro
ZXIubV9kYXRhID0gbV9kYXRhOwotICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXpl
SW5CeXRlczsKLSAgICAgICAgbV9kYXRhID0gMDsKLSAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7
Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCi0g
ICAgewotICAgICAgICBBU1NFUlQoIW90aGVyLm1fZGF0YSk7Ci0gICAgICAgIEFycmF5QnVmZmVy
Q29udGVudHM6OnRyeUFsbG9jYXRlKG1fc2l6ZUluQnl0ZXMsIHNpemVvZihjaGFyKSwgQXJyYXlC
dWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUsIG90aGVyKTsKLSAgICAgICAgaWYgKCFvdGhl
ci5tX2RhdGEpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1lbWNweShvdGhlci5tX2Rh
dGEsIG1fZGF0YSwgbV9zaXplSW5CeXRlcyk7Ci0gICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMg
PSBtX3NpemVJbkJ5dGVzOwotICAgIH0KLQotICAgIHZvaWQqIG1fZGF0YTsKLSAgICB1bnNpZ25l
ZCBtX3NpemVJbkJ5dGVzOwotfTsKLQotY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxBcnJheUJ1ZmZlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKEFycmF5QnVmZmVyKik7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsK
LSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1
ZmZlckNvbnRlbnRzJik7Ci0KLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOwotCi0gICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKLSAgICBp
bmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25lZCBieXRl
TGVuZ3RoKCkgY29uc3Q7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xp
Y2UoaW50IGJlZ2luLCBpbnQgZW5kKSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gc2xpY2UoaW50IGJlZ2luKSBjb25zdDsKLQotICAgIHZvaWQgYWRkVmlldyhBcnJh
eUJ1ZmZlclZpZXcqKTsKLSAgICB2b2lkIHJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3Kik7Ci0K
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRz
JiwgVmVjdG9yPFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpOwotICAg
IGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFtX2NvbnRlbnRzLm1fZGF0YTsgfQotCi0gICAg
fkFycmF5QnVmZmVyKCkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kp
OwotCi0gICAgaW5saW5lIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmKTsKLSAgICBp
bmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1
bnNpZ25lZCBlbmQpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGludCBp
bmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSBpbnQgY2xhbXBWYWx1ZShpbnQgeCwgaW50
IGxlZnQsIGludCByaWdodCk7Ci0KLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVudHM7
Ci0gICAgQXJyYXlCdWZmZXJWaWV3KiBtX2ZpcnN0VmlldzsKLX07Ci0KLWludCBBcnJheUJ1ZmZl
cjo6Y2xhbXBWYWx1ZShpbnQgeCwgaW50IGxlZnQsIGludCByaWdodCkKLXsKLSAgICBBU1NFUlQo
bGVmdCA8PSByaWdodCk7Ci0gICAgaWYgKHggPCBsZWZ0KQotICAgICAgICB4ID0gbGVmdDsKLSAg
ICBpZiAocmlnaHQgPCB4KQotICAgICAgICB4ID0gcmlnaHQ7Ci0gICAgcmV0dXJuIHg7Ci19Ci0K
LVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKLXsKLSAgICByZXR1cm4gY3JlYXRl
KG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9J
bml0aWFsaXplKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlciogb3RoZXIpCi17Ci0gICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVh
dGUob3RoZXItPmRhdGEoKSwgb3RoZXItPmJ5dGVMZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNp
Z25lZCBieXRlTGVuZ3RoKQotewotICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7Ci0g
ICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlC
dWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUsIGNvbnRlbnRzKTsKLSAgICBpZiAoIWNvbnRl
bnRzLm1fZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBhZG9wdFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVudHMpKTsKLSAgICBtZW1jcHko
YnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7Ci0gICAgcmV0dXJuIGJ1ZmZlci5y
ZWxlYXNlKCk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoQXJyYXlCdWZmZXJDb250ZW50cyYgY29udGVudHMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOwotfQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQotewotICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVu
dHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUp
OwotfQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKLXsKLSAgICBBcnJheUJ1ZmZlckNv
bnRlbnRzIGNvbnRlbnRzOwotICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG51
bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSwgY29udGVudHMpOwotICAgIGlmICgh
Y29udGVudHMubV9kYXRhKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7Ci19Ci0KLUFycmF5QnVmZmVyOjpBcnJheUJ1ZmZl
cihBcnJheUJ1ZmZlckNvbnRlbnRzJiBjb250ZW50cykKLSAgICA6IG1fZmlyc3RWaWV3KDApCi17
Ci0gICAgY29udGVudHMudHJhbnNmZXIobV9jb250ZW50cyk7Ci19Ci0KLXZvaWQqIEFycmF5QnVm
ZmVyOjpkYXRhKCkKLXsKLSAgICByZXR1cm4gbV9jb250ZW50cy5tX2RhdGE7Ci19Ci0KLWNvbnN0
IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZW50
cy5tX2RhdGE7Ci19Ci0KLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9jb250ZW50cy5tX3NpemVJbkJ5dGVzOwotfQotCi1QYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBjb25z
dAotewotICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgo
ZW5kKSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShp
bnQgYmVnaW4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2lu
KSwgYnl0ZUxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAotewotICAg
IHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0gICAgcmV0
dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkg
KyBiZWdpbiwgc2l6ZSk7Ci19Ci0KLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGlu
dCBpbmRleCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0
aCgpOwotICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0aCAr
IGluZGV4OwotICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsK
LX0KLQotdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJ
bml0aWFsaXphdGlvblBvbGljeSBwb2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCkK
LXsKLSAgICAvLyBEbyBub3QgYWxsb3cgMzItYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXpl
LgotICAgIC8vIEZJWE1FOiBXaHkgbm90PyBUaGUgdHJ5RmFzdENhbGxvYyBmdW5jdGlvbiBhbHJl
YWR5IGNoZWNrcyBpdHMgYXJndW1lbnRzLAotICAgIC8vIGFuZCB3aWxsIGZhaWwgaWYgdGhlcmUg
aXMgYW55IG92ZXJmbG93LCBzbyB3aHkgc2hvdWxkIHdlIGluY2x1ZGUgYQotICAgIC8vIHJlZHVk
YW50IHVubmVjZXNzYXJpbHkgcmVzdHJpY3RpdmUgY2hlY2sgaGVyZT8KLSAgICBpZiAobnVtRWxl
bWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVt
ZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVt
ZW50Qnl0ZVNpemUpIHsKLSAgICAgICAgICAgIHJlc3VsdC5tX2RhdGEgPSAwOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIGJvb2wgYWxsb2NhdGlvblN1Y2NlZWRl
ZCA9IGZhbHNlOwotICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCi0gICAgICAgIGFs
bG9jYXRpb25TdWNjZWVkZWQgPSBXVEY6OnRyeUZhc3RDYWxsb2MobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSkuZ2V0VmFsdWUocmVzdWx0Lm1fZGF0YSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IEFTU0VSVChwb2xpY3kgPT0gRG9udEluaXRpYWxpemUpOwotICAgICAgICBhbGxvY2F0aW9uU3Vj
Y2VlZGVkID0gV1RGOjp0cnlGYXN0TWFsbG9jKG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXpl
KS5nZXRWYWx1ZShyZXN1bHQubV9kYXRhKTsKLSAgICB9Ci0KLSAgICBpZiAoYWxsb2NhdGlvblN1
Y2NlZWRlZCkgewotICAgICAgICByZXN1bHQubV9zaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzICog
ZWxlbWVudEJ5dGVTaXplOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHJlc3VsdC5tX2Rh
dGEgPSAwOwotfQotCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjp+QXJyYXlCdWZmZXJDb250ZW50cygp
Ci17Ci0gICAgV1RGOjpmYXN0RnJlZShtX2RhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotdXNpbmcgV1RGOjpBcnJheUJ1ZmZlcjsKLQotI2VuZGlmIC8vIEFycmF5QnVmZmVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9BcnJheUJ1ZmZlclZpZXcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
MDJiM2EyZTQxN2ZkZGYxNGJmZDIxMjA4ZDA4NWE2MjU1ZDM1ZTQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVy
Vmlldy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotCi0jaW5jbHVkZSAi
QXJyYXlCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLUFycmF5QnVmZmVyVmlldzo6QXJy
YXlCdWZmZXJWaWV3KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVPZmZzZXQo
Ynl0ZU9mZnNldCkKLSAgICAgICAgLCBtX2lzTmV1dGVyYWJsZSh0cnVlKQotICAgICAgICAsIG1f
YnVmZmVyKGJ1ZmZlcikKLSAgICAgICAgLCBtX3ByZXZWaWV3KDApCi0gICAgICAgICwgbV9uZXh0
VmlldygwKQotewotICAgIG1fYmFzZUFkZHJlc3MgPSBtX2J1ZmZlciA/IChzdGF0aWNfY2FzdDxj
aGFyKj4obV9idWZmZXItPmRhdGEoKSkgKyBtX2J5dGVPZmZzZXQpIDogMDsKLSAgICBpZiAobV9i
dWZmZXIpIAotICAgICAgICBtX2J1ZmZlci0+YWRkVmlldyh0aGlzKTsKLX0KLQotQXJyYXlCdWZm
ZXJWaWV3Ojp+QXJyYXlCdWZmZXJWaWV3KCkKLXsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAg
IG1fYnVmZmVyLT5yZW1vdmVWaWV3KHRoaXMpOwotfQotCi12b2lkIEFycmF5QnVmZmVyVmlldzo6
bmV1dGVyKCkKLXsKLSAgICBtX2J1ZmZlciA9IDA7Ci0gICAgbV9ieXRlT2Zmc2V0ID0gMDsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2I3MDhmYmRmZmFiOTFkNmY1NjQwYjFmZDdkZWY0MWU2MzA5NjEwZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1
ZmZlclZpZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lm
bmRlZiBBcnJheUJ1ZmZlclZpZXdfaAotI2RlZmluZSBBcnJheUJ1ZmZlclZpZXdfaAotCi0jaW5j
bHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLWNsYXNzIEFycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVy
Vmlldz4gewotICBwdWJsaWM6Ci0gICAgZW51bSBWaWV3VHlwZSB7Ci0gICAgICAgIFR5cGVJbnQ4
LAotICAgICAgICBUeXBlVWludDgsCi0gICAgICAgIFR5cGVVaW50OENsYW1wZWQsCi0gICAgICAg
IFR5cGVJbnQxNiwKLSAgICAgICAgVHlwZVVpbnQxNiwKLSAgICAgICAgVHlwZUludDMyLAotICAg
ICAgICBUeXBlVWludDMyLAotICAgICAgICBUeXBlRmxvYXQzMiwKLSAgICAgICAgVHlwZUZsb2F0
NjQsCi0gICAgICAgIFR5cGVEYXRhVmlldwotICAgIH07Ci0gICAgdmlydHVhbCBWaWV3VHlwZSBn
ZXRUeXBlKCkgY29uc3QgPSAwOwotCi0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlcjsKLSAgICB9Ci0KLSAgICB2
b2lkKiBiYXNlQWRkcmVzcygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9iYXNlQWRk
cmVzczsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2J5dGVPZmZzZXQ7Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKCkgY29uc3QgPSAwOwotCi0gICAgdm9pZCBzZXROZXV0ZXJhYmxlKGJvb2wg
ZmxhZykgeyBtX2lzTmV1dGVyYWJsZSA9IGZsYWc7IH0KLSAgICBib29sIGlzTmV1dGVyYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNOZXV0ZXJhYmxlOyB9Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7Ci0KLSAgcHJvdGVjdGVkOgotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVu
c2lnbmVkIGJ5dGVPZmZzZXQpOwotCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKLQotICAgIGlubGluZSBib29sIHNldFJhbmdl
SW1wbChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpOwotCi0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRl
T2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9p
ZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBh
cnJheVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOwotCi0gICAgLy8gSGVscGVyIHRvIHZlcmlm
eSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCi0gICAgLy8gd2l0
aGluIHJhbmdlLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHZl
cmlmeVN1YlJhbmdlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzKQotICAgIHsKLSAgICAgICAgaWYg
KCFidWZmZXIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChzaXplb2Yo
VCkgPiAxICYmIGJ5dGVPZmZzZXQgJSBzaXplb2YoVCkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRz
ID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gYnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7Ci0gICAg
ICAgIGlmIChudW1FbGVtZW50cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBJbnB1dCBv
ZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7Ci0g
ICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJs
eWluZyBidWZmZXIncyB2aWV3LgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0YXRp
YyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkICpudW1FbGVtZW50cykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7Ci0g
ICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7Ci0gICAgICAgICAgICAqb2Zmc2V0ID0g
YnVmZmVyLT5ieXRlTGVuZ3RoKCk7Ci0gICAgICAgICAgICAqbnVtRWxlbWVudHMgPSAwOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICpvZmZzZXQgPSBhcnJheUJ5dGVP
ZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4o
YnVmZmVyLT5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5p
bmdFbGVtZW50cyA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQp
OwotICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51
bUVsZW1lbnRzKTsKLSAgICB9Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lk
IG5ldXRlcigpOwotCi0gICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZm
ZXIncyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KLSAgICB2b2lkKiBtX2Jhc2VBZGRy
ZXNzOwotCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7Ci0gICAgYm9vbCBtX2lzTmV1
dGVyYWJsZSA6IDE7Ci0KLSAgcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKLSAgICBBcnJheUJ1ZmZlclZpZXcq
IG1fcHJldlZpZXc7Ci0gICAgQXJyYXlCdWZmZXJWaWV3KiBtX25leHRWaWV3OwotfTsKLQotYm9v
bCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCkKLXsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAg
ICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQp
IHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGNoYXIqIGJhc2UgPSBzdGF0aWNfY2FzdDxj
aGFyKj4oYmFzZUFkZHJlc3MoKSk7Ci0gICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJy
YXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKLXsKLSAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0
YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFC
eXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0
IG9yIG92ZXJmbG93Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgY2hh
ciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKLSAgICBtZW1tb3Zl
KGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCi17Ci0gICAgaWYgKGJ5dGVPZmZzZXQg
PiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwg
Ynl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgY2hhciogYmFzZSA9IHN0
YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKLSAgICBtZW1zZXQoYmFzZSArIGJ5dGVP
ZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQg
QXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQg
ZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0g
ICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChz
dGFydCA8IDApCi0gICAgICAgIHN0YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAg
ZW5kICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVu
ZCA9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0
OwotICAgICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5n
dGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotdXNpbmcgV1RGOjpBcnJheUJ1ZmZlclZpZXc7Ci0KLSNlbmRpZiAvLyBBcnJh
eUJ1ZmZlclZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmxvYXQzMkFycmF5Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjY3MmEwYWZmNjMyNjFhNTAzNmFhMjU3ZWUyMWE4NzU5NmE4NDQ2My4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GbG9h
dDMyQXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIEZsb2F0MzJBcnJheV9oCi0jZGVmaW5lIEZsb2F0MzJBcnJheV9oCi0KLSNpbmNsdWRlIDx3
dGYvVHlwZWRBcnJheUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1l
c3BhY2UgV1RGIHsKLQotY2xhc3MgRmxvYXQzMkFycmF5IDogcHVibGljIFR5cGVkQXJyYXlCYXNl
PGZsb2F0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJB
cnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPEZsb2F0MzJBcnJheT4gY3JlYXRlKGNvbnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGUo
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhl
IGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNl
IHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0g
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+
OjpzZXQ7Ci0KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAg
IHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6bV9sZW5ndGgp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6ZGF0
YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSk7Ci0gICAgfQotCi0gICAgaW5s
aW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Owot
ICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBp
bnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gVHlwZUZsb2F0MzI7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IGlubGluZSBGbG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xh
c3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGZsb2F0PjsKLX07Ci0KLVBhc3NS
ZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
Ci17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZsb2F0MzJBcnJh
eT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6
Y3JlYXRlKGNvbnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVy
biBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGFycmF5LCBsZW5n
dGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUo
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRl
PEZsb2F0MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1QYXNzUmVm
UHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGVV
bmluaXRpYWxpemVkPEZsb2F0MzJBcnJheT4obGVuZ3RoKTsKLX0KLQotRmxvYXQzMkFycmF5OjpG
bG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBUeXBlZEFycmF5QmFzZTxmbG9hdD4oYnVm
ZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5
PiBGbG9hdDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+
IEZsb2F0MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAg
IHJldHVybiBzdWJhcnJheUltcGw8RmxvYXQzMkFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6RmxvYXQzMkFycmF5OwotCi0jZW5kaWYgLy8g
RmxvYXQzMkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zsb2F0NjRBcnJheS5o
IGIvU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNhOTMwY2UwMDhlOWZkODZiNDljYjNlYjk0ZjQ4MzRkMjZlMjc4ZGIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvRmxv
YXQ2NEFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEZsb2F0NjRBcnJheV9oCi0jZGVmaW5lIEZsb2F0NjRBcnJheV9oCi0KLSNpbmNsdWRlIDx3
dGYvVHlwZWRBcnJheUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1l
c3BhY2UgV1RGIHsKLQotY2xhc3MgRmxvYXQ2NEFycmF5IDogcHVibGljIFR5cGVkQXJyYXlCYXNl
PGRvdWJsZT4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0
QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0
aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhl
c2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4K
LSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxkb3Vi
bGU+OjpzZXQ7Ci0KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46Om1fbGVu
Z3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBUeXBlZEFycmF5QmFzZTxkb3VibGU+
OjpkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNv
bnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJyYXkoaW50IHN0
YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZUZsb2F0NjQ7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIGlubGluZSBGbG9hdDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xh
c3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT47Ci19OwotCi1QYXNz
UmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFy
cmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5
OjpjcmVhdGUoY29uc3QgZG91YmxlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5PihhcnJheSwg
bGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3Jl
YXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+Ojpj
cmVhdGU8RmxvYXQ2NEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBh
c3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+Ojpj
cmVhdGVVbmluaXRpYWxpemVkPEZsb2F0NjRBcnJheT4obGVuZ3RoKTsKLX0KLQotRmxvYXQ2NEFy
cmF5OjpGbG9hdDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBUeXBlZEFycmF5QmFzZTxkb3Vi
bGU+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPEZsb2F0
NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2
NEFycmF5PiBGbG9hdDY0QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QK
LXsKLSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEZsb2F0NjRBcnJheT4oc3RhcnQsIGVuZCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkZsb2F0NjRBcnJheTsKLQotI2Vu
ZGlmIC8vIEZsb2F0NjRBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJk
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggODJjMmUxODFhYzYyZTQ3NzgxMzJh
MDM5MjcwMWFiMTlhNDNjMjliYy4uMmE0NzUwM2NiYzM0MDAzZWIwN2U0OWMzYmU2ZDRjOWNjNDU5
YzQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaApAQCAtMzMsMzAgKzMzLDE5IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY2xhc3MgUmVmUHRyOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBjbGFzcyBWZWN0b3I7Ci0g
ICAgCi0gICAgY2xhc3MgQXJyYXlCdWZmZXI7Ci0gICAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3Owor
CiAgICAgY2xhc3MgQXRvbWljU3RyaW5nOwogICAgIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CiAg
ICAgY2xhc3MgQmluYXJ5U2VtYXBob3JlOwogICAgIGNsYXNzIENTdHJpbmc7CiAgICAgY2xhc3Mg
RGVjb2RlcjsKICAgICBjbGFzcyBFbmNvZGVyOwotICAgIGNsYXNzIEZsb2F0MzJBcnJheTsKLSAg
ICBjbGFzcyBGbG9hdDY0QXJyYXk7CiAgICAgY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyOwotICAg
IGNsYXNzIEludDhBcnJheTsKLSAgICBjbGFzcyBJbnQxNkFycmF5OwotICAgIGNsYXNzIEludDMy
QXJyYXk7CiAgICAgY2xhc3MgUHJpbnRTdHJlYW07CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiAgICAgY2xhc3MgU3RyaW5n
QnVpbGRlcjsKICAgICBjbGFzcyBTdHJpbmdJbXBsOwotICAgIGNsYXNzIFVpbnQ4QXJyYXk7Ci0g
ICAgY2xhc3MgVWludDhDbGFtcGVkQXJyYXk7Ci0gICAgY2xhc3MgVWludDE2QXJyYXk7Ci0gICAg
Y2xhc3MgVWludDMyQXJyYXk7CiB9CiAKIHVzaW5nIFdURjo6RnVuY3Rpb247CkBAIC02OCwyOCAr
NTcsMTcgQEAgdXNpbmcgV1RGOjpQYXNzUmVmUHRyOwogdXNpbmcgV1RGOjpSZWZQdHI7CiB1c2lu
ZyBXVEY6OlZlY3RvcjsKIAotdXNpbmcgV1RGOjpBcnJheUJ1ZmZlcjsKLXVzaW5nIFdURjo6QXJy
YXlCdWZmZXJWaWV3OwogdXNpbmcgV1RGOjpBdG9taWNTdHJpbmc7CiB1c2luZyBXVEY6OkF0b21p
Y1N0cmluZ0ltcGw7CiB1c2luZyBXVEY6OkJpbmFyeVNlbWFwaG9yZTsKIHVzaW5nIFdURjo6Q1N0
cmluZzsKIHVzaW5nIFdURjo6RW5jb2RlcjsKIHVzaW5nIFdURjo6RGVjb2RlcjsKLXVzaW5nIFdU
Rjo6RmxvYXQzMkFycmF5OwotdXNpbmcgV1RGOjpGbG9hdDY0QXJyYXk7CiB1c2luZyBXVEY6OkZ1
bmN0aW9uRGlzcGF0Y2hlcjsKLXVzaW5nIFdURjo6SW50OEFycmF5OwotdXNpbmcgV1RGOjpJbnQx
NkFycmF5OwotdXNpbmcgV1RGOjpJbnQzMkFycmF5OwogdXNpbmcgV1RGOjpQcmludFN0cmVhbTsK
IHVzaW5nIFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1c2luZyBXVEY6
OlN0cmluZ0J1aWxkZXI7CiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7Ci11c2luZyBXVEY6OlVpbnQ4
QXJyYXk7Ci11c2luZyBXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OwotdXNpbmcgV1RGOjpVaW50MTZB
cnJheTsKLXVzaW5nIFdURjo6VWludDMyQXJyYXk7CiAKICNlbmRpZiAvLyBXVEZfRm9yd2FyZF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxNkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0
Zi9JbnQxNkFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNWE1NzlhNzI4
MWJhOGZmYjNmOTgxYTJlMDg0ZTJkZjVjNTQ4NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEludDE2QXJyYXlfaAot
I2RlZmluZSBJbnQxNkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3Mg
SW50MTZBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHNob3J0PiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZSh1bnNp
Z25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBj
cmVhdGUoY29uc3Qgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91
bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJl
IGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8g
SmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsK
LQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6c2V0OwotICAgIHVzaW5nIEludGVn
cmFsVHlwZWRBcnJheUJhc2U8c2hvcnQ+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJ
bnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVm
UHRyPEludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAg
ICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IFR5cGVJbnQxNjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEludDE2QXJyYXkoUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFr
ZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5
cGVkQXJyYXlCYXNlPHNob3J0PjsKLX07Ci0KLVBhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZB
cnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8c2hvcnQ+OjpjcmVhdGU8SW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJ
bnQxNkFycmF5PiBJbnQxNkFycmF5OjpjcmVhdGUoY29uc3Qgc2hvcnQqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6Y3JlYXRlPElu
dDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IElu
dDE2QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8c2hvcnQ+OjpjcmVhdGU8SW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
OwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaG9y
dD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotSW50MTZB
cnJheTo6SW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJh
c2U8c2hvcnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRy
PEludDE2QXJyYXk+IEludDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQx
NkFycmF5PiBJbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQxNkFycmF5PihzdGFydCwgZW5kKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6SW50MTZBcnJheTsKLQotI2VuZGlmIC8v
IEludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50MzJBcnJheS5oIGIv
U291cmNlL1dURi93dGYvSW50MzJBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NWE5OTc4MDlhMjkzZWZkZmJlZDk4NzA3Nzc2NDhjZWRjNDgxYzAxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludDMyQXJy
YXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIElu
dDMyQXJyYXlfaAotI2RlZmluZSBJbnQzMkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBJbnQzMkFycmF5
IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50PiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUoY29uc3Qg
aW50KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8SW50MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNl
ZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0g
ICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0
aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFy
cmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBU
eXBlZEFycmF5QmFzZTxpbnQ+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTxpbnQ+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IHN1
YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBl
IGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUg
dG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8aW50PjsKLX07
Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJy
YXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3Jl
YXRlKGNvbnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQot
Ci1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkK
LXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGJ1
ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJ
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJbnQzMkFycmF5
PihsZW5ndGgpOwotfQotCi1JbnQzMkFycmF5OjpJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAg
IDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KQotewotfQotCi1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OnN1YmFycmF5KGlu
dCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsK
LX0KLQotUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3Rh
cnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQzMkFycmF5
PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6SW50
MzJBcnJheTsKLQotI2VuZGlmIC8vIEludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvSW50OEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjI5ZDJkOWFhYmEzMjI1ZTY0OTY4Y2NhMDQ0MDQwMWUwOTcz
MzYzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaWZuZGVmIEludDhBcnJheV9oCi0jZGVmaW5lIEludDhBcnJheV9oCi0KLSNpbmNs
dWRlIDx3dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQot
Y2xhc3MgQXJyYXlCdWZmZXI7Ci0KLWNsYXNzIEludDhBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlKGNvbnN0IHNpZ25lZCBjaGFyKiBh
cnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50
OEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4g
aXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBu
b3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZp
bGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJh
eUJhc2U8c2lnbmVkIGNoYXI+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTxzaWduZWQgY2hhcj46OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4g
c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJy
YXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZp
ZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQ4Owot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbmxpbmUgSW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LAotICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZp
c2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8c2ln
bmVkIGNoYXI+OwotfTsKLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNo
YXI+OjpjcmVhdGU8SW50OEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDhBcnJh
eT4gSW50OEFycmF5OjpjcmVhdGUoY29uc3Qgc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBs
ZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPjo6Y3JlYXRl
PEludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJ
bnQ4QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8c2lnbmVkIGNoYXI+OjpjcmVhdGU8SW50OEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxl
bmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxz
aWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50OEFycmF5PihsZW5ndGgpOwotfQot
Ci1JbnQ4QXJyYXk6OkludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRB
cnJheUJhc2U8c2lnbmVkIGNoYXI+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQot
Ci1QYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDhBcnJheT4oc3RhcnQsIGVuZCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkludDhBcnJheTsKLQotI2Vu
ZGlmIC8vIEludDhBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYWYxNGNhYjUxMzMzYjA2YjIzNWMyNzZj
YWZkMmQ5MTRhNjhjMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSW50ZWdyYWxUeXBlZEFycmF5
QmFzZV9oCi0jZGVmaW5lIEludGVncmFsVHlwZWRBcnJheUJhc2VfaAotCi0jaW5jbHVkZSA8d3Rm
L1R5cGVkQXJyYXlCYXNlLmg+Ci0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIGFsbCBXZWJHTDxUPkFycmF5IHR5cGVzIGhv
bGRpbmcgaW50ZWdyYWwKLS8vIChub24tZmxvYXRpbmctcG9pbnQpIHZhbHVlcy4KLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZSA6IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxUPiB7Ci0gIHB1YmxpYzoKLSAgICB2b2lk
IHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKGlu
ZGV4ID49IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKSAvLyBDbGFtcCBOYU4gdG8gMAotICAgICAg
ICAgICAgdmFsdWUgPSAwOwotICAgICAgICAvLyBUaGUgZG91YmxlIGNhc3QgaXMgbmVjZXNzYXJ5
IHRvIGdldCB0aGUgY29ycmVjdCB3cmFwcGluZwotICAgICAgICAvLyBmb3Igb3V0LW9mLXJhbmdl
IHZhbHVlcyB3aXRoIEludDMyQXJyYXkgYW5kIFVpbnQzMkFycmF5LgotICAgICAgICBUeXBlZEFy
cmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0PFQ+KHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHZhbHVlKSk7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBJbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgICAgICA6IFR5cGVkQXJyYXlCYXNlPFQ+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotICAgIHsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKLQotdXNpbmcgV1RGOjpJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlOwotCi0jZW5kaWYgLy8g
SW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UeXBl
ZEFycmF5QmFzZS5oIGIvU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlODI0ZmE4MmM3YmFiOWM3ZjJlNTEyZDdkM2I2YzU2NDE0
NTJkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaWZuZGVmIFR5cGVkQXJyYXlCYXNlX2gKLSNkZWZpbmUgVHlwZWRBcnJh
eUJhc2VfaAotCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0Fy
cmF5QnVmZmVyVmlldy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewotICBw
dWJsaWM6Ci0gICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihiYXNl
QWRkcmVzcygpKTsgfQotCi0gICAgYm9vbCBzZXQoVHlwZWRBcnJheUJhc2U8VD4qIGFycmF5LCB1
bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zm
c2V0ICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBib29sIHNldFJhbmdlKGNvbnN0IFQqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICBy
ZXR1cm4gc2V0UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBk
YXRhTGVuZ3RoICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBzaXplb2YoVCkpOwotICAgIH0KLQotICAg
IGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAqIHNpemVvZihUKSwgbGVuZ3RoICog
c2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICAvLyBPdmVycmlkZGVuIGZyb20gQXJyYXlCdWZmZXJW
aWV3LiBUaGlzIG11c3QgYmUgcHVibGljIGJlY2F1c2Ugb2YKLSAgICAvLyBydWxlcyBhYm91dCBp
bmhlcml0YW5jZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRlIGNsYXNzZXMsIGFuZAotICAgIC8vIGJl
Y2F1c2UgaXQgaXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJzIHRvIHN1YmNsYXNzZXMuCi0gICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlbmd0aDsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQpOwotICAgIH0KLQotICAgIC8vIEludm9r
ZWQgYnkgdGhlIGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5vdCBwZXJmb3JtIHJhbmdlIGNoZWNrczsg
Y2FsbGVyCi0gICAgLy8gaXMgcmVzcG9uc2libGUgZm9yIGRvaW5nIHNvIGFuZCByZXR1cm5pbmcg
dW5kZWZpbmVkIGFzIG5lY2Vzc2FyeS4KLSAgICBUIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8
IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTxUPjo6ZGF0YSgpW2luZGV4XTsKLSAgICB9Ci0KLSAgICBib29sIGNoZWNrSW5ib3VuZERh
dGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3MpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gKG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zIDw9
IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYg
b2Zmc2V0ICsgcG9zID49IG9mZnNldCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVHlwZWRB
cnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDogQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlciwg
Ynl0ZU9mZnNldCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgewotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJj
bGFzcz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShsZW5ndGgsIHNpemVvZihUKSk7
Ci0gICAgICAgIGlmICghYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKLSAgICB9Ci0K
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Vi
Y2xhc3M+IGNyZWF0ZShjb25zdCBUKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotICAgIHsKLSAg
ICAgICAgUmVmUHRyPFN1YmNsYXNzPiBhID0gY3JlYXRlPFN1YmNsYXNzPihsZW5ndGgpOwotICAg
ICAgICBpZiAoYSkKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkKLSAgICAgICAgICAgICAgICBhLT5zZXQoaSwgYXJyYXlbaV0pOwotICAgICAgICByZXR1
cm4gYTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZm
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWYoYnVmZmVyKTsK
LSAgICAgICAgaWYgKCF2ZXJpZnlTdWJSYW5nZTxUPihidWYsIGJ5dGVPZmZzZXQsIGxlbmd0aCkp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1
YmNsYXNzKGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUg
PGNsYXNzIFN1YmNsYXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
LCBzaXplb2YoVCkpOwotICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0
aCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIFBhc3NSZWZQ
dHI8U3ViY2xhc3M+IHN1YmFycmF5SW1wbChpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci0gICAg
ewotICAgICAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICAgICAgY2FsY3VsYXRlT2Zm
c2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIG1fbGVuZ3RoLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAg
ICAgICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxUPihidWZmZXIoKSwgbV9ieXRlT2Zmc2V0
LCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVm
ZmVyKCksIG9mZnNldCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbmV1dGVy
KCkKLSAgICB7Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKCk7Ci0gICAgICAgIG1f
bGVuZ3RoID0gMDsKLSAgICB9Ci0KLSAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBoYXZlIHRvIGFj
Y2VzcyB0aGlzIHZpYSBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gc3ViY2xhc3NlcywKLSAgICAvLyB3
aGljaCBpcyB3aHkgaXQgaXMgcHJvdGVjdGVkIHJhdGhlciB0aGFuIHByaXZhdGUuCi0gICAgdW5z
aWduZWQgbV9sZW5ndGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpU
eXBlZEFycmF5QmFzZTsKLQotI2VuZGlmIC8vIFR5cGVkQXJyYXlCYXNlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50MTZBcnJh
eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2Y1ZjljOTlkNGE4ZmYyOGI3YzU4
NjBhNDQwOWRlN2VhNTllMmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVaW50MTZBcnJheV9oCi0jZGVmaW5lIFVp
bnQxNkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDE2QXJy
YXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD4gewotcHVi
bGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5
PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwot
Ci0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUg
YXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRz
IGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+
OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46
OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQg
c3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJh
eShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBWaWV3VHlwZSBnZXRU
eXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlVWludDE2OwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBpbmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2UgY29u
c3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFy
cmF5QmFzZTx1bnNpZ25lZCBzaG9ydD47Ci19OwotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBV
aW50MTZBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRB
cnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+OjpjcmVhdGU8VWludDE2QXJyYXk+KGxlbmd0aCk7Ci19
Ci0KLVBhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUoY29uc3QgdW5z
aWduZWQgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0Pjo6Y3JlYXRlPFVpbnQxNkFycmF5PihhcnJheSwgbGVu
Z3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+
OjpjcmVhdGU8VWludDE2QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQot
UGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBz
aG9ydD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDE2QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVVp
bnQxNkFycmF5OjpVaW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRB
cnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewot
fQotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0
YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQot
Ci1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0
LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDE2QXJyYXk+
KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpVaW50
MTZBcnJheTsKLQotI2VuZGlmIC8vIFVpbnQxNkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1VpbnQzMkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50MzJBcnJheS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmFkZjZiZmMxOTUxMDZhOGI4NzcxNDAzZjc5MGQ4
MmNjMTNlZGI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVaW50MzJBcnJheV9oCi0jZGVmaW5lIFVpbnQzMkFycmF5
X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFj
ZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDMyQXJyYXkgOiBwdWJs
aWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKGNv
bnN0IHVuc2lnbmVkIGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91
bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJl
IGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8g
SmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7
Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZD46OnNldDsKLSAgICB1c2luZyBJ
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkPjo6c2V0OwotCi0gICAgaW5saW5lIFBhc3NS
ZWZQdHI8VWludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5l
IFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFR5cGVVaW50MzI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBVaW50
MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFz
cy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50PjsKLX07Ci0K
LVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGU8
VWludDMyQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQz
MkFycmF5OjpjcmVhdGUoY29uc3QgdW5zaWduZWQgaW50KiBhcnJheSwgdW5zaWduZWQgbGVuZ3Ro
KQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGU8VWlu
dDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBV
aW50MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGU8VWludDMyQXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNl
dCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQzMkFycmF5Pihs
ZW5ndGgpOwotfQotCi1VaW50MzJBcnJheTo6VWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAg
OiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5Ojpz
dWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBs
ZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpzdWJh
cnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1w
bDxVaW50MzJBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11
c2luZyBXVEY6OlVpbnQzMkFycmF5OwotCi0jZW5kaWYgLy8gVWludDMyQXJyYXlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVWludDhBcnJheS5oIGIvU291cmNlL1dURi93dGYvVWludDhB
cnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2FmMDU0NzY2NWI0ODg4N2E4
OWQzYTRkMmU4NzRlZmJhOTNjOGI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaAorKysgL2Rldi9udWxsCkBA
IC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVpbnQ4QXJyYXlfaAotI2RlZmluZSBV
aW50OEFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDhBcnJh
eSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNy
ZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAg
Ly8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkg
d2lsbCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVj
dGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6c2V0Owot
ICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OnNldDsKLQot
ICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29u
c3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0
LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQ4OwotICAgIH0KLQotcHJvdGVjdGVkOgot
ICAgIGlubGluZSBVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNp
YmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVuc2ln
bmVkIGNoYXI+OwotfTsKLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVh
dGUodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25l
ZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWlu
dDhBcnJheT4gVWludDhBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNo
YXI+OjpjcmVhdGU8VWludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8
VWludDhBcnJheT4gVWludDhBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVy
biBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4QXJyYXk+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50
OEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1
cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWlu
dDhBcnJheT4obGVuZ3RoKTsKLX0KLQotVWludDhBcnJheTo6VWludDhBcnJheShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKLTogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPihidWZmZXIsIGJ5dGVP
ZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5
OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0
LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6c3Vi
YXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUlt
cGw8VWludDhBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11
c2luZyBXVEY6OlVpbnQ4QXJyYXk7Ci0KLSNlbmRpZiAvLyBVaW50OEFycmF5X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9V
aW50OENsYW1wZWRBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWNjMmQ4
MmIyOTE0MmJkMzEyODM2YTUwNzk3Njg1MDhhZGIzMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBVaW50OENsYW1wZWRBcnJheV9oCi0jZGVmaW5lIFVpbnQ4Q2xhbXBlZEFycmF5X2gK
LQotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotCi0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXku
aD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xh
c3MgVWludDhDbGFtcGVkQXJyYXkgOiBwdWJsaWMgVWludDhBcnJheSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUg
ZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2Ug
cmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIEl0J3Mgb25seSBuZWVkZWQgdG8g
cG90ZW50aWFsbHkgY2FsbCB0aGlzIG1ldGhvZCBpZiB0aGUgYXJyYXkKLSAgICAvLyB3YXMgY3Jl
YXRlZCB1bmluaXRpYWxpemVkIC0tIHRoZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uIHBhdGhzCi0g
ICAgLy8gemVybyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KLSAgICBpbmxpbmUgdm9pZCB6ZXJvRmls
bCgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OnNldDsKLSAg
ICBpbmxpbmUgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSk7Ci0KLSAgICBp
bmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBj
b25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlw
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQ4Q2xhbXBlZDsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIFVpbnQ4Q2xhbXBlZEFycmF5KFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBj
bGFzcyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjsKLX07Ci0KLVBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVp
bnQ4Q2xhbXBlZEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFycmF5
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVk
IGNoYXI+OjpjcmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1Q
YXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6
Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19
Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJh
eUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDhDbGFtcGVkQXJy
YXk+KGxlbmd0aCk7Ci19Ci0KLXZvaWQgVWludDhDbGFtcGVkQXJyYXk6Onplcm9GaWxsKCkKLXsK
LSAgICB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOwotfQotCi12b2lkIFVpbnQ4Q2xhbXBlZEFycmF5
OjpzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKLXsKLSAgICBpZiAoaW5kZXggPj0g
bV9sZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkgfHwg
dmFsdWUgPCAwKQotICAgICAgICB2YWx1ZSA9IDA7Ci0gICAgZWxzZSBpZiAodmFsdWUgPiAyNTUp
Ci0gICAgICAgIHZhbHVlID0gMjU1OwotICAgIGRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihscmludCh2YWx1ZSkpOwotfQotCi1VaW50OENsYW1wZWRBcnJheTo6VWlu
dDhDbGFtcGVkQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi06IFVpbnQ4QXJyYXkoYnVmZmVyLCBieXRlT2Zm
c2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4
Q2xhbXBlZEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1
YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OENsYW1wZWRBcnJheT4oc3RhcnQsIGVu
ZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OlVpbnQ4Q2xhbXBlZEFy
cmF5OwotCi0jZW5kaWYgLy8gVWludDhDbGFtcGVkQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY4N2Q5OGM4YWVlOGU5NDc3MjVhMWU3ZjI0MTg1Mjc0MDE3OWE3Y2QKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVm
ZmVyLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0FycmF5QnVmZmVyX2gK
KyNkZWZpbmUgV2ViQ29yZV9GV0RfQXJyYXlCdWZmZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FycmF5QnVmZmVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRlMzk1MjY2OTdjZDEwZGIzZjQ4ZjhiOTZkZDAwNGQ4YjNmOTQ4MmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZlclZp
ZXdfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZlclZpZXdfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDMyQXJyYXkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMjQ1M2RkMjE2MDhkM2NjYzljZTQ4YzEwNTA2NGE3NzZmZWIzZDBlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9h
dDMyQXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRmxvYXQzMkFy
cmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRmxvYXQzMkFycmF5X2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTdlMzVhYWRjODhhZWJjOTU1MGFlNWY1ODFkMWI4ZDg5YzgzYTZlMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFy
cmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0Zsb2F0NjRBcnJheV9o
CisjZGVmaW5lIFdlYkNvcmVfRldEX0Zsb2F0NjRBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRmxvYXQ2NEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQxNkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkMDAz
OTlkYTM1NDk3OTNjZGI5YzFiN2VhMmUxNGE0ODdjODEyOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oCkBAIC0w
LDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnQxNkFycmF5X2gKKyNkZWZpbmUgV2Vi
Q29yZV9GV0RfSW50MTZBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50MTZBcnJh
eS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0ludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvSW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNjU3NDFkNzY5YmNlNjkwOTFmZGYy
MGYxOGFhMGJlZGM2ZWEwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfSW50MzJBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0ludDMyQXJy
YXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDMyQXJyYXkuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJy
YXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50OEFycmF5
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmI2YWQ1Mjc0MGI1MWYxZmRmYjg4YWFlYWMzMWNjYTk1Yjg5MTQ2Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvSW50OEFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0ludDhB
cnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0ludDhBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW50OEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzY3OWI1Njg0YzY2MDcxMzdjYzU4Yjc2N2FlNmZmYTE2YmFmOGE2
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBX
ZWJDb3JlX0ZXRF9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
SW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50ZWdy
YWxUeXBlZEFycmF5QmFzZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTY0MWE1N2MzYTY1OGJiYzVmMDAyZGYwMTY3OTcwZTYyZjVmMTQwZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlwZWRBcnJheUJh
c2UuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVHlwZWRBcnJheUJhc2Vf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9UeXBlZEFycmF5QmFzZV9oCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVHlwZWRBcnJheUJhc2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZBcnJheS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZBcnJheS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNjY2VhMmMxYjBjMDczN2VjNmM4MGY0M2I2YTVlMWIwMzVkOTYyZTIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQxNkFycmF5
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1VpbnQxNkFycmF5X2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfVWludDE2QXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1VpbnQxNkFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjAyNmYxNWMw
NjM2MThjYzZiMmQ0MTYyZDhjYmVjOGFhN2IwYjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5oCkBAIC0wLDAg
KzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VaW50MzJBcnJheV9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1VpbnQzMkFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJh
eS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1VpbnQ4QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvVWludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOGRlNGVhNzhjY2FkZTQ5MjNhODY5
NjAxYjE1MGRkNTg1N2Q3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfVWludDhBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1VpbnQ4QXJy
YXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENs
YW1wZWRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9V
aW50OENsYW1wZWRBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZDJlMDFkMWE4ZTU3MGQ4YWE1Mjk1ODRl
MTFhOTg2NTUzYzY5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1VpbnQ4Q2xhbXBlZEFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9G
V0RfVWludDhDbGFtcGVkQXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xh
bXBlZEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCmluZGV4IDNiNzUzZGM1MzdhNzgxODY1ZTliNmUxM2FmZmQ2M2Q2ZGZlZGNhYWIu
LjNjNDBmOWNkNWI0YjM3YWExZGIxZjhiNjFhM2EwZWNiNTZlMDQxMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtMjgsOSArMjgsOSBAQAogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQu
Y3BwCmluZGV4IDRhOWM4NDNhNjUyMWY5YjFjN2YyZDliYmJmMjAzNmM0M2U3YWNhNzkuLjJiMzFi
NDc5Yzc3ZDU2ZjI2Njg3Zjk1YjM3NWEyYTgxNDNlYjI5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdl
RXZlbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJh
eS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwCmluZGV4IDVlMDZmOGQ1MDYzMTdlYTNmYjlh
ODM3ODc5ZmY4MDFjOGY5NjdhMjUuLmRiMDYxNzM4YTAxMmIwYjk2NzJkMjcyZmJhZGQ1M2NjMTc2
M2MzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIk1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
LSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJh
eS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDgzZDFmYmVl
YWMzNzY2NGVkMGZkNGYyZWM1MDljZDYzMmY5ZmJkODYuLjA3NjY4NDQ3OTNmOGFhMDg1NjhjNTU2
MzNmZWYwYWI2MDA5ZWYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggNGZmM2Uw
NjllYTEyOTU1MjQ4YjA3MWFkYzEzMzM3Njg0YTJhNDg2Ni4uZjE2MmY5NjFiZjBkNWMxYTVkOTEy
YTkxZDQ5MTEwZWM2YzUxZWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJD
RE0uaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGVlNjMyNjljNmU4
YjgwNjRhYjY0MTNhMjIyODY2YTdiMTc3MDE5YTQuLjcwN2E4MzNmOTJkOTA0OTVlOGJlMDI2MmQ0
MWQ3ODlhYjY3NDI0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRl
ICJUaW1lUmFuZ2VzLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXgg
ZmY4MGRmNTQ3NDRhNGEzMTM0ODljMjU2NzBhNzJkNjUxNDkzZWUyMS4uMjJlYjZhZGExYmJhZWI0
YWNhNWY2YjdkMGMwNGU1NDQ5ODgxOTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgIk1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bC5jcHAKaW5kZXggZjIwMTg4M2NiNjBjZDYxYmQyYjQ2OGY1ZjAzODJlOGUwYzc2YWQxZC4uMDQ1
YzVkNzJkMDdhYTU2NDcxOGE1N2EzMjc5MzZiNTk1MmJkYmFlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTM1
LDggKzM1LDggQEAKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0Fy
cmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZp
YnJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JW
aWJyYXRpb24uY3BwCmluZGV4IDk2ZTk3YTkxNWY1MjcxNmE2MGNlYmM5OWIzNjRlNjgyZmU2MDMy
ZjguLjgzYjYwMjhiZDA4MDQzZjBiNGJlNjc1OTM1M2FhM2VkNWM5NGUyYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9u
LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJWaWJyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvVWludDMyQXJy
YXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFs
eXNlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmgKaW5kZXggOWYyZjBiODczMjA5MjM3NmVkZDc5ZGM3YzFhZWE1ZWE5N2NkODM0NC4uYzNhYTVj
Nzc4MmMwNzdjNGQxNGJjMDBjMTVhN2I1MDFkYzMyMGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBAIC01OSw5ICs1OSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNtb290aGluZ1RpbWVDb25zdGFudChmbG9hdCBrLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgZmxvYXQgc21vb3RoaW5nVGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4g
bV9hbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQoKTsgfQogCi0gICAgdm9pZCBnZXRGbG9h
dEZyZXF1ZW5jeURhdGEoRmxvYXQzMkFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEZsb2F0
RnJlcXVlbmN5RGF0YShhcnJheSk7IH0KLSAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRhKFVp
bnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoYXJyYXkp
OyB9Ci0gICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSogYXJyYXkpIHsg
bV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkpOyB9CisgICAgdm9pZCBnZXRG
bG9hdEZyZXF1ZW5jeURhdGEoSlNDOjpGbG9hdDMyQXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIu
Z2V0RmxvYXRGcmVxdWVuY3lEYXRhKGFycmF5KTsgfQorICAgIHZvaWQgZ2V0Qnl0ZUZyZXF1ZW5j
eURhdGEoSlNDOjpVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVGcmVxdWVu
Y3lEYXRhKGFycmF5KTsgfQorICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKEpTQzo6VWlu
dDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkp
OyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IGYwMGJkMWFkY2YyMTA0Y2ZkMmU5N2Zh
MzUwMWI2MDNkYzdkYTI4OGEuLjA5MzgzZWY1ZjQ3OWYzNTQwN2ZmMTEzMDA4MGQzZTE2MjQ2YmJl
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNB
dWRpb0RlY29kZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJBdWRpb0J1ZmZl
ci5oIgogI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBjZWQ4MDU4YzBmNjAxNDNkMzMzNTFkNGVjYTU2NWFi
ZDhkNzg0OGE3Li45Y2ZhODhlNWVjMGNiM2U2ZjcwNmJkYTI2NGYwZTkyNzVkMzJmYjJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rl
ci5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7CkBAIC00Nywy
MCArNTEsMjAgQEAgcHVibGljOgogICAgIH5Bc3luY0F1ZGlvRGVjb2RlcigpOwogCiAgICAgLy8g
TXVzdCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGVjb2RlQXN5bmMo
QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBkZWNvZGVBc3luYyhKU0M6OkFycmF5
QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZm
ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spOwogCiBwcml2YXRlOgogICAgIGNsYXNzIERlY29kaW5nVGFzayB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlY29kaW5nVGFzayk7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0ZShBcnJheUJ1
ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8RGVjb2RpbmdUYXNr
PiBjcmVhdGUoSlNDOjpBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQ
YXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKIAogICAgICAgICB2b2lkIGRl
Y29kZSgpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBEZWNvZGluZ1Rhc2soQXJy
YXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1
ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgICAgIERlY29kaW5nVGFzayhKU0M6OkFycmF5QnVm
ZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spOwogCi0gICAgICAgIEFycmF5QnVmZmVyKiBhdWRpb0RhdGEoKSB7IHJl
dHVybiBtX2F1ZGlvRGF0YS5nZXQoKTsgfQorICAgICAgICBKU0M6OkFycmF5QnVmZmVyKiBhdWRp
b0RhdGEoKSB7IHJldHVybiBtX2F1ZGlvRGF0YS5nZXQoKTsgfQogICAgICAgICBmbG9hdCBzYW1w
bGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgICAgIEF1ZGlvQnVm
ZmVyQ2FsbGJhY2sqIHN1Y2Nlc3NDYWxsYmFjaygpIHsgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNr
LmdldCgpOyB9CiAgICAgICAgIEF1ZGlvQnVmZmVyQ2FsbGJhY2sqIGVycm9yQ2FsbGJhY2soKSB7
IHJldHVybiBtX2Vycm9yQ2FsbGJhY2suZ2V0KCk7IH0KQEAgLTY5LDcgKzczLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgc3RhdGljIHZvaWQgbm90aWZ5Q29tcGxldGVEaXNwYXRjaCh2b2lkKiB1c2Vy
RGF0YSk7CiAgICAgICAgIHZvaWQgbm90aWZ5Q29tcGxldGUoKTsKIAotICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1fYXVkaW9EYXRhOworICAgICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4gbV9hdWRpb0RhdGE7CiAgICAgICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICAgICAgUmVm
UHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogICAgICAgICBSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCmluZGV4IDgyN2RmOWViYjg0ZTZlMGEy
N2JkZTJjZDgwMTUwMzE2ZWIwNjdkYWYuLjFjYTY3NjZiYzk5ZTJhMmFmMzk5OGUyZmRlOTg3YTA5
NGIxZWUwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgQXVkaW9CdWZmZXJfaAogI2RlZmluZSBB
dWRpb0J1ZmZlcl9oCiAKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDJi
NGQxNzk4OGEyYWYxNjIyMTQ3NDQ4NTU2OWNmYWI5ZWZmZjM1MjUuLjhhMGU4ZDViMmI2MTUwZWRj
ZDI0YzRkZmNjMDViM2ZmZmM5YjdlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAKICNpbmNsdWRlICJH
U3RyZWFtZXJVdGlsaXRpZXMuaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9BdG9t
aWNzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCmluZGV4
IDUyNGY5OGYwN2Y4YzJhYWU2MzkwMzE5NmM3NDFmYzJiOTRjNDg5OTEuLjFlNDA3YmEwYmE0ODUx
M2VhODY0NTNhNzEyM2M2NDdiZjU0MDE2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYXJhbS5oCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5lLmgiCiAjaW5jbHVkZSAiQXVk
aW9TdW1taW5nSnVuY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAppbmRleCBjMGE5NjA4NzA0OTEz
MDhlNzEwNDQwOWRhZDc5NDg2MDM1ZGMxYjExLi5lMGU1YTVkY2NiNTAyYmIzNzNlZGJkMDcyMDFi
NTRkZWZiYTQ2Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW1UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZpbmUgQXVkaW9Q
YXJhbVRpbWVsaW5lX2gKIAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0
Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuaAppbmRleCAzYjZkZTY4ZmUwZTBmYjMyOTA2YjBmNzI4NDI2YWI5
ODFiMDc5MGY2Li4xMjQzZDkwODBkMmRjZWU2NmMwNjNiZDg3MTc4OTZjNDJhMWJkZmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmgKQEAgLTMw
LDcgKzMwLDcgQEAKICNkZWZpbmUgUGVyaW9kaWNXYXZlX2gKIAogI2luY2x1ZGUgIkF1ZGlvQXJy
YXkuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9G
bG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNjgx
NjNjZTU1N2ExZmUxODAxOTEyZWEyOWZkYTdlZDBjNTgyMjk3Ni4uNjRhM2NmM2I5NDk3MzEwM2Nl
MDhiYTBiOTFkYTI3YjJiNjFkZjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNp
bmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNv
bXBsZXg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
RmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1
ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaAppbmRleCAw
MmVhMDVmNWVlZWE1Y2ZhZWYyMDY1MzM1MGRmNDIzZjM5YTljMDBiLi4xZmJiNjhhNTY2N2Q3MWFl
Y2QzOWY5NTM1OTE5NzA5YTNmYjFhMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaApAQCAtMzAsNiArMzAsMTEgQEAKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgRmxvYXQzMkFycmF5OworY2xhc3MgVWludDhBcnJheTsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKQEAgLTU3LDkgKzYyLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGZsb2F0IGspIHsgbV9z
bW9vdGhpbmdUaW1lQ29uc3RhbnQgPSBrOyB9CiAgICAgZmxvYXQgc21vb3RoaW5nVGltZUNvbnN0
YW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc21vb3RoaW5nVGltZUNv
bnN0YW50KTsgfQogCi0gICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoRmxvYXQzMkFycmF5
Kik7Ci0gICAgdm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5Kik7Ci0gICAgdm9p
ZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSopOworICAgIHZvaWQgZ2V0RmxvYXRG
cmVxdWVuY3lEYXRhKEpTQzo6RmxvYXQzMkFycmF5Kik7CisgICAgdm9pZCBnZXRCeXRlRnJlcXVl
bmN5RGF0YShKU0M6OlVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0
YShKU0M6OlVpbnQ4QXJyYXkqKTsKIAogICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgd3JpdGVzIGlu
cHV0IGRhdGEgaGVyZS4KICAgICB2b2lkIHdyaXRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDRlMzZlODc5N2E2ZWRkOTJmNzExOTFj
MDM5MDQwYTllMWU4M2M4OTYuLmFiMWQyZWUwZmIyODQ1Zjk2YjFhOWRmOTUxNGQ1MGMzYTIzNDA3
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvTm9k
ZU91dHB1dC5oIgogI2luY2x1ZGUgIkF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVu
dGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCmluZGV4IDU1OTdhOTRjMWU3Mjc0M2FkZjdmODRhYmYy
OGYyNzRkY2YzOTA5NzcuLjYzNWFjNzVkOTRiMjNkMzFmOGE5ZDY5Y2E5NzU0N2RiMWE5MzJjMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclBy
b2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
clByb2Nlc3Nvci5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQXVkaW9EU1BLZXJuZWwu
aCIKICNpbmNsdWRlICJBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlv
Tm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMThkOTlhOWYw
YWFmMDJkNWU5NGY1ZDVlOGVhNGU4M2Y1MzI4NGJhYS4uZmY3MjgzZDg1N2Y4ZTJjZGUzOGNmMDIz
MzU4NDliYjdiZTQxZWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTM3LDYg
KzM3LDExIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNz
IEFycmF5QnVmZmVyVmlldzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9i
OwpAQCAtNjAsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9j
b2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFj
ayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSA9IDA7IC8vIFdp
bGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgog
ICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwot
ICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgU2VuZFJl
c3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBieXRlTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29u
c3QgQmxvYiYpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAppbmRleCBiNGI0OWMxMGU5NDk0ZGQ1MjZkYWI4MWE1OWYwN2Q5YTk5MWFl
ZTVlLi41ZmEzZDlmNmEwZDFjOGRmMTgxZjBkMjQyOTBkNTgxMjNmMjkzNDA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNTQsOCAr
NTQsOCBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCi0jaW5j
bHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggZTY0NzkwMzE1NTY3MGVjOWM5
MDdhNWE5YTI0MTMxNWQ3Y2VmNmE4My4uOWE1ODIzNzBmZmQ4NjQwYzQwMWYyZDM3ZTFiOWNkOWFi
ZGYzYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0KGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCBzZW5kKEFycmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgc2VuZChBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5k
KEpTQzo6QXJyYXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKEpTQzo6
QXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChCbG9iKiwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5n
JiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA1YmU5OWE5MTJlNTk3
ZWI4OGU1OTk1YjNlYTk3NmNhMTk3ZDA5MWEwLi4zNGY0YWJlNjIwZjhlMmVhM2ZjMGQwMTBiMDEw
OWJiZGFhYjE1NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAjaW5jbHVkZSAi
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5o
IgogCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJh
eUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDE3MGFiMTgzYWQ0
ODNlOTk0MzQ5MTlmZTI5ZGVhMTAzYTY2MDg1OTIuLmYxNDhjZDkxYjA4MTAwOGY4YmFmNTAwNWZl
MDlhNDk3NDgzNzE1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5k
KGNvbnN0IEFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pIE9WRVJSSURFOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU2N2I5Nzk1MjI1MmY0M2ZkN2M1MTlk
YTNmNDdjMjMyNGEyNjY2MzUuLjc4YjViMTAzYTI0MjVlOWY2NTI1YTdjMTE4NjY1NWNmNGU2YTlj
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDUs
NyArNDUsNyBAQAogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29y
a2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgPHd0Zi9B
cnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCmluZGV4IDI0MjEzNDM1ZDEzZDZiNTUwZmE2NGRmYjIyYzc4ZmU2YjY0NjMwMzMuLjQx
OWFjNDJkNmJjMzlkODZmYjZjYzJmYjc3OWZjMWM2OWVmMmRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5n
IGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQo
Y29uc3QgQXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bikgT1ZFUlJJREU7CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lkIGNv
bm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICB2b2lk
IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEFy
cmF5QnVmZmVyJik7CisgICAgICAgIHZvaWQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJik7
CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBCbG9iJik7CiAgICAgICAgIHZvaWQgYnVmZmVyZWRB
bW91bnQoKTsKICAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6
ZSgpOwogICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpOwogICAgICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBz
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgICAgIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwogICAgICAgICB1
bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNGYyYzcw
NzMxOTJmYWM0MWRjMzU1YzJmOTM5YTA3NmM4NzY1YzkzYS4uYjFmZjIxNjk3ZDY1ZmE3ZDdkNzYx
NTFkMjI0OTNlOGQ0YmVkZWI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTcyMCw3ICs3MjAs
NyBAQCBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlckQyRXYKIF9fWk43V2ViQ29y
ZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0
UFBLMTNPcGFxdWVKU1ZhbHVlCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTEx
ZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0SlNHbG9iYWxPYmplY3RFUE4zV1RG
NlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0RUVFTG0xRU5TNl8xNUNyYXNoT25P
dmVyZmxvd0VFRU5TXzIyU2VyaWFsaXphdGlvbkVycm9yTW9kZUUKIF9fWk43V2ViQ29yZTIxU2Vy
aWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVQSzE1T3BhcXVlSlNDb250ZXh0UEsxM09wYXF1ZUpT
VmFsdWVQUzZfCi1fX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUE4z
SlNDOUV4ZWNTdGF0ZUVOUzFfN0pTVmFsdWVFUE4zV1RGNlZlY3RvcklOUzVfNlJlZlB0cklOU18x
MU1lc3NhZ2VQb3J0RUVFTG0xRU5TNV8xNUNyYXNoT25PdmVyZmxvd0VFRVBOUzZfSU5TN19JTlM1
XzExQXJyYXlCdWZmZXJFRUVMbTFFU0FfRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVFCitf
X1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUE4zSlNDOUV4ZWNTdGF0
ZUVOUzFfN0pTVmFsdWVFUE4zV1RGNlZlY3RvcklOUzVfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRU5TNV8xNUNyYXNoT25PdmVyZmxvd0VFRVBOUzZfSU5TN19JTlMxXzExQXJyYXlCdWZm
ZXJFRUVMbTFFU0FfRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVFCiBfX1pON1dlYkNvcmUy
MVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUMxRVJOM1dURjZWZWN0b3JJaExtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlRDFFdgpA
QCAtOTA3LDcgKzkwNyw3IEBAIF9fWk43V2ViQ29yZTRQYXRoQzFFdgogX19aTjdXZWJDb3JlNFBh
dGhEMUV2CiBfX1pON1dlYkNvcmU0Y29yZUVQMjBOU1VSTFByb3RlY3Rpb25TcGFjZQogX19aTjdX
ZWJDb3JlNGNvcmVFUDI4TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQotX19aTjdXZWJDb3Jl
NHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNXVEYxMUFy
cmF5QnVmZmVyRQorX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RP
TUdsb2JhbE9iamVjdEVQTlMwXzExQXJyYXlCdWZmZXJFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNK
U0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVudFJlY3RFCiBf
X1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0
RVBOU18xM0RPTVN0cmluZ0xpc3RFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRl
RVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xNENsaWVudFJlY3RMaXN0RQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAppbmRleCAy
ZmEzMDZhOWQzOGMyYzM5YjM3MmU1OTRhNmY4MjgyOWE0NjM1ODllLi5kZmQ1MmFiNzhmY2M2N2U3
ZDJiNDYzYTA1ZjY1YjZmNDA3ZjYwYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgot
I2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVs
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBl
ci5oCmluZGV4IDlhZjNmOGFkZDdkNjk1N2I1ZWQwYjk1MDY1NzVhM2E0YWE5Yjc1MjYuLjg3YjZl
NGM5MTdkYzQ1NDg3OTk4MmUyNzg4ODljY2EwNzFlZmEwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaApAQCAtMzIsMTIg
KzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8aW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVj
dC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4KKyNpbmNsdWRl
IDxydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3Bw
CmluZGV4IGQ3MzAzNmZmOTFiMTBlZTY2ZTcwM2Q3YWMzZjY1MDk1NDczMmM2ZWQuLmFiNjg1MjZl
YzYyNTRkMjZlMWMyZmRiMzNmMGYxMmRiZjliYzcxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM0LDggKzM0LDgg
QEAKICNpbmNsdWRlICJKU0F1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTT2ZmbGluZUF1ZGlv
Q29udGV4dC5oIgogI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1
ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKaW5kZXggYTk2M2E3NDY4
NzY1NGEyZWM4MDA4ZDRmYzM3MjIxODMxYTliNWJhNS4uZDllOTI5ODFhNmEzOTFjNjk5ODQzNWU2
NjY4NDlhMWVkYjBiZTM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvQ3VzdG9tLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogCisjaW5jbHVkZSA8cnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyVmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4IDFmODY4NGZmMGMxMzc1MWNi
MWI3ZmYwMjhlYTgwNDllZjYwODRmMDYuLjA1MTlmZTI2NWRmZTA5NDQ1MmNkNmEyM2E5MWZhMjIz
NDEwYWNiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBA
IC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIGNvbnZl
cnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgQXJyYXlWYWx1ZSYgcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCBj
b252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxVaW50OEFy
cmF5PiYgcmVzdWx0KTsKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiByZXN1bHQpOwogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8TWVkaWFLZXlFcnJvcj4mIHJlc3Vs
dCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmls
ZVJlYWRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFk
ZXJDdXN0b20uY3BwCmluZGV4IDhiNDkzY2ExNzY5ZjJlZDk5N2E5ZTUwNTU3ZjBjNTRkNTQwMzJj
MzcuLmU4NTEyMTlhZmE3NDg4YjMzNTkxZjQ2Y2JhNjRkODAzYTUwOTE3OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcApAQCAtMzYs
NyArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcAppbmRleCA1ZWQ1M2U3YjUzZDI5MzA0ZGIzM2FlZGMyNzkyMTBlMjAxMTNlMTBjLi4y
MmJmMWFhYzdjMTIwNjk0MmY1N2VmMmFlMmVkZWZiNmQ0NWFkMmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCkBAIC04NSwxMSArODUsMTEgQEAKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9J
bnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAKICNpZiBFTkFCTEUo
VklERU8pCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAyYjc5
OWM1MGVlYmMwYjFjNDkzMjRkNTZlYzE5YWE5YWVmZDAwZTZiLi44ZGQ4YmY1NTkyMmY2NTQ0NzU5
NDViMDRhYzE0MmM4NTk0MmE2YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtNDgsOCArNDgsOCBAQAogI2lu
Y2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAj
aW5jbHVkZSA8aW50ZXJwcmV0ZXIvU3RhY2tJdGVyYXRvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
QXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L0FycmF5QnVmZmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDEy
NmEwNGJmYmExMTk0NDU4NDE1ODc5ODVhMzU4NTJmNGE3MGU5OGUuLjM4MmNiMjdlYjNlZDRiMmIw
NTNkMmU1YTY4NzFjZDU3MTRhYzBkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJU2hpbXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5
QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Cb29sZWFuT2JqZWN0Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC02
Nyw5ICs2OCw4IEBACiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvUmVnRXhwLmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHBPYmplY3Qu
aD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4
Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3
dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CkBAIC05NzgsNyArOTc4LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNv
ZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICByZXR1cm4gU3Vj
Y2Vzc2Z1bGx5Q29tcGxldGVkOwogfQogCi10eXBlZGVmIFZlY3RvcjxXVEY6OkFycmF5QnVmZmVy
Q29udGVudHM+IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsKK3R5cGVkZWYgVmVjdG9yPEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogCiBjbGFzcyBD
bG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6CkBAIC0xNzc3LDcgKzE3Nzcs
NyBAQCBQYXNzT3duUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdQogICAgIFZlY3RvcjxSZWZQdHI8RE9NV3JhcHBl
cldvcmxkPiA+IHdvcmxkczsKICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4o
ZXhlYy0+dm0oKS5jbGllbnREYXRhKS0+Z2V0QWxsV29ybGRzKHdvcmxkcyk7CiAKLSAgICBIYXNo
U2V0PFdURjo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOworICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1
ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRleCA9IDA7IGFy
cmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZlckluZGV4Kysp
IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4gbmV1dGVyZWRWaWV3
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCBkM2NkODgwOGQ4NDZiM2U3N2M4MDAzNTA2NmRlNWY1NGM3YTA3N2M5Li42
MTExMmU3YzY4NTAwOWU2NzRmNjM3MDQzNzgyNGI2YjMyYTQ0NzM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMjksOCAr
MjksOCBAQAogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9u
Zy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNZXNzYWdlUG9ydDsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4sIDE+
IE1lc3NhZ2VQb3J0QXJyYXk7Ci10eXBlZGVmIFZlY3RvcjxSZWZQdHI8V1RGOjpBcnJheUJ1ZmZl
cj4sIDE+IEFycmF5QnVmZmVyQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4sIDE+IEFycmF5QnVmZmVyQXJyYXk7CiAgCiBlbnVtIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCkBAIC0xMTMsNyArMTEzLDcgQEAg
cHVibGljOgogICAgIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICB0
eXBlZGVmIFZlY3RvcjxXVEY6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheTsKKyAgICB0eXBlZGVmIFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+IEFy
cmF5QnVmZmVyQ29udGVudHNBcnJheTsKICAgICBzdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0
aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUpOwogICAgIHN0YXRpYyBib29sIHNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nl
c3NmdWxseShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiB0cmFuc2ZlckFycmF5QnVmZmVycyhKU0M6OkV4ZWNT
dGF0ZSosIEFycmF5QnVmZmVyQXJyYXkmLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCAwZjI4ZjZlZTUyOTJiNDIyZTQwYzVkZjYxZmFhM2JjZjYxZTBkNTcyLi42ZDU4OTJkNzk1
NjdmMzlmYjg5NjM5MDU4ZTI2ZmFlMDI4ZmNkNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjI2LDcgKzIyNiw3IEBA
IHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICB9IGVsc2lmICgkaXNDYWxsYmFjayAmJiAkY29k
ZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkpIHsKICAgICAgICAgJGluY2x1ZGVzUmVm
LT57IkpTJHt0eXBlfS5oIn0gPSAxOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1R5
cGVkQXJyYXlUeXBlKCR0eXBlKSkgewotICAgICAgICAkaW5jbHVkZXNSZWYtPnsiPHd0Zi8ke3R5
cGV9Lmg+In0gPSAxOworICAgICAgICAkaW5jbHVkZXNSZWYtPnsiPHJ1bnRpbWUvJHt0eXBlfS5o
PiJ9ID0gMTsKICAgICB9IGVsc2UgewogICAgICAgICAjIGRlZmF1bHQsIGluY2x1ZGUgdGhlIHNh
bWUgbmFtZWQgZmlsZQogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiJHt0eXBlfS5oIn0gPSAxOwpA
QCAtNjgzLDcgKzY4Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYgKCRoYXNQYXJl
bnQgJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2
ZU9iamVjdCJ9KSB7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlw
ZSgkaW50ZXJmYWNlTmFtZSkpIHsKLSAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPHd0Zi8k
aW50ZXJmYWNlTmFtZS5oPiJ9ID0gMTsKKyAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPHJ1
bnRpbWUvJGludGVyZmFjZU5hbWUuaD4ifSA9IDE7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAkaGVhZGVySW5jbHVkZXN7IiRpbnRlcmZhY2VOYW1lLmgifSA9IDE7CiAgICAgICAgIH0K
QEAgLTM2MTIsNyArMzYxMiw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgIyBEZWZh
dWx0LCBpbmNsdWRlIGhlYWRlciB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIGlmICgkY29kZUdlbmVy
YXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCI8d3RmLyR0eXBlLmg+IiwgJGNvbmRpdGlvbmFsKSBpZiBub3QgJGNvZGVHZW5lcmF0
b3ItPlNraXBJbmNsdWRlSGVhZGVyKCR0eXBlKTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCI8cnVudGltZS8kdHlwZS5oPiIsICRjb25kaXRpb25hbCkgaWYgbm90ICRjb2RlR2VuZXJh
dG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHR5cGUuaCIsICRjb25kaXRpb25hbCkgaWYgbm90ICRj
b2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRB
cnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9h
dDY0QXJyYXkuY3BwCmluZGV4IDgyN2I2YmFkZWI3M2JlNGJmZWZjOWIwMzE5Mzg2Y2Q0M2ZiMGUz
ODguLjAxNTJmOGJkMzU0YjBhOGQwMjQyN2FkYjRhNzdmY2FmOWVlZjA0MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2
NEFycmF5LmNwcApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiSlNGbG9hdDMyQXJyYXku
aCIKICNpbmNsdWRlICJKU0ludDMyQXJyYXkuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDY0QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lu
dDMyQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+Ci0jaW5j
bHVkZSA8d3RmL0Zsb2F0NjRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvSW50MzJBcnJheS5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJy
YXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRB
cnJheS5oCmluZGV4IDFkN2RmZDczZTMwNDI0NWJiNjZmMTFmNDUxMmZlNzdhZmQxMTdkNGEuLmYz
NDljNGQ4MjBkZWNmMjA1MzI2YWIyNTMxOTdjYzNlYWU4MzBmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5o
CkBAIC0yMyw4ICsyMyw4IEBACiAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQ2NEFycmF5Lmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDY0QXJy
YXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGRjYTZhNTkxZjQy
NjllOGQ3YTUwOGY3NGQyODRhNWQ5ZjhjYWY5YzguLjliMDZiYWE4YzE0Yzg4NWZkZjJlNTE4Y2Q4
ZWRjZDBjMTQxNjRhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC01NCw5ICs1NCw5IEBACiAjaW5jbHVkZSAi
VGVzdE9iai5oIgogI2luY2x1ZGUgImJvb2wuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
QXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0Zs
b2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogI2lmIEVOQUJMRShDb25k
aXRpb24xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IGQzODI0
NjJhYzMyMDc3MGEzYWQ1MDU0Y2MwZTlmZmI4MDg2MGRmMDMuLmE0ODE1MWY2NGJkYjFjMDMxNzFh
ODhhOWFiNzViOTA0MGE5YWE0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5jcHAKQEAgLTQ5NCw3ICs0OTQsNyBAQCBRVmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBRTWV0YVR5cAogCiAgICAg
ICAgIGNhc2UgUU1ldGFUeXBlOjpRQnl0ZUFycmF5OiB7CiAgICAgICAgICAgICBpZiAodHlwZSA9
PSBSVFVpbnQ4QXJyYXkpIHsKLSAgICAgICAgICAgICAgICBXVEY6OlVpbnQ4QXJyYXkqIGFyciA9
IHRvVWludDhBcnJheSh0b0pTKHRvSlMoY29udGV4dCksIHZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgSlNDOjpVaW50OEFycmF5KiBhcnIgPSB0b1VpbnQ4QXJyYXkodG9KUyh0b0pTKGNvbnRleHQp
LCB2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHJldCA9IFFWYXJpYW50KFFCeXRlQXJyYXkocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYXJyLT5kYXRhKCkpLCBhcnItPmxlbmd0aCgpKSk7
CiAgICAgICAgICAgICAgICAgZGlzdCA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNzI5
LDcgKzcyOSw3IEBAIEpTVmFsdWVSZWYgY29udmVydFFWYXJpYW50VG9WYWx1ZShKU0NvbnRleHRS
ZWYgY29udGV4dCwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByCiAKICAgICBpZiAodHlwZSA9PSBR
TWV0YVR5cGU6OlFCeXRlQXJyYXkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBxdEJ5dGVBcnJheSA9
IHZhcmlhbnQudmFsdWU8UUJ5dGVBcnJheT4oKTsKLSAgICAgICAgV1RGOjpSZWZQdHI8V1RGOjpV
aW50OENsYW1wZWRBcnJheT4gd3RmQnl0ZUFycmF5ID0gV1RGOjpVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlVW5pbml0aWFsaXplZChxdEJ5dGVBcnJheS5sZW5ndGgoKSk7CisgICAgICAgIFdURjo6
UmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IHd0ZkJ5dGVBcnJheSA9IEpTQzo6VWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocXRCeXRlQXJyYXkubGVuZ3RoKCkpOwog
ICAgICAgICBtZW1jcHkod3RmQnl0ZUFycmF5LT5kYXRhKCksIHF0Qnl0ZUFycmF5LmNvbnN0RGF0
YSgpLCBxdEJ5dGVBcnJheS5sZW5ndGgoKSk7CiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY29udGV4dCk7CiAgICAgICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjU5OGVmYjdmYjYwZTNkMDYzN2UyZDEyNzM2YmI5
YWJhMjExMGYxMi4uZjA0ZmJiMmQzMzg4ODA4NmI1ZGZkODgyNGM0ZTBmYWVmMmE5YWNkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggYmY4YzMzZDk2ZDM4NmE5MTU5OWUzNjBk
MWEwYTA3Y2I1MDY2NzE3Zi4uZjY5Njc3NWIzYjhkNWRjMDI2ZDNmMTIwNTBkNmIzOWE3Mjk5MDhi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuaAppbmRleCA3ZjIxMzNkZTA4YTFlMTQ3MWNiYTljM2RmZTBlNzk5NDA0
MDNlM2ExLi5jMjBmOTdhOWZiZjNkZjkzYTI1NGM1M2IwYzNlYTU5MDMxY2JjOTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEJsb2I7CkBAIC03Myw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAgICAgUGFzc1JlZlB0cjxG
aWxlRXJyb3I+IGVycm9yKCkgeyByZXR1cm4gbV9lcnJvcjsgfQogICAgIEZpbGVSZWFkZXJMb2Fk
ZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkVHlwZTsgfQotICAg
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7CisgICAg
UGFzc1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0Owog
ICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA3N2MwNWZlODEzYjc4
NzA0ZGE0M2Y5M2NhMmE5NTAyZTQyYTM1NWQ0Li4yNDQ3YzMwZWE1MTRhZmM4YWYyMjViNGVhNmVm
MDRjMjJkYTU3Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCBlYzFiZGZkYjJkNTEyOTU3YTM4M2JlNjVh
ZGYxYTVmZmE5ODY5ZDc4Li4yNGYxZTdmMWJkYTg2YTM0Nzc3MThmMTcxYWYwNzJjYmVjOWY5NTM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNDAsNiAr
NDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC03Miw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAg
ICBTdHJpbmcgc3RyaW5nUmVzdWx0KCk7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXJSZXN1bHQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNUUkVBTSkKICAgICBQYXNz
UmVmUHRyPEJsb2I+IGJsb2JSZXN1bHQoKTsKICNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNKQpAQCAt
MTA1LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgS1VSTCBtX3VybEZvclJlYWRpbmc7CiAgICAg
UmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCi0gICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBtX3Jhd0RhdGE7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmF3RGF0YTsK
ICAgICBib29sIG1faXNSYXdEYXRhQ29udmVydGVkOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nUmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcAppbmRleCA3OWU1
MjAwZWE3YWZiZGNjZTk3MjJhOGYxZmYyNjUxYzA4YjRiNTc0Li4yZDUzYWZkMWI5ZTcyMThiNTJk
MzM1MjgwOTYwMTYyZGI2NDNiMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJTeW5jLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNs
dWRlICJGaWxlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgotI2lu
Y2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgKaW5kZXggOWZlNWMzMDAzYjVkZTc4
YjMzMTJjOGIwM2ZjOGU3NzJjOTRjNDlkZC4uNTAxNDBlZmNkZDYwZDY1OTg1NDNmZmM3ZWNiYjNi
ZDc4MDZhMDE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
U3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaApAQCAt
MzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVy
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC01NCw3ICs1OCw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZpbGVSZWFkZXJTeW5jKCkgeyB9CiAKLSAgICBQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IHJlYWRBc0FycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9i
KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyByZWFkQXNCaW5hcnlTdHJpbmcoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIHJl
YWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
QmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAppbmRleCAxNjIyZTJmZTQyYjBiOTNhYjkwZDgz
ZjFkZjFhNDc0MWZlNDNjMWJmLi40YjNhMmVhN2FhZjE2Mjk3YjU1OTlkYjhmZjA3NjZiM2NiOTli
NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcApA
QCAtNDAsOCArNDAsOCBAQAogI2luY2x1ZGUgIkxpbmVFbmRpbmcuaCIKICNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlIDx3dGYv
QXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmgKaW5kZXggMzM1YmM3NjZkZWE1ZDYyYjllNzA0Njc1
YjFmYThkMDBmNTcyZTQ3Yy4uYmNjYzI3ODAyMDEyZGUzMDkyYzk1MTVjMmZhZWZlZWRmOWM0ZGJi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaApAQCAtMzQs
NiArMzQsMTEgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1
ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IE1vdmUgdGhp
cyBmaWxlIHRvIEJsb2JCdWlsZGVyLmgKQEAgLTUwLDggKzU1LDggQEAgcHVibGljOgogICAgIHZv
aWQgYXBwZW5kKEJsb2IqKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFN0cmluZyYgZW5kaW5nKTsKICNpZiBFTkFCTEUoQkxPQikKLSAgICB2b2lkIGFwcGVuZChB
cnJheUJ1ZmZlciopOwotICAgIHZvaWQgYXBwZW5kKEFycmF5QnVmZmVyVmlldyopOworICAgIHZv
aWQgYXBwZW5kKEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFwcGVuZChKU0M6OkFycmF5
QnVmZmVyVmlldyopOwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPEJsb2I+IGdldEJsb2IoY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCAzYTlhNmQ5MzJjNmY2MDI3YjNiYjI0YjQwNWVkODRiNWZlZGFhYWY2Li45
NjMyNDkzYmI1M2QxZWI3NjNhMmViY2FmNmNlMTEwZjQ4Mzc1YTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQAogI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8bGltaXRz
PgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05vbkNv
cHlpbmdTb3J0Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuaAppbmRleCA3NjE2ODcwNjNhNTVlNTQ1ZmJjZGRjNjhmYjA4OTJmNDll
NDljYTlhLi44MGIzZWIwY2RmYjZmODkwYWMyMDNkNDM2ZmI1NjhhZmE2MDI1YWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTMwLDkgKzMwLDkgQEAKICNkZWZpbmUgSW1hZ2VEYXRhX2gK
IAogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5jcHAKaW5kZXggMmY2MmRiYzQ5
MDllYjIzZTMxYzljNzU3N2Y4YzI0M2UyMjIyYjdjNy4uMDNiMjUxMmRlOTkxOTA3ODlhYjEwNzU3
ZmYyYTgwMzA2MjY0ZGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtl
eUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlFdmVudC5oIgogCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVu
dGltZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsCmluZGV4IDBmNzBhZjY0ZGExN2NmMzBkMDBm
NGRiYWFkNWYwOWI2OTVmZjY2ZjQuLjgzNjMxMzdhOGE2MWQ2NjFmYTk5ZjQ0OWFlMTBiZTA3OGFi
NjE1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVy
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwKQEAg
LTI4LDcgKzI4LDcgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgQ3VzdG9t
Q29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBsZW5ndGgpLAogICAgIEpTTm9TdGF0aWNUYWJsZXMs
Ci0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGLAorICAgIEltcGxlbWVudGF0aW9uTmFt
ZXNwYWNlPUpTQywKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBB
cnJheUJ1ZmZlciB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYnl0ZUxl
bmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVy
Vmlldy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRs
CmluZGV4IDNkNmZhZTJhNDBlOGI1Mzk5ZGExZTU3YThhNDQ2MzVhMzAyNmU0NGMuLmZjNjFhNWU4
MjdmMDg2YmRlMmQzZTljZWUyZjUzYTAzOTBmMTdmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwogICAg
IEN1c3RvbVRvSlNPYmplY3QsCiAgICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBJbXBsZW1lbnRh
dGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50
ZXJmYWNlIEFycmF5QnVmZmVyVmlldyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFycmF5QnVm
ZmVyIGJ1ZmZlcjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBieXRlT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKaW5kZXggY2FhZTBiYTI1NjhlNTBlM2Y2YjA2ZGRiMWNkNWY5ZDYy
ZTI5ZGZkMy4uODUxYzAzNGNkNzEwODBhYTRjYjQ1Y2M0M2U0NWMxZDVkZDI0MTQzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCkBAIC02MiwxMCArNjIsMTEgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgog
I2VuZGlmCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisKICNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBVU0UoQ0cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaAppbmRleCAwMGQ1NmQ4ZjE4N2Y5Zjk2
ZTdmZDBiNzQ1OGI3ZDI0ODQwYmQ1MDQyLi4wMGRkNmU0Y2EwODhkMWU4OTc1Yzc2OWVmY2RhODcx
MmExYzA0MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgRGF0YVZpZXdfaAogI2RlZmluZSBEYXRhVmlld19oCiAKLSNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXku
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbAppbmRleCBh
YzI1OGQ1NTU2MWM1YzU5YzBmZGYzZTY0MzYxOWFiMzc1MmQ2MWFlLi44MzNkMDExMWFhZWE5ODcy
NWE2MzBlOThlYTBiMGM0NDk2NWNkODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0Zsb2F0MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0
LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1mbG9hdCwKLSAgICBJ
bXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1K
U0MKIF0gaW50ZXJmYWNlIEZsb2F0MzJBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9GbG9hdDY0QXJyYXkuaWRsCmluZGV4IGRlZTQ0ZjZjNDBhYTUwMmRhNzFm
NzkxMjA4ZDYyYmRiYjViZTU0YWYuLmM5OGMwMzJjYzBiZmZjYzhlNTc4MTIzNDg3YTIxM2Y2MjYz
MGJhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJh
eS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmlkbApA
QCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0Nv
bnN0YW50cywKICAgICBUeXBlZEFycmF5PWRvdWJsZSwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVz
cGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEZs
b2F0NjRBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBC
WVRFU19QRVJfRUxFTUVOVCA9IDg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0ludDE2QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZB
cnJheS5pZGwKaW5kZXggMDU3NjQ2MGRiNjAyZGJmNDY4YjFmYzRiOWU2ZDI3YTkyNmU5MjFiNC4u
NDMzZjM2ZjcyOWRhNjJjNTNlYzY3N2VkZjk3ZTg3Mjg5NzMzNjMwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBDdXN0
b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1z
aG9ydCwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlv
bk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEludDE2QXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcg
ewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSAyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCmluZGV4IGQ4NjdlNjVkZDI5ZDAw
ZDQxZTRiYTdhYjk2ZmQ0ZDMxYTcyZTdmMGMuLjUzYTcwYjcyNjFkZDUxZjU1NmYwNWJjZmQ2MTZl
M2RjN2EzOTFjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMy
QXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRs
CkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNr
Q29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9aW50LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNw
YWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgSW50
MzJBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRF
U19QRVJfRUxFTUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0ludDhBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXku
aWRsCmluZGV4IDZjYjIwYTE0NmUzNjkyNDAxMWQ5ZDg3NGFjZmM3YTUwNmUzOWMzYjYuLjVkYjAy
YWQzMjk4OTA0YTA3NTY4NGZkMzIxMzhlYWViNDkxZmUzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvSW50OEFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNP
YmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PXNpZ25lZCBj
aGFyLAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9u
TmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgSW50OEFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsK
ICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gMTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCmluZGV4IDcwOGNkYjMwMTViNzM2
YmY5MGU4MTY1Mzc3M2YwZmMxOWY3OGRjOGYuLjgyOTJiM2I5ZDQyMmNlN2ZlZjUwY2RjMmNiY2My
ZGNiN2MxYmZmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQx
NkFycmF5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5p
ZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hl
Y2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT11bnNpZ25lZCBzaG9ydCwKLSAgICBJbXBsZW1l
bnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0g
aW50ZXJmYWNlIFVpbnQxNkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNp
Z25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gMjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvVWludDMyQXJyYXkuaWRsCmluZGV4IDY0M2MwOTJkZTNhYjE4YTk1ODZiNjc1OGU2NDQ2
Y2MzYzNhYzk4NmMuLmI1YzA1NWQ0MzEyZDkzN2QzY2I2MzM5NTE1ZTIzNzFiNWFjNTI3MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMz
LDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAg
ICAgVHlwZWRBcnJheT11bnNpZ25lZCBpbnQsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9
V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBVaW50MzJB
cnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19Q
RVJfRUxFTUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1VpbnQ4QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5p
ZGwKaW5kZXggZGFmM2Y4MDU3MzAzMGUyZjg2ZjFhNDU3NWIzMjk1ODljZTA0MTcxYi4uMjQxNmE0
N2RmNjQ4YjM3ODcyMDFlOTM4ZDZjNDkwOTBjNmZhMmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvVWludDhBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pT
T2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT11bnNpZ25l
ZCBjaGFyLAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0
aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgVWludDhBcnJheSA6IEFycmF5QnVmZmVyVmll
dyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDE7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbAppbmRl
eCBiMTdmMTM1NzJjZWI5NTBmNTU2N2JmODJjYzA3N2JlNGZlYmQwZjhmLi41YTk5OTVlODA4MzQ4
ODZlY2M0M2Q3MzA2OWU5YThkMDg2MmZhN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3Vz
dG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9
dW5zaWduZWQgY2hhciwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBs
ZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIFVpbnQ4Q2xhbXBlZEFycmF5IDog
VWludDhBcnJheSB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9
IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDA1MTI0
NTBkNzYyZGNhYTRlMTI5YmE5Yjc2MzFjZjM5ZjkyM2E2ZDAuLjk0NjViNjc0YWQ4NjgwNDllMDU0
NTNkYjg0ZTE3MWYzMjQyMmNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuaApAQCAtMzAsNiArMzAsMTEgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAK
K25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZp
ZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xCdWZmZXIgOiBwdWJs
aWMgV2ViR0xTaGFyZWRPYmplY3QgewpAQCAtMzksMTMgKzQ0LDEzIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOwogCiAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEdDM0RzaXplaXB0ciBzaXplKTsK
LSAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXIqKTsKLSAgICBib29sIGFz
c29jaWF0ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXJWaWV3Kik7Ci0gICAgYm9vbCBhc3NvY2lhdGVC
dWZmZXJTdWJEYXRhKEdDM0RpbnRwdHIgb2Zmc2V0LCBBcnJheUJ1ZmZlciopOwotICAgIGJvb2wg
YXNzb2NpYXRlQnVmZmVyU3ViRGF0YShHQzNEaW50cHRyIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3
Kik7CisgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAg
ICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBi
b29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGludHB0ciBvZmZzZXQsIEpTQzo6QXJyYXlC
dWZmZXIqKTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGludHB0ciBvZmZz
ZXQsIEpTQzo6QXJyYXlCdWZmZXJWaWV3Kik7CiAKICAgICBHQzNEc2l6ZWlwdHIgYnl0ZUxlbmd0
aCgpIGNvbnN0OwotICAgIGNvbnN0IEFycmF5QnVmZmVyKiBlbGVtZW50QXJyYXlCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IEpT
Qzo6QXJyYXlCdWZmZXIqIGVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxl
bWVudEFycmF5QnVmZmVyLmdldCgpOyB9CiAKICAgICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGlu
ZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZS4gUmV0dXJucyAtMSBpZgogICAgIC8vIG5vbmUgaGFzIGJl
ZW4gc2V0LgpAQCAtNjgsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgR0MzRGVudW0gbV90YXJn
ZXQ7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fZWxlbWVudEFycmF5QnVmZmVyOworICAg
IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX2VsZW1lbnRBcnJheUJ1ZmZlcjsKICAgICBHQzNE
c2l6ZWlwdHIgbV9ieXRlTGVuZ3RoOwogCiAgICAgLy8gT3B0aW1pemF0aW9uIGZvciBpbmRleCB2
YWxpZGF0aW9uLiBGb3IgZWFjaCB0eXBlIG9mIGluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xHZXRJbmZvLmNwcAppbmRleCBmNzE2NmM0MTkzMmRjMzQ3NmQ4YjVjMmUxMWEz
ZWM0MmU0NDI1YjFkLi44ZTI3ZDNiOWExMTIwYTc2ZjdjMzBhYzAxZTFiODA0YmQwNjYyNmYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKQEAgLTM2LDEw
ICszNiwxMCBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2Vi
R0xUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgotI2lu
Y2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgot
I2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+
CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lu
dDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAppbmRleCA3ZjliMDQyNjZhMGVhNjY3ODVi
MGJjOTFiNjBmYmE4ZTFiZjQ0NWU0Li4wODI2MTJhYzllMWM4NzI4MTBhODk2MTI4NjlhNTU1N2U3
OTVmYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldElu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaApAQCAt
MzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNsdWRl
ICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+Ci0jaW5j
bHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOGZmMDkxYmM5MmEyYjRkYmQ1NDY0
MjVkMjkzZjkxODE4NjA4NGNkOC4uZDFlMjEyMTc3YWQwNzg0M2M0M2IzMmRkNTc2MTczZjk3OTRj
ZGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCkBAIC03NCw5ICs3NCw5IEBACiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJl
LmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKIAorI2luY2x1ZGUgPHJ1bnRp
bWUvVWludDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093bkFycmF5UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaAppbmRleCA5NzIzY2E3NzZiMDg0ODlhOWRkNjQwYTM2NWI0YWNjNmNhZmVk
NDhjLi44YjVjYjY5Y2E5NjBlZmUwMzA3NWYxOWNmNjc1NjQwZmFkMDJmM2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAt
MzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViR0xHZXRJbmZv
LmgiCiAKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMy
QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA4OGYzZDYwZTE2NzZlMjMxN2NmMTM3
YWRhOWQyNDZkNmVlYWU3YmY3Li4xZGMzZTEyZWNhNDcwZmU2NGIxNTQwMjhkZGE4OGY3NmRjMDE1
NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRHQ0V2ZW50LmgiCiAj
aW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCi0j
aW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlC
dWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Q29weWluZ1NvcnQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5j
cHAKaW5kZXggYWU0MTZlZTE3NzdlZTg2MzliZmFmZTA4Y2I0NzQ2YzU3YmZmMzVjYS4uZjBlNGI1
ZGE4YmNmMjg4OWZlMTM4MmE2NzI0MWMwYzI2NDFiNjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNw
cApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJW
aWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3
dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ3J5cHRvLmgKaW5kZXggMTcyNWFmODZlYjIxYTQ4MTY0ZDcwZDhhZmUyYmFiNjFm
Y2MzMDIzMC4uODY1NTJiYzYxMDViZWNhYTZjYzI2YjVjNWM4Yzc2MjNjNDc1YTI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NyeXB0by5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKQEAgLTQyLDcgKzQ2LDcgQEAgY2xhc3MgQ3J5cHRvIDogcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8Q3J5cHRvPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q3J5cHRvPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgQ3J5cHRvKCkpOyB9CiAKLSAgICB2b2lkIGdldFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZp
ZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMoSlNDOjpBcnJh
eUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAKaW5kZXggNWEyNDhkMGE1YzczMTJlZWUxYmM3MWI0MjdmNGY4NWIwMDQ2ZGU2
OC4uNjExMDU2ZGQ3OTczNjRjN2IxNjQyMjI0YmRmNzViYmMwZWE4N2Q4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNw
cApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNETkVPTi5oIgog
I2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDg3MWQ3YzA1NTUwZTk4NTlkMGMxYWZh
NzYzNDhiMTUwNTU2NzE4YjQuLmRjOGM2NDM3YWQ4MzMyMTBhZDExZDVhMjU5ZTQwNGVhZmNkYTA4
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aApAQCAtMzksMTEgKzM5LDExIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUg
PHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCAxZTJiODhjNWVmZWE0NTY1NzhjYjgzMWEzODc0Y2JkOTRl
MWMzNjYxLi40YWY0OTE2ZWNiZmMyYmQ3NDEzYmMwODA1OTZlMjFmYjdmZWRhYWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KQEAgLTQ3LDEwICs0NywxMCBAQAogI2ltcG9ydCAiV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvVWludDE2QXJyYXkuaD4K
KyNpbXBvcnQgPHJ1bnRpbWUvVWludDMyQXJyYXkuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvVWludDhB
cnJheS5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW1wb3J0IDx3dGYvVWludDE2
QXJyYXkuaD4KLSNpbXBvcnQgPHd0Zi9VaW50MzJBcnJheS5oPgotI2ltcG9ydCA8d3RmL1VpbnQ4
QXJyYXkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWRm91bmRhdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJ1ZmZlckRhdGFCbGFja0JlcnJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyRGF0YUJs
YWNrQmVycnkuaAppbmRleCA4ZGEzMzBlOTMwMjA3NGU2M2QzYWY4NGEyNGYxM2FkNWRlNTA0MjI4
Li44YTg1YWZkYTljZmExNjk5NzBkNDA2ZWRjMTRiZGM2NGEzZWY3NTdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyRGF0
YUJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0ltYWdlQnVmZmVyRGF0YUJsYWNrQmVycnkuaApAQCAtMjQsNyArMjQsNyBAQAogCiAj
aW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3MuaD4KICNpbmNsdWRlIDxCbGFja0Jl
cnJ5UGxhdGZvcm1HdWFyZGVkUG9pbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRB
cnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCA4ZTYxZWRmZjljODZjZmNmYTQxYWI3
MzMxOGQ5Njk5M2RhYzIxOWQyLi43OTNlYjdiYzg5YTBjM2I4OGEzYWJkYzlmYjc4MTA4ZDg4MTQy
MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTI1LDEwICsyNSwxMCBAQAogICovCiAKICNpbmNsdWRl
ICJJbWFnZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJh
eS5oPgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKSAmJiAoUExBVEZPUk0oSU9TKSB8
fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzApKQogI2RlZmluZSBXVEZf
VVNFX0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAxCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBiZjUyN2Zm
NTNiNjMxNjdjMmI4NWExNWVmNDNkMjQwZTY2NzQ2ZjZhLi44MTQ1MzkwYjgxNDNmODdkNzkyMzI3
MmRjZThlNjZkZWI1YTFiMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVk
ZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1w
ZWRBcnJheS5oPgogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgKCpCbGVuZFR5cGUpKHVuc2lnbmVk
IGNoYXIgY29sb3JBLCB1bnNpZ25lZCBjaGFyIGNvbG9yQiwgdW5zaWduZWQgY2hhciBhbHBoYUEs
IHVuc2lnbmVkIGNoYXIgYWxwaGFCKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggYmRmNTU1
MmFlMTg5ODEwNDNmNTI2MmI4NGI5MjBjMjI3MWNmYzJmYS4uNGQ1MmY4ZjU3Yzc4YTY3MjJmYzRm
YTY0MWY2ZmM2ZGI2YmViNzQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCkBAIC0zMCw4ICszMCw4
IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCmluZGV4
IDIyOTQ0MjZkZWY5Y2UxNWE2NDEzNTkyMGY2NjNmMWFhNGNlZTJkMmQuLmU0OTRiMDhiZDFmMDY2
Y2YwMmQ5OTEwMjc1NmUxMDc5YzI1YmY5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVy
LmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNp
bmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAyN2U3M2FhOWNmNTc1MTBlNDMyYjQ0
ODU5N2FlNGZiOTFjNjE5M2EwLi4wNjI5MWU3OWIyN2EzODczNDQ3NGZjZDEzMTRlZmJkMWE1YWU3
YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlJlbmRl
clRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYv
VWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5k
ZXggZmFkOTJjOTVhMWY1MGU0MGNmMTUzMDc4NmNiY2VmNjU1ZDhiZDc0YS4uNzM5NjhkODhiOWY2
YzZiZmM4OGUzZWI3MjY0Nzg0YmFjYzJhODk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3Bw
CkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1
ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xh
bXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNw
cAppbmRleCBjMjJmNTBlZjkwMTA5YzI4MGFiY2RmYmE0Njc0YTg4NDhmNzc0N2NkLi5jNDMwNmMw
ZmExNGE4MjQ0M2EzOTQyZDg1YzM3YmFiMDJmZjMwY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNw
cApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4K
KyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRleCAwMjVmZjY1YWMzYTg2YzM3
MjljZDdlMDVlYzM0MTkwYmIwODdiYmE1Li44ZWI1NjQwZTI4YmM2ZWFiMmU1YmIxYWE4ZDliMmU2
NWFmYTUxNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CiAKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1l
L1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFk
b3cuY3BwCmluZGV4IGMxZWZhMmFkZWFmNjUwMmY2NjgxMDEwNjFhZjhlNTU2OWQyMzRkYzguLjA5
NzdkZDJlZjc1ZWJiNmI0NjlmOWM0ZDI0MmQwMmIwNTlkMzlkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHAKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5j
bHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlIDxy
dW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
LSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCA0NDZlMjVhMTBjNWU2MzQ3NWE1ZTQwYTQ3
NGVkZGU0YTIzYjZjODRlLi42MWJhMzAyYTRhY2VkODE3ZTk0Mzg5NjU1OGJiNTNjOGM4ZWIyYzky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJl
bmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxy
dW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBl
ZEFycmF5Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggYjQwYmIx
MzA5MGFiZjMxMjc2NDg5MTM3Njk2Nzc4NjNlYjBkZWI4ZS4uZWI3OWJiZGJjYjU0YjA1YzM4YTE5
ODQyYjA1MDc1NzQ3MDI0MDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlBvaW50TGlnaHRTb3VyY2UuaCIKICNpbmNs
dWRlICJTcG90TGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXku
aD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIC8vIENvbW1vbiBi
YXNlIGNsYXNzIGZvciBGRURpZmZ1c2VMaWdodGluZyBhbmQgRkVTcGVjdWxhckxpZ2h0aW5nCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVN
b3JwaG9sb2d5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNb3JwaG9sb2d5LmNwcAppbmRleCA5ZTcyMGY3NGFjZWI5Nzg5NzFmNDJmMWU5NTE1MzczOGQy
ZjVjZDI4Li42YjAyOGVlMzkzNzY5MjlkZGVlYjdmMzRhYzE0Mjc4MjZmZDJlNmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9n
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1v
cnBob2xvZ3kuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4
dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhD
bGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8
d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2lu
ZyBzdGQ6Om1pbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAxNzY4ODc0NmY2ZjllNDQ2MjcxYTQx
ZmNiMWUyNTExMWVhZDFjNWE1Li5jNGJkOTc5NWQ2Y2VkODMzZDRlN2ZiNjlmZTNiMWM1YWM5NzRm
ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiUmVu
ZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1
bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVk
QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXgg
NWRkMDY1ZDk4ZGE3Yzc5ZjVjOWI3YjE3OThmZDAwMTE3YjNhN2NiNS4uZjFiNDVkNjk3MTEzMmJj
OGRlZDQ0OWQxMDhlMWI1ZTRhNjBiZDQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjgsNyAr
MjgsNyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogI2lmIEhBVkUoQVJN
X05FT05fSU5UUklOU0lDUykKICNpbmNsdWRlIDxhcm1fbmVvbi5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5k
ZXggMjk2NDYxZjlmMTk3NGI4ODljMjNmZDgyMzZhZjg2N2FkNTJlY2FjZS4uY2RjN2E1MDEyZWY3
OGNmYWMxYjVlZGJkMTVhMThjOTgyODVjYjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yNywxMCAr
MjcsMTEgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAK
KyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisKICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShPUEVOQ0wpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW0KaW5kZXggMjYxM2FhYWE4NjQyZTk4NWE2YjkzNzZjYzI0NDY5NTkwNzg0NzAzMS4uYzJjNDNl
OTQ2MDE4MTcyYzNiZjY5NGNlNjM5NjZlZGFjZjQ5ODlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1h
Yy5tbQpAQCAtNDMsMTEgKzQzLDExIEBACiAjaW5jbHVkZSA8T3BlbkdML2dsLmg+CiAjaW5jbHVk
ZSAiV2ViR0xMYXllci5oIgogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3Rm
L0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1
ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNs
dWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCmluZGV4IDlkNDZhNGMzZGUwYTA4M2UxODg5MDFhYjVlMjZhMDQ0MGU3
ZWUwNDkuLjY5MDJiNjEzNWVmYjFhNWY2ZTA1OGQwMzkzZmRiM2NhYzg3NzllOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNDQsMTMgKzQ0
LDEzIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5o
PgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4K
KyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgVVNFKE9QRU5HTF9F
U18yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZDRkYzI0MDFlYjliN2Y3YjZi
ZjgyYWE3YzgwZTFjMDYxODFmMGIxOS4uZDFiNGI5Nzk3NzI3NjAxOTUxOWIzNjdmOTIxOTMxZDEx
Njg3NDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zMSw4ICszMSw4IEBA
CiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNLmNwcAppbmRleCAzZTZiZjhhMTRjYjU0OGM5MzlhMzZhYzc5MGY0NmI3MmU1NDU2OTJi
Li4yYTcwOTVkYjUxYjFkMTdiYTgwMGJjNDIxNjYyN2IwMzE5MjA2M2VhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNETS5oIgog
I2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDA5ZTdmZTU4MjUyZjkxOWI4
NjcwZGUxZDhhZmRhZTE5ZmI2NzNjZmYuLjRiYzA1OTZlNzhjZTAwMWM5NmU5NDA3YWMwNzAyOTJk
NDU1MWJhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNTgsMTAg
KzU4LDEwIEBACiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIKICNpbmNsdWRlICJt
YXJrdXAuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+Ci0j
aW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmll
dy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAxY2Q3NmJjZGQ0OTA1MmI4ODA1OGQ4YWUzZjAz
YWM1YTM2YTkzNmRhLi42YWZmZjM3ZWE2Y2I0ZDA1MTAwMWNhZmNmOWFiMmFlZDA1MmE5YTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMzUsNiArMzUsMTEgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworY2xh
c3MgQXJyYXlCdWZmZXJWaWV3OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJs
b2I7CkBAIC05MSw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChCbG9iKiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgc2VuZChET01Gb3JtRGF0YSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHNlbmQoQXJyYXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZW5kKEFycmF5
QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1
ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZp
ZXcqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogICAgIHZvaWQgc2V0UmVx
dWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG92ZXJyaWRlTWltZVR5cGUoY29uc3QgU3RyaW5n
JiBvdmVycmlkZSk7CkBAIC0xMjAsOCArMTI1LDggQEAgcHVibGljOgogICAgIFJlc3BvbnNlVHlw
ZUNvZGUgcmVzcG9uc2VUeXBlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUeXBlQ29k
ZTsgfQogICAgIAogICAgIC8vIHJlc3BvbnNlIGF0dHJpYnV0ZSBoYXMgY3VzdG9tIGdldHRlci4K
LSAgICBBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlcihFeGNlcHRpb25Db2RlJik7Ci0g
ICAgQXJyYXlCdWZmZXIqIG9wdGlvbmFsUmVzcG9uc2VBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2VBcnJheUJ1ZmZlci5nZXQoKTsgfQorICAgIEpTQzo6QXJyYXlCdWZmZXIq
IHJlc3BvbnNlQXJyYXlCdWZmZXIoRXhjZXB0aW9uQ29kZSYpOworICAgIEpTQzo6QXJyYXlCdWZm
ZXIqIG9wdGlvbmFsUmVzcG9uc2VBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2VBcnJheUJ1ZmZlci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRMYXN0U2VuZExpbmVOdW1iZXIo
dW5zaWduZWQgbGluZU51bWJlcikgeyBtX2xhc3RTZW5kTGluZU51bWJlciA9IGxpbmVOdW1iZXI7
IH0KICAgICB2b2lkIHNldExhc3RTZW5kVVJMKGNvbnN0IFN0cmluZyYgdXJsKSB7IG1fbGFzdFNl
bmRVUkwgPSB1cmw7IH0KQEAgLTIyMiw3ICsyMjcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUg
UmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAgICAgCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7Ci0gICAgbXV0YWJsZSBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1fcmVzcG9uc2VBcnJheUJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBtX3Jlc3BvbnNlQXJyYXlCdWZmZXI7CiAKICAgICBib29sIG1fZXJy
b3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208142</attachid>
            <date>2013-08-05 13:13:01 -0700</date>
            <delta_ts>2013-08-05 13:23:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119489-20130805131613.patch</filename>
            <type>text/plain</type>
            <size>273572</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTU5YjIyZjlhNTk2NTRiOWU3NDFhYTE5MmIyNjIwM2M1N2VkMzA4Li5iZDEwYmEyNjU5MDViNjU4
NmIwODMxODM3NjI0Yjc0YTc3OGU0MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQyBpbiBhZHZhbmNlIG9mIHJlLWltcGxlbWVudGF0aW9u
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEpTQ1R5cGVkQXJy
YXlTdHVicy5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Ojp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjphZGRWaWV3KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmguCisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpkYXRhKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM6OmNvcHlUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjppc05ldXRlcmVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6On5BcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZSk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpzbGljZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp+
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaC4KKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJhc2VBZGRyZXNz
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXROZXV0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojppc05ldXRlcmFibGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeVN1YlJhbmdlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojpz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6CisgICAgICAg
ICogcnVudGltZS9GbG9hdDMyQXJyYXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0Zs
b2F0MzJBcnJheS5oLgorICAgICAgICAoSlNDOjpGbG9hdDMyQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OkZsb2F0MzJBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OkZsb2F0MzJBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpGbG9hdDMyQXJyYXkpOgorICAgICAg
ICAoSlNDOjpGbG9hdDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0Zsb2F0
NjRBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmguCisg
ICAgICAgIChKU0M6OkZsb2F0NjRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFycmF5OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheSk6CisgICAgICAgIChKU0M6OkZsb2F0NjRB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSW50MTZBcnJheS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oLgorICAgICAgICAoSlNDOjpJbnQxNkFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkludDE2QXJyYXk6OkludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpJbnQxNkFycmF5OjpzdWJh
cnJheSk6CisgICAgICAgICogcnVudGltZS9JbnQzMkFycmF5Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9JbnQzMkFycmF5LmguCisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OmdldFR5
cGUpOgorICAgICAgICAoSlNDOjpJbnQzMkFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJ
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50MzJBcnJh
eTo6SW50MzJBcnJheSk6CisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OnN1YmFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL0ludDhBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYv
SW50OEFycmF5LmguCisgICAgICAgIChKU0M6OkludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAg
IChKU0M6OkludDhBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpJbnQ4QXJyYXkpOgor
ICAgICAgICAoSlNDOjpJbnQ4QXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTo6SW50ZWdyYWxU
eXBlZEFycmF5QmFzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QmFzZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6
VHlwZWRBcnJheUJhc2U6OmRhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c2V0
KToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OnNldFJhbmdlKToKKyAgICAgICAgKEpT
Qzo6VHlwZWRBcnJheUJhc2U6Onplcm9SYW5nZSk6CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlC
YXNlOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlCYXNlOjppdGVtKToKKyAgICAgICAgKEpTQzo6VHlw
ZWRBcnJheUJhc2U6OmNoZWNrSW5ib3VuZERhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5
QmFzZTo6VHlwZWRBcnJheUJhc2UpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c3ViYXJyYXlJbXBsKToKKyAgICAgICAg
KEpTQzo6VHlwZWRBcnJheUJhc2U6Om5ldXRlcik6CisgICAgICAgICogcnVudGltZS9VaW50MTZB
cnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaC4KKyAgICAg
ICAgKEpTQzo6VWludDE2QXJyYXk6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJheTo6VWludDE2QXJyYXkpOgorICAgICAgICAo
SlNDOjpVaW50MTZBcnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDMyQXJy
YXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQzMkFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6OlVpbnQzMkFycmF5KToKKyAgICAgICAgKEpT
Qzo6VWludDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL1VpbnQ4QXJyYXku
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaC4KKyAgICAgICAgKEpT
Qzo6VWludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpVaW50OEFycmF5OjpVaW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6VWludDhB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6Onpl
cm9GaWxsKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheSk6CisgICAgICAgIChK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDEzLTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29waWVkIHNwYWNlIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBtb3JlIHRoYW4gb25lIGNv
cGllZCBiYWNraW5nIHN0b3JlIHBlciBKU0NlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYmY4MzIwMzYxMWRjMzhlZjAzMWQ0
ZDAxZDAzY2NhMTM3M2VlNDBhZi4uZWRhMDIxYjc3YzE4NTc0MjAzMWY0NWUwZDhmMDA0ZjgwN2Zk
N2IyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wOC0wNSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJheSBpbXBsZW1lbnRhdGlvbiBp
bnRvIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE5NDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gZnJvbSBXVEYKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKwogMjAxMy0wOC0wMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGEgYnVuY2ggb2Yg
cmVkdW5kYW50IGNoZWNrcyBmb3IgZW1wdHkgc3RyaW5nIGluIFN0cmluZ0ltcGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlMzFmNTkxOTc4ZjRmZDgyZGYzMWFjZGY0YmE2Y2Q0NmZjMWFiNzNkLi42ZWJhZTlhMzdj
M2RjZTNkMDlkOGE2MTczNjQxZjUxMzY4OWZlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIy
IEBACisyMDEzLTA4LTA1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBUeXBlZEFycmF5IGltcGxlbWVudGF0aW9uIGludG8gSlNDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk0ODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV2ViQ29yZSBmb3IgbmV3
IGxvY2F0aW9uIG9mIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IEFkZGVkLgorICAgICAg
ICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQzMkFycmF5Lmg6IEFkZGVkLgorICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5Lmg6IEFkZGVkLgor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oOiBBZGRlZC4K
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlwZWRB
cnJheUJhc2UuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9V
aW50MTZBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1VpbnQzMkFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvVWludDhBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQW5hbHlzZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEZs
b2F0RnJlcXVlbmN5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEJ5
dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0Qnl0
ZVRpbWVEb21haW5EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjph
dWRpb0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtVGltZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0
b0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkSW5jbHVkZXNGb3JUeXBlKToKKyAgICAg
ICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoK
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJTeW5jLmg6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5j
cHA6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXJWaWV3LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0RhdGFWaWV3Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9GbG9hdDY0QXJyYXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0ludDE2QXJyYXku
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0ludDhBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWludDE2QXJy
YXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50
OENsYW1wZWRBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjplbGVtZW50QXJyYXlCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAg
ICAqIHBhZ2UvQ3J5cHRvLmNwcDoKKyAgICAgICAgKiBwYWdlL0NyeXB0by5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpvcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIpOgorCiAyMDEzLTA4LTA1
ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFhNTFRy
ZWVWaWV3ZXIgc2hvdWxkIGJlIGNyZWF0ZWQgb25seSBpbiB0aGUgWE1MIHZpZXdlciBtb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDgxMTM3YWFlZjkw
MDRmODQ4MTIyYmRkMGIwMzA2MTM3ZDg0ZGFjNGEuLmQwYmI3ZDY0YmVhNDY5MGVkMjZhZTZiOTc2
OGQzYWVjZmFmODAwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zMiw3ICszMiw3IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAKIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAotICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJU2hpbXMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaCBcCkBAIC02NDQsNiArNjQ0LDEwIEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29udmVudGlvbnMuaCBcCkBAIC03MDUsNiArNzA5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmxvYXQ2NEFycmF5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIFwKQEAgLTcyMyw2ICs3MjksMTAgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
ZXhpbmdUeXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXku
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCkBAIC04ODIsOCAr
ODkyLDEzIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHJh
Y2luZy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5RGVzY3JpcHRvci5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZBcnJheS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJhY3Rpb24uaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VaW50OENsYW1wZWRBcnJheS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTVN0YWNrQm91bmRzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNo
ZG9nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKaW5kZXggZDdhYzFlZjcy
ZWNhYzZhMmU2ZGM3MjgzYTc4MWU1YWJlNTViZjcyMS4uMzkzZTEyMWIyYmZmNzAwOGQ4N2IyMzA5
YzdkZTkzZTcxYjhmNjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5
cGVkQXJyYXlTdHVicy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5
U3R1YnMuaApAQCAtMjYsMTkgKzI2LDIwIEBACiAjaWZuZGVmIEpTQ1R5cGVkQXJyYXlTdHVic19o
CiAjZGVmaW5lIEpTQ1R5cGVkQXJyYXlTdHVic19oCiAKKyNpbmNsdWRlICJGbG9hdDMyQXJyYXku
aCIKKyNpbmNsdWRlICJGbG9hdDY0QXJyYXkuaCIKKyNpbmNsdWRlICJJbnQxNkFycmF5LmgiCisj
aW5jbHVkZSAiSW50MzJBcnJheS5oIgorI2luY2x1ZGUgIkludDhBcnJheS5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNp
bmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+CisjaW5jbHVkZSAiVWludDE2QXJyYXkuaCIKKyNp
bmNsdWRlICJVaW50MzJBcnJheS5oIgorI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRl
ICJVaW50OENsYW1wZWRBcnJheS5oIgorCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvSW50MTZBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5j
bHVkZSA8d3RmL0ludDhBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MTZBcnJheS5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+Ci0j
aW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMDFiYTA3OWQ4MDM5NTg1YTc2YmRk
ZjgxODI4Yzc3MTAxODU2MDA2Li44YTcwMmUwMzU4NWUwMTVjOTE0NjQ3ZDE2N2MzMzI4Y2UxYzA1
ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODE1LDYgKzgxNSwyMSBAQAog
CQlBN0E0QUUwRDE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1YnNNSVBTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwOTE3OTczQjREMDA1NjEy
QjEgLyogSklUU3R1YnNNSVBTLmggKi87IH07CiAJCUE3QTRBRTBGMTc5NzNCNEQwMDU2MTJCMSAv
KiBKSVRTdHVic1NINC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdBNEFFMEIxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzU0g0LmggKi87IH07CiAJ
CUE3QTRBRTEwMTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic1g4NkNvbW1vbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBNEFFMEMxNzk3M0I0RDAw
NTYxMkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggKi87IH07CisJCUE3QThBRjM0MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIu
Y3BwICovOyB9OworCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI2MTdB
REI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjM2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJh
eUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdBOEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi87
IH07CisJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI4MTdBREI1
RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxv
YXQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGMzkxN0FEQjVGMzAw
NUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThB
RjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4
QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkMxN0FEQjVGMzAwNUFCMTc0
IC8qIEludDE2QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkQxN0FEQjVG
MzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzRDE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdyYWxU
eXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdBOEFGMkUxN0FEQjVGMzAwNUFCMTc0IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4
QUYzRTE3QURCNUYzMDA1QUIxNzQgLyogVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAv
KiBUeXBlZEFycmF5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMDE3QURC
NUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjQwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENs
YW1wZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGNDExN0FE
QjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
N0E4QUY0MjE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAv
KiBVaW50MzJBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3QjQ4RjQ5MEVFODkzNkYwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4
REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJ
QTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0QUNBRTE0ODRDOUNFMDBCMzhB
MzYgLyogSlNFeHBvcnRNYWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2Rl
QmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
OUU3ODFGMTVFRUNCQTgwMDQ3Qzg1NSAvKiBVbmxpbmtlZENvZGVCbG9jay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTAzLDYgKzE5MTgsMjEg
QEAKIAkJQTdBNEFFMEMxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJzWDg2Q29tbW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QTdFRTc0MTFCOThCOEQwMDY1QTE0RiAvKiBBU1RC
dWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFTVEJ1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdBN0VFNzcxMUI5OEI4RDAwNjVBMTRGIC8q
IFN5bnRheENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ludGF4
Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNTE3QURCNUYy
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXJyYXlCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0E4QUYyNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdBOEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5
QnVmZmVyVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyOTE3QURC
NUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZsb2F0MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4
QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZsb2F0NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDMyQXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkUxN0FEQjVGMzAwNUFCMTc0IC8qIEludGVncmFsVHlw
ZWRBcnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZWdyYWxU
eXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyRjE3
QURCNUYzMDA1QUIxNzQgLyogVHlwZWRBcnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhDbGFtcGVkQXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVp
bnQxNkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQxNkFycmF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50
MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0I0OERCNTBFRTc0Q0ZD
MDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3QjQ4REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0I0QUNBRTE0ODRDOUNFMDBC
MzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFeHBvcnRNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3OTgs
NiArMjgyOCwyMSBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdBOEFGMjUxN0FE
QjVGMjAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmNwcCAqLywKKwkJCQlBN0E4QUYyNjE3QURCNUYz
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLywKKwkJCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIx
NzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKKwkJCQlBN0E4QUYyODE3QURCNUYzMDA1QUIx
NzQgLyogQXJyYXlCdWZmZXJWaWV3LmggKi8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0
IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBG
bG9hdDY0QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFy
cmF5LmggKi8sCisJCQkJQTdBOEFGMkMxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCAq
LywKKwkJCQlBN0E4QUYyRDE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oICovLAorCQkJ
CUE3QThBRjJFMTdBREI1RjMwMDVBQjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8s
CisJCQkJQTdBOEFGMkYxN0FEQjVGMzAwNUFCMTc0IC8qIFR5cGVkQXJyYXlCYXNlLmggKi8sCisJ
CQkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLywKKwkJCQlBN0E4
QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLywKKwkJCQlBN0E4
QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYzMzE3
QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCAqLywKIAkJCQk2NTUzQTMyRjE3QTFGMUVF
MDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJNjU1M0Ez
MzAxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCAqLywKIAkJ
CQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCkBAIC0zNTEzLDYg
KzM1NTgsNyBAQAogCQkJCUJDNkFBQUU1MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzNEN0FGMTY1QTE0MzAwMEFDQUI3MSAvKiBDbG9zdXJlQ2Fs
bFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5NzBFRDFEM0FFMDBGMUY2
ODEgLyogQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUY0MjE3QURCNUYzMDA1
QUIxNzQgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEY5NDQxMTY2NzYz
MzIwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2RUJC
MzE2Njc2RUY2MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3N0YxODIyMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzU5Nyw3ICszNjQzLDkgQEAKIAkJCQkwRkJDMEFFODE0OTZDN0M3MDBENEZCREQg
LyogREZHRXhpdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEE5Nzc1MTc5NzM4Qjgw
MDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QkZG
M0MwMTc5ODY4OTQwMDAyRjQ2MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc4QTk3NzcxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZpbmFsaXplci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDMTYxNTFDNUQ0RjAwQ0Q4OTEwIC8qIERGR0Zp
eHVwUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y4MTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkExN0EwQjhDQzAw
NzczQUQ4IC8qIERGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywK
QEAgLTM2NjIsNiArMzcxMCw3IEBACiAJCQkJMEYyQkRDNDkxNTIyODA5NjAwQ0Q4OTEwIC8qIERG
R1ZhcmlhYmxlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzRCMTUyMjgwOUQwMENE
ODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZC
OTIxRTE2RDAyRjQ3MDA1NUE1REIgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGRkM5NjAxNEVGOTBCRDAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3Rl
ckFsbG9jYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQjJDRTgxNzQ4MzBBMjAw
N0IzQzFCIC8qIERGR1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0MjczMTE1OEVC
RDU0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM2NzksNiAr
MzcyOCw3IEBACiAJCQkJMEZCMTA1ODYxNjc1NDgxMjAwRjhBQjZFIC8qIEV4aXRLaW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJh
bmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQjJDQzkxNzNEQTUyMDAwN0IzQzFCIC8q
IEZUTEFiYnJldmlhdGVkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNGMTdBREI1
RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwODE3
MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBpbiBIZWFkZXJzICovLApAQCAtMzczMCw2ICszNzgwLDcgQEAKIAkJCQkxNDc4Mjk3
QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkM4
RDAzMTE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMjREMzFFMzE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFw
VGltZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzg1Myw5ICszOTA0LDEyIEBACiAJCQkJMEY0Njgw
RDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
QjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzRTE3QURCNUYzMDA1QUIx
NzQgLyogVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRDI4N0IyMTVFQzlB
NTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwQTUx
NEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RTVBQjM4MTc5OUU0QjIwMEQyODMzRCAvKiBMTFZNRGlzYXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzOTEzNEZGMEE2MDBBRkFEQjUgLyogTG9jYWwuaCBp
biBIZWFkZXJzICovLApAQCAtMzkxNiw2ICszOTcwLDcgQEAKIAkJCQkxNDk3MjA5MTE0RUI4MzE1
MDBGRUIxQjcgLyogUGFzc1dlYWsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzRCMTRDMTZENDNF
MEQwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOUZDOEM0MTRFMUI2MDAwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyogVWlu
dDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTgyMDYxMTZCRkUzODMwMDI0MEQwMiAv
KiBQcmVjaXNlSnVtcFRhcmdldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2ODkxNkIwMTU1RjI4
NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTAw
RTE2RjVDRDAwQjM0NDYwIC8qIFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzk0MywxNCAr
Mzk5OCwxNyBAQAogCQkJCTBGQjdGMzlDMTVFRDhFNDYwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0b3Jh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm90
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJv
dG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUY0MDE3QURCNUYzMDA1QUIxNzQg
LyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdE
RDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDRDRD
MjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3Bh
Y2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QTBFMTZGNUNE
MDBCMzQ0NjAgLyogUmVnRXhwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTcxMkIzRjExQzdCMjI4
MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMkMyMEUx
NzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0QyMDJENjBFMTcwNzA4MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QjBFMTZGNUNEMDBCMzQ0NjAgLyogUmVnRXhw
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTQ2MjMsNiArNDY4MSw3IEBACiAJCQkJMTQ2QUFC
MzgwQjY2QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5MTlEMEMxNTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODZFM0M2MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUubW0g
aW4gU291cmNlcyAqLywKKwkJCQlBN0E4QUYzNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZm
ZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAv
KiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQ3MTA3RUMzNzYwMDQy
N0E0OCAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFD
MTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLm1tIGluIFNvdXJjZXMgKi8sCkBA
IC00NjM0LDYgKzQ2OTMsNyBAQAogCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8q
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk1QUI4MzQy
MERBNDMyMjUwMEJDODNGMyAvKiBMZWdhY3lQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBN0E4QUYzNDE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ4RjIxQjAxMDdFQzU0MTAwNDJFQzJDIC8qIExleGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRjQyNzU3MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3RTJFQTZDMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCAzNjFiMmJl
N2ExN2UwMzRlODhiYjczY2EyNDQ4ZjU3NGRlOGFlZGNlLi42OWU2NDRmZGY3ZmEzNzRkZTBhYjY3
MmU4YzA5YWQzYmM2YWYzMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtMjU5LDYg
KzI1OSw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3Bw
IFwKICAgICBwcm9maWxlci9Qcm9maWxlTm9kZS5jcHAgXAogICAgIHByb2ZpbGVyL0xlZ2FjeVBy
b2ZpbGVyLmNwcCBcCisgICAgcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgXAorICAgIHJ1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmNwcCBcCiAgICAgcnVudGltZS9BcmdMaXN0LmNwcCBcCiAgICAgcnVu
dGltZS9Bcmd1bWVudHMuY3BwIFwKICAgICBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YmViNmJlNjY1NzhmOGE0NDRlMjJmYTRjNmUxM2ExMGQ0MjBkYmMxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBA
IC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QXJyYXlCdWZmZXIuaCIKKworI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2Jvb2wgQXJyYXlCdWZmZXI6OnRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIHJl
c3VsdCwgVmVjdG9yPFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpCit7
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBrZWVwQWxpdmUodGhpcyk7CisKKyAgICBpZiAoIW1f
Y29udGVudHMubV9kYXRhKSB7CisgICAgICAgIHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBhbGxWaWV3c0FyZU5ldXRlcmFibGUgPSB0
cnVlOworICAgIGZvciAoQXJyYXlCdWZmZXJWaWV3KiBpID0gbV9maXJzdFZpZXc7IGk7IGkgPSBp
LT5tX25leHRWaWV3KSB7CisgICAgICAgIGlmICghaS0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAg
ICAgICBhbGxWaWV3c0FyZU5ldXRlcmFibGUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYWxs
Vmlld3NBcmVOZXV0ZXJhYmxlKQorICAgICAgICBtX2NvbnRlbnRzLnRyYW5zZmVyKHJlc3VsdCk7
CisgICAgZWxzZSB7CisgICAgICAgIG1fY29udGVudHMuY29weVRvKHJlc3VsdCk7CisgICAgICAg
IGlmICghcmVzdWx0Lm1fZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICB3aGlsZSAobV9maXJzdFZpZXcpIHsKKyAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBjdXJy
ZW50ID0gbV9maXJzdFZpZXc7CisgICAgICAgIHJlbW92ZVZpZXcoY3VycmVudCk7CisgICAgICAg
IGlmIChhbGxWaWV3c0FyZU5ldXRlcmFibGUgfHwgY3VycmVudC0+aXNOZXV0ZXJhYmxlKCkpCisg
ICAgICAgICAgICBjdXJyZW50LT5uZXV0ZXIoKTsKKyAgICAgICAgbmV1dGVyZWRWaWV3cy5hcHBl
bmQoY3VycmVudCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFycmF5QnVm
ZmVyOjphZGRWaWV3KEFycmF5QnVmZmVyVmlldyogdmlldykKK3sKKyAgICB2aWV3LT5tX2J1ZmZl
ciA9IHRoaXM7CisgICAgdmlldy0+bV9wcmV2VmlldyA9IDA7CisgICAgdmlldy0+bV9uZXh0Vmll
dyA9IG1fZmlyc3RWaWV3OworICAgIGlmIChtX2ZpcnN0VmlldykKKyAgICAgICAgbV9maXJzdFZp
ZXctPm1fcHJldlZpZXcgPSB2aWV3OworICAgIG1fZmlyc3RWaWV3ID0gdmlldzsKK30KKwordm9p
ZCBBcnJheUJ1ZmZlcjo6cmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCit7CisgICAg
QVNTRVJUKHRoaXMgPT0gdmlldy0+bV9idWZmZXIpOworICAgIGlmICh2aWV3LT5tX25leHRWaWV3
KQorICAgICAgICB2aWV3LT5tX25leHRWaWV3LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9wcmV2Vmll
dzsKKyAgICBpZiAodmlldy0+bV9wcmV2VmlldykKKyAgICAgICAgdmlldy0+bV9wcmV2Vmlldy0+
bV9uZXh0VmlldyA9IHZpZXctPm1fbmV4dFZpZXc7CisgICAgaWYgKG1fZmlyc3RWaWV3ID09IHZp
ZXcpCisgICAgICAgIG1fZmlyc3RWaWV3ID0gdmlldy0+bV9uZXh0VmlldzsKKyAgICB2aWV3LT5t
X3ByZXZWaWV3ID0gdmlldy0+bV9uZXh0VmlldyA9IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3YzczNGM2NzM0ODEw
OTdjODE3NmRkNjRhOGRhMGJkYjM0YzZlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0wLDAgKzEsMjU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBBcnJheUJ1ZmZlcl9oCisjZGVmaW5lIEFycmF5QnVmZmVyX2gKKworI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVmZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3Owor
CitjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
cnJheUJ1ZmZlckNvbnRlbnRzKTsKK3B1YmxpYzoKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKCkg
CisgICAgICAgIDogbV9kYXRhKDApCisgICAgICAgICwgbV9zaXplSW5CeXRlcygwKQorICAgIHsg
fQorCisgICAgaW5saW5lIH5BcnJheUJ1ZmZlckNvbnRlbnRzKCk7CisKKyAgICB2b2lkKiBkYXRh
KCkgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSB7IHJldHVy
biBtX3NpemVJbkJ5dGVzOyB9CisKK3ByaXZhdGU6CisgICAgQXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcykgCisgICAgICAgIDogbV9kYXRhKGRhdGEp
CisgICAgICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKKyAgICB7IH0KKworICAgIGZy
aWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKKworICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kg
eworICAgICAgICBaZXJvSW5pdGlhbGl6ZSwKKyAgICAgICAgRG9udEluaXRpYWxpemUKKyAgICB9
OworCisgICAgc3RhdGljIGlubGluZSB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5LCBBcnJh
eUJ1ZmZlckNvbnRlbnRzJik7CisgICAgdm9pZCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRz
JiBvdGhlcikKKyAgICB7CisgICAgICAgIEFTU0VSVCghb3RoZXIubV9kYXRhKTsKKyAgICAgICAg
b3RoZXIubV9kYXRhID0gbV9kYXRhOworICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9z
aXplSW5CeXRlczsKKyAgICAgICAgbV9kYXRhID0gMDsKKyAgICAgICAgbV9zaXplSW5CeXRlcyA9
IDA7CisgICAgfQorCisgICAgdm9pZCBjb3B5VG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIp
CisgICAgeworICAgICAgICBBU1NFUlQoIW90aGVyLm1fZGF0YSk7CisgICAgICAgIEFycmF5QnVm
ZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG1fc2l6ZUluQnl0ZXMsIHNpemVvZihjaGFyKSwgQXJy
YXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUsIG90aGVyKTsKKyAgICAgICAgaWYgKCFv
dGhlci5tX2RhdGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1lbWNweShvdGhlci5t
X2RhdGEsIG1fZGF0YSwgbV9zaXplSW5CeXRlcyk7CisgICAgICAgIG90aGVyLm1fc2l6ZUluQnl0
ZXMgPSBtX3NpemVJbkJ5dGVzOworICAgIH0KKworICAgIHZvaWQqIG1fZGF0YTsKKyAgICB1bnNp
Z25lZCBtX3NpemVJbkJ5dGVzOworfTsKKworY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxBcnJheUJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKEFycmF5QnVmZmVyKik7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJh
eUJ1ZmZlckNvbnRlbnRzJik7CisKKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworCisgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKKyAg
ICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OworICAgIGlubGluZSB1bnNpZ25lZCBi
eXRlTGVuZ3RoKCkgY29uc3Q7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
c2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gc2xpY2UoaW50IGJlZ2luKSBjb25zdDsKKworICAgIHZvaWQgYWRkVmlldyhB
cnJheUJ1ZmZlclZpZXcqKTsKKyAgICB2b2lkIHJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3Kik7
CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRl
bnRzJiwgVmVjdG9yPFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpOwor
ICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFtX2NvbnRlbnRzLm1fZGF0YTsgfQorCisg
ICAgfkFycmF5QnVmZmVyKCkgeyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xp
Y3kpOworCisgICAgaW5saW5lIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmKTsKKyAg
ICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2lu
LCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGlu
dCBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBpbnQgY2xhbXBWYWx1ZShpbnQgeCwg
aW50IGxlZnQsIGludCByaWdodCk7CisKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVu
dHM7CisgICAgQXJyYXlCdWZmZXJWaWV3KiBtX2ZpcnN0VmlldzsKK307CisKK2ludCBBcnJheUJ1
ZmZlcjo6Y2xhbXBWYWx1ZShpbnQgeCwgaW50IGxlZnQsIGludCByaWdodCkKK3sKKyAgICBBU1NF
UlQobGVmdCA8PSByaWdodCk7CisgICAgaWYgKHggPCBsZWZ0KQorICAgICAgICB4ID0gbGVmdDsK
KyAgICBpZiAocmlnaHQgPCB4KQorICAgICAgICB4ID0gcmlnaHQ7CisgICAgcmV0dXJuIHg7Cit9
CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK3sKKyAgICByZXR1cm4gY3Jl
YXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olpl
cm9Jbml0aWFsaXplKTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShBcnJheUJ1ZmZlciogb3RoZXIpCit7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpj
cmVhdGUob3RoZXItPmRhdGEoKSwgb3RoZXItPmJ5dGVMZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQoreworICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7
CisgICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJy
YXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUsIGNvbnRlbnRzKTsKKyAgICBpZiAoIWNv
bnRlbnRzLm1fZGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPSBhZG9wdFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVudHMpKTsKKyAgICBtZW1j
cHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIGJ1ZmZl
ci5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpj
cmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYgY29udGVudHMpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQoreworICAgIHJldHVybiBjcmVhdGUobnVtRWxl
bWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxp
emUpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVy
Q29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3sKKyAgICBBcnJheUJ1ZmZl
ckNvbnRlbnRzIGNvbnRlbnRzOworICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRl
KG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSwgY29udGVudHMpOworICAgIGlm
ICghY29udGVudHMubV9kYXRhKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7Cit9CisKK0FycmF5QnVmZmVyOjpBcnJheUJ1
ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBjb250ZW50cykKKyAgICA6IG1fZmlyc3RWaWV3KDAp
Cit7CisgICAgY29udGVudHMudHJhbnNmZXIobV9jb250ZW50cyk7Cit9CisKK3ZvaWQqIEFycmF5
QnVmZmVyOjpkYXRhKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cy5tX2RhdGE7Cit9CisKK2Nv
bnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250
ZW50cy5tX2RhdGE7Cit9CisKK3Vuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cy5tX3NpemVJbkJ5dGVzOworfQorCitQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBj
b25zdAoreworICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5k
ZXgoZW5kKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGlj
ZShpbnQgYmVnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJl
Z2luKSwgYnl0ZUxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorewor
ICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAg
cmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSkgKyBiZWdpbiwgc2l6ZSk7Cit9CisKK3Vuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4
KGludCBpbmRleCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxl
bmd0aCgpOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0
aCArIGluZGV4OworICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3Ro
KTsKK30KKwordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3Vs
dCkKK3sKKyAgICAvLyBEbyBub3QgYWxsb3cgMzItYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBz
aXplLgorICAgIC8vIEZJWE1FOiBXaHkgbm90PyBUaGUgdHJ5RmFzdENhbGxvYyBmdW5jdGlvbiBh
bHJlYWR5IGNoZWNrcyBpdHMgYXJndW1lbnRzLAorICAgIC8vIGFuZCB3aWxsIGZhaWwgaWYgdGhl
cmUgaXMgYW55IG92ZXJmbG93LCBzbyB3aHkgc2hvdWxkIHdlIGluY2x1ZGUgYQorICAgIC8vIHJl
ZHVkYW50IHVubmVjZXNzYXJpbHkgcmVzdHJpY3RpdmUgY2hlY2sgaGVyZT8KKyAgICBpZiAobnVt
RWxlbWVudHMpIHsKKyAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMgKiBl
bGVtZW50Qnl0ZVNpemU7CisgICAgICAgIGlmICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAhPSBl
bGVtZW50Qnl0ZVNpemUpIHsKKyAgICAgICAgICAgIHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGJvb2wgYWxsb2NhdGlvblN1Y2Nl
ZWRlZCA9IGZhbHNlOworICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCisgICAgICAg
IGFsbG9jYXRpb25TdWNjZWVkZWQgPSBXVEY6OnRyeUZhc3RDYWxsb2MobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSkuZ2V0VmFsdWUocmVzdWx0Lm1fZGF0YSk7CisgICAgZWxzZSB7CisgICAg
ICAgIEFTU0VSVChwb2xpY3kgPT0gRG9udEluaXRpYWxpemUpOworICAgICAgICBhbGxvY2F0aW9u
U3VjY2VlZGVkID0gV1RGOjp0cnlGYXN0TWFsbG9jKG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVT
aXplKS5nZXRWYWx1ZShyZXN1bHQubV9kYXRhKTsKKyAgICB9CisKKyAgICBpZiAoYWxsb2NhdGlv
blN1Y2NlZWRlZCkgeworICAgICAgICByZXN1bHQubV9zaXplSW5CeXRlcyA9IG51bUVsZW1lbnRz
ICogZWxlbWVudEJ5dGVTaXplOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC5t
X2RhdGEgPSAwOworfQorCitBcnJheUJ1ZmZlckNvbnRlbnRzOjp+QXJyYXlCdWZmZXJDb250ZW50
cygpCit7CisgICAgV1RGOjpmYXN0RnJlZShtX2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwordXNpbmcgSlNDOjpBcnJheUJ1ZmZlcjsKK3VzaW5nIEpTQzo6QXJyYXlCdWZmZXJDb250
ZW50czsKKworI2VuZGlmIC8vIEFycmF5QnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkODZhZjk4ZWQw
MmVjNDBmM2YzYzc3Njc0OTY4M2M1YzIyYjZmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJW
aWV3LmgiCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
QXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZz
ZXQpCisgICAgLCBtX2lzTmV1dGVyYWJsZSh0cnVlKQorICAgICwgbV9idWZmZXIoYnVmZmVyKQor
ICAgICwgbV9wcmV2VmlldygwKQorICAgICwgbV9uZXh0VmlldygwKQoreworICAgIG1fYmFzZUFk
ZHJlc3MgPSBtX2J1ZmZlciA/IChzdGF0aWNfY2FzdDxjaGFyKj4obV9idWZmZXItPmRhdGEoKSkg
KyBtX2J5dGVPZmZzZXQpIDogMDsKKyAgICBpZiAobV9idWZmZXIpIAorICAgICAgICBtX2J1ZmZl
ci0+YWRkVmlldyh0aGlzKTsKK30KKworQXJyYXlCdWZmZXJWaWV3Ojp+QXJyYXlCdWZmZXJWaWV3
KCkKK3sKKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyLT5yZW1vdmVWaWV3KHRo
aXMpOworfQorCit2b2lkIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKCkKK3sKKyAgICBtX2J1ZmZl
ciA9IDA7CisgICAgbV9ieXRlT2Zmc2V0ID0gMDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTFhYzNhMzE0
NzI0N2I1ODljNGUyYzU3MWJlN2M5YjRhNTU3OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTAsMCArMSwyMDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEFycmF5QnVmZmVyVmlld19oCisjZGVmaW5lIEFycmF5QnVm
ZmVyVmlld19oCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRl
ZDxBcnJheUJ1ZmZlclZpZXc+IHsKK3B1YmxpYzoKKyAgICBlbnVtIFZpZXdUeXBlIHsKKyAgICAg
ICAgVHlwZUludDgsCisgICAgICAgIFR5cGVVaW50OCwKKyAgICAgICAgVHlwZVVpbnQ4Q2xhbXBl
ZCwKKyAgICAgICAgVHlwZUludDE2LAorICAgICAgICBUeXBlVWludDE2LAorICAgICAgICBUeXBl
SW50MzIsCisgICAgICAgIFR5cGVVaW50MzIsCisgICAgICAgIFR5cGVGbG9hdDMyLAorICAgICAg
ICBUeXBlRmxvYXQ2NCwKKyAgICAgICAgVHlwZURhdGFWaWV3CisgICAgfTsKKyAgICB2aXJ0dWFs
IFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyOworICAg
IH0KKworICAgIHZvaWQqIGJhc2VBZGRyZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2Jhc2VBZGRyZXNzOworICAgIH0KKworICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCA9IDA7CisKKyAgICB2b2lkIHNldE5ldXRl
cmFibGUoYm9vbCBmbGFnKSB7IG1faXNOZXV0ZXJhYmxlID0gZmxhZzsgfQorICAgIGJvb2wgaXNO
ZXV0ZXJhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc05ldXRlcmFibGU7IH0KKworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKKworcHJvdGVjdGVkOgor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworCisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChB
cnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKworICAgIGlubGluZSBib29s
IHNldFJhbmdlSW1wbChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQpOworCisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNp
Z25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKKworICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1
bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOwor
CisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFy
cmF5QnVmZmVyIGlzCisgICAgLy8gd2l0aGluIHJhbmdlLgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMpCisg
ICAgeworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKHNpemVvZihUKSA+IDEgJiYgYnl0ZU9mZnNldCAlIHNpemVvZihUKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBidWZmZXItPmJ5
dGVMZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQg
cmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBieXRlT2Zmc2V0KSAv
IHNpemVvZihUKTsKKyAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlz
IGFycmF5J3MgdmlldzsKKyAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRl
cyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyhQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwgdW5zaWdu
ZWQgKm9mZnNldCwgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsK
KyAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKKyAgICAgICAgICAgICpvZmZzZXQg
PSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0
ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7CisgICAgICAgICpvZmZzZXQgPSBzdGQ6Om1p
bihidWZmZXItPmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7CisgICAgICAgIHVuc2lnbmVkIHJlbWFp
bmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2Yo
VCk7CisgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAq
bnVtRWxlbWVudHMpOworICAgIH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZv
aWQgbmV1dGVyKCk7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1
ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgorICAgIHZvaWQqIG1fYmFzZUFk
ZHJlc3M7CisKKyAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyAgICBib29sIG1faXNO
ZXV0ZXJhYmxlIDogMTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBBcnJheUJ1ZmZlclZpZXcq
IG1fcHJldlZpZXc7CisgICAgQXJyYXlCdWZmZXJWaWV3KiBtX25leHRWaWV3OworfTsKKworYm9v
bCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAg
ICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQor
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQp
IHsKKyAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGNoYXIqIGJhc2UgPSBzdGF0aWNfY2FzdDxj
aGFyKj4oYmFzZUFkZHJlc3MoKSk7CisgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJy
YXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0
YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFC
eXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgeworICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0
IG9yIG92ZXJmbG93CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY2hh
ciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKKyAgICBtZW1tb3Zl
KGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCit7CisgICAgaWYgKGJ5dGVPZmZzZXQg
PiBieXRlTGVuZ3RoKCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+
IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwg
Ynl0ZU9mZnNldCkgeworICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0
YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKKyAgICBtZW1zZXQoYmFzZSArIGJ5dGVP
ZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
QXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQg
ZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5n
dGgpCit7CisgICAgaWYgKHN0YXJ0IDwgMCkKKyAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwor
ICAgIGlmIChzdGFydCA8IDApCisgICAgICAgIHN0YXJ0ID0gMDsKKyAgICBpZiAoZW5kIDwgMCkK
KyAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5k
ID0gMDsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCisg
ICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKKyAgICBpZiAoZW5kIDwgc3RhcnQpCisgICAgICAgIGVu
ZCA9IHN0YXJ0OworICAgICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwor
ICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CisKKyNlbmRp
ZiAvLyBBcnJheUJ1ZmZlclZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmxvYXQzMkFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
bG9hdDMyQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzUyNTc0MTdjYTI3NTJlNjYyODg5MzhmYmY2OTdl
NzMzYjhlZDRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRmxvYXQzMkFycmF5LmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRmxv
YXQzMkFycmF5X2gKKyNkZWZpbmUgRmxvYXQzMkFycmF5X2gKKworI2luY2x1ZGUgIlR5cGVkQXJy
YXlCYXNlLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEZsb2F0MzJBcnJheSA6IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxmbG9hdD4gewor
cHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMy
QXJyYXk+IGNyZWF0ZShjb25zdCBmbG9hdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisg
ICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJy
YXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRp
cmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6c2V0OworCisg
ICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAg
IGlmIChpbmRleCA+PSBUeXBlZEFycmF5QmFzZTxmbG9hdD46Om1fbGVuZ3RoKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmRhdGEoKVtpbmRleF0g
PSBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpOworICAgIH0KKworICAgIGlubGluZSBQYXNzUmVm
UHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUg
UGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFR5cGVGbG9hdDMyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgRmxv
YXQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBl
cmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxmbG9hdD47Cit9OworCitQ
YXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMy
QXJyYXk+KGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJy
YXk6OmNyZWF0ZShjb25zdCBmbG9hdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGU8RmxvYXQzMkFycmF5PihhcnJheSwg
bGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3Jl
YXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNy
ZWF0ZTxGbG9hdDMyQXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFz
c1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3Jl
YXRlVW5pbml0aWFsaXplZDxGbG9hdDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK0Zsb2F0MzJBcnJh
eTo6RmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogVHlwZWRBcnJheUJhc2U8ZmxvYXQ+
KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPEZsb2F0MzJB
cnJheT4gRmxvYXQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQzMkFy
cmF5PiBGbG9hdDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEZsb2F0MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkZsb2F0MzJBcnJheTsKKworI2VuZGlm
IC8vIEZsb2F0MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zsb2F0
NjRBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3N2VkYmQzYjhlNTljNTI4MTgzNzQxMTlmOGE5ZDk3YzIy
NzFhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
bG9hdDY0QXJyYXkuaApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZsb2F0NjRB
cnJheV9oCisjZGVmaW5lIEZsb2F0NjRBcnJheV9oCisKKyNpbmNsdWRlICJUeXBlZEFycmF5QmFz
ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBGbG9hdDY0QXJyYXkgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8ZG91YmxlPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJh
eT4gY3JlYXRlKGNvbnN0IGRvdWJsZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAg
Ly8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkg
d2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVj
dGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKTsKKworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OnNldDsKKworICAg
IHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6bV9sZW5ndGgpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmRhdGEoKVtpbmRleF0g
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKTsKKyAgICB9CisKKyAgICBpbmxpbmUgUGFzc1Jl
ZlB0cjxGbG9hdDY0QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5l
IFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNv
bnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBUeXBlRmxvYXQ2NDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIEZs
b2F0NjRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICAKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUg
dG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8ZG91YmxlPjsK
K307CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZSh1bnNp
Z25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0
ZTxGbG9hdDY0QXJyYXk+KGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBG
bG9hdDY0QXJyYXk6OmNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJy
YXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2
NEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PGRvdWJsZT46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8RmxvYXQ2NEFycmF5PihsZW5ndGgpOworfQor
CitGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFR5cGVkQXJy
YXlCYXNlPGRvdWJsZT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NS
ZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1Jl
ZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheUltcGw8RmxvYXQ2NEFycmF5PihzdGFy
dCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6RmxvYXQ2NEFy
cmF5OworCisjZW5kaWYgLy8gRmxvYXQ2NEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludDE2QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDY2YWU0ZGE3ZTIzMmI1NjdmOWEyNGVm
M2Y5YmM4ZjFmYmEzMDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50MTZBcnJheS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBJbnQxNkFycmF5X2gKKyNkZWZpbmUgSW50MTZBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZl
cjsKKworY2xhc3MgSW50MTZBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGlu
dDE2X3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJh
eT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEludDE2QXJyYXk+IGNyZWF0ZShjb25zdCBpbnQxNl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRp
cmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1
bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6c2V0
OworICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OnNldDsKKworICAg
IGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7
CisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBp
bnQgZW5kKSBjb25zdDsKKworICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gVHlwZUludDE2OworICAgIH0KKworcHJpdmF0ZToKKyAgICBp
bmxpbmUgSW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJs
ZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQxNl90
PjsKK307CisKK1Bhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlKHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0
ZTxJbnQxNkFycmF5PihsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2
QXJyYXk6OmNyZWF0ZShjb25zdCBpbnQxNl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6Y3JlYXRlPEludDE2QXJyYXk+KGFy
cmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNy
ZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46
OmNyZWF0ZTxJbnQxNkFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bh
c3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+OjpjcmVh
dGVVbmluaXRpYWxpemVkPEludDE2QXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDE2QXJyYXk6Oklu
dDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2
X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPEludDE2
QXJyYXk+IEludDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1
cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxJbnQxNkFycmF5
PiBJbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHN1YmFycmF5SW1wbDxJbnQxNkFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6SW50MTZBcnJheTsKKworI2VuZGlmIC8vIEludDE2
QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJB
cnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmNjU5Mjc4ODI2YjNmMjZiMzExOTRkMDIyYThlOGM2YTI2YzU3NTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQzMkFycmF5LmgKQEAg
LTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSW50MzJBcnJheV9oCisjZGVmaW5lIElu
dDMyQXJyYXlfaAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSW50MzJBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlPGludD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQz
MkFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlKGNvbnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50
aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVz
dWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0Owor
ICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0OworCisgICAgaW5saW5l
IFBhc3NSZWZQdHI8SW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBp
bmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBUeXBlSW50MzI7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBJ
bnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBl
cmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQ+OworfTsKKworUGFz
c1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQor
eworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4obGVu
Z3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoY29u
c3QgaW50KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NS
ZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4oYnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDMyQXJyYXk+KGxlbmd0
aCk7Cit9CisKK0ludDMyQXJyYXk6OkludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBJbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlPGludD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9
CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQ
YXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50
IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDMyQXJyYXk+KHN0YXJ0
LCBlbmQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpJbnQzMkFycmF5
OworCisjZW5kaWYgLy8gSW50MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZjIyODY2NjU5NDZiM2QzOThjOTkyYWU4NTgwYmM1
N2NiNGNlYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnQ4QXJyYXkuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQ4QXJy
YXlfaAorI2RlZmluZSBJbnQ4QXJyYXlfaAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5
QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNz
IEludDhBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDhfdD4geworcHVi
bGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZSh1bnNp
Z25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNy
ZWF0ZShjb25zdCBpbnQ4X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3Vs
ZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUg
ZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBK
YXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisK
KyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJ
bnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQ
dHI8SW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAg
dmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBU
eXBlSW50ODsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIEludDhBcnJheShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
KworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZy
aWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+OworfTsKKworUGFzc1JlZlB0cjxJbnQ4
QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4g
VHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRlPEludDhBcnJheT4obGVuZ3RoKTsKK30KKwor
UGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKGNvbnN0IGludDhfdCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90
Pjo6Y3JlYXRlPEludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50
OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRlPEludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJbnQ4QXJyYXk+KGxlbmd0aCk7Cit9CisK
K0ludDhBcnJheTo6SW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZTxpbnQ4X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNz
UmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8
SW50OEFycmF5PiBJbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDhBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkludDhBcnJheTsKKworI2VuZGlmIC8v
IEludDhBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTljOTg5ZWM3ZjIzMDdkODc4ZmEx
MmViNWJlMGNkNDk2OWUxZmIxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZV9oCisKKyNpbmNsdWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2luY2x1
ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCisvLyBCYXNlIGNsYXNz
IGZvciBhbGwgV2ViR0w8VD5BcnJheSB0eXBlcyBob2xkaW5nIGludGVncmFsCisvLyAobm9uLWZs
b2F0aW5nLXBvaW50KSB2YWx1ZXMuCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIEludGVncmFsVHlwZWRBcnJheUJhc2UgOiBwdWJsaWMgVHlwZWRBcnJh
eUJhc2U8VD4geworcHVibGljOgorICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUg
dmFsdWUpCisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8VD46Om1f
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1
ZSkpIC8vIENsYW1wIE5hTiB0byAwCisgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgIC8v
IFRoZSBkb3VibGUgY2FzdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHdyYXBwaW5n
CisgICAgICAgIC8vIGZvciBvdXQtb2YtcmFuZ2UgdmFsdWVzIHdpdGggSW50MzJBcnJheSBhbmQg
VWludDMyQXJyYXkuCisgICAgICAgIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdID0g
c3RhdGljX2Nhc3Q8VD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKKyAgICB9CisKK3By
b3RlY3RlZDoKKyAgICBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgICAg
ICA6IFR5cGVkQXJyYXlCYXNlPFQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQorICAgIHsK
KyAgICB9CisKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSW50ZWdyYWxU
eXBlZEFycmF5QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRB
cnJheUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmU3YTZjMWE1NjY5NTc4ZWUxZDVhNjA2Y2NkZDhkNjQw
ZGMxMTg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZWRBcnJheUJhc2UuaApAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVHlw
ZWRBcnJheUJhc2VfaAorI2RlZmluZSBUeXBlZEFycmF5QmFzZV9oCisKKyNpbmNsdWRlICJBcnJh
eUJ1ZmZlci5oIgorI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorCituYW1lc3BhY2UgSlND
IHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1Ymxp
YyBBcnJheUJ1ZmZlclZpZXcgeworcHVibGljOgorICAgIFQqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxUKj4oYmFzZUFkZHJlc3MoKSk7IH0KKworICAgIGJvb2wgc2V0KFR5cGVk
QXJyYXlCYXNlPFQ+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNldEltcGwoYXJyYXksIG9mZnNldCAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgYm9v
bCBzZXRSYW5nZShjb25zdCBUKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdW5zaWduZWQgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNldFJhbmdlSW1wbChyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwgZGF0YUxlbmd0aCAqIHNpemVvZihUKSwgb2Zmc2V0ICogc2l6
ZW9mKFQpKTsKKyAgICB9CisKKyAgICBib29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQg
KiBzaXplb2YoVCksIGxlbmd0aCAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgLy8gT3ZlcnJp
ZGRlbiBmcm9tIEFycmF5QnVmZmVyVmlldy4gVGhpcyBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIG9m
CisgICAgLy8gcnVsZXMgYWJvdXQgaW5oZXJpdGFuY2Ugb2YgbWVtYmVycyBpbiB0ZW1wbGF0ZSBj
bGFzc2VzLCBhbmQKKyAgICAvLyBiZWNhdXNlIGl0IGlzIGFjY2Vzc2VkIHZpYSBwb2ludGVycyB0
byBzdWJjbGFzc2VzLgorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9sZW5ndGg7CisgICAgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBieXRlTGVu
Z3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xlbmd0aCAqIHNpemVvZihUKTsK
KyAgICB9CisKKyAgICAvLyBJbnZva2VkIGJ5IHRoZSBpbmRleGVkIGdldHRlci4gRG9lcyBub3Qg
cGVyZm9ybSByYW5nZSBjaGVja3M7IGNhbGxlcgorICAgIC8vIGlzIHJlc3BvbnNpYmxlIGZvciBk
b2luZyBzbyBhbmQgcmV0dXJuaW5nIHVuZGVmaW5lZCBhcyBuZWNlc3NhcnkuCisgICAgVCBpdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaW5kZXggPCBUeXBlZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpOworICAg
ICAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8VD46OmRhdGEoKVtpbmRleF07CisgICAgfQorCisg
ICAgYm9vbCBjaGVja0luYm91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgcG9zKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbV9sZW5ndGgKKyAgICAgICAg
ICAgICYmIG9mZnNldCArIHBvcyA8PSBtX2xlbmd0aAorICAgICAgICAgICAgLy8gY2hlY2sgb3Zl
cmZsb3cKKyAgICAgICAgICAgICYmIG9mZnNldCArIHBvcyA+PSBvZmZzZXQpOworICAgIH0KKwor
cHJvdGVjdGVkOgorICAgIFR5cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IEFy
cmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQpCisgICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAg
eworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUobGVuZ3RoLCBzaXplb2YoVCkpOworICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIs
IDAsIGxlbmd0aCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoY29uc3QgVCogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxTdWJjbGFzcz4gYSA9IGNyZWF0ZTxT
dWJjbGFzcz4obGVuZ3RoKTsKKyAgICAgICAgaWYgKGEpCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgYS0+c2V0KGksIGFy
cmF5W2ldKTsKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNz
IFN1YmNsYXNzPgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgeworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZihidWZmZXIpOwor
ICAgICAgICBpZiAoIXZlcmlmeVN1YlJhbmdlPFQ+KGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSkK
KyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Vi
Y2xhc3MoYnVmLCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgU3ViY2xhc3M+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgs
IHNpemVvZihUKSk7CisgICAgICAgIGlmICghYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3Ro
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgUGFzc1JlZlB0
cjxTdWJjbGFzcz4gc3ViYXJyYXlJbXBsKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKKyAgICB7
CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOworICAgICAgICBjYWxjdWxhdGVPZmZz
ZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgbV9sZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOworICAg
ICAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQs
ICZvZmZzZXQsICZsZW5ndGgpOworICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZm
ZXIoKSwgb2Zmc2V0LCBsZW5ndGgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIo
KQorICAgIHsKKyAgICAgICAgQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKTsKKyAgICAgICAgbV9s
ZW5ndGggPSAwOworICAgIH0KKworICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNj
ZXNzIHRoaXMgdmlhIGEgdmlydHVhbCBmdW5jdGlvbiBpbiBzdWJjbGFzc2VzLAorICAgIC8vIHdo
aWNoIGlzIHdoeSBpdCBpcyBwcm90ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZS4KKyAgICB1bnNp
Z25lZCBtX2xlbmd0aDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlR5
cGVkQXJyYXlCYXNlOworCisjZW5kaWYgLy8gVHlwZWRBcnJheUJhc2VfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDE2QXJyYXkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYyZmFiMWIyN2I4
NjJhOWEwOGQ5MTkxYzhiNDI4MzQ1NGNiZGRlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgVWludDE2QXJyYXlfaAorI2RlZmluZSBVaW50MTZBcnJheV9oCisKKyNp
bmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBBcnJheUJ1ZmZlcjsKKworY2xhc3MgVWludDE2QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxU
eXBlZEFycmF5QmFzZTx1aW50MTZfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBjcmVhdGUoY29uc3QgdWludDE2X3QqIGFy
cmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50
MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVu
IGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8g
bm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBm
aWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4g
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRB
cnJheUJhc2U8dWludDE2X3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTx1aW50MTZfdD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBz
dWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFy
cmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBW
aWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDE2
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
Ly8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNs
YXNzIFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDE2QXJy
YXk+IFVpbnQxNkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTx1aW50MTZfdD46OmNyZWF0ZTxVaW50MTZBcnJheT4obGVuZ3RoKTsKK30K
KworUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZShjb25zdCB1aW50
MTZfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8dWludDE2X3Q+OjpjcmVhdGU8VWludDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46OmNyZWF0ZTxVaW50MTZBcnJh
eT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFy
cmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90Pjo6Y3JlYXRlVW5pbml0aWFsaXpl
ZDxVaW50MTZBcnJheT4obGVuZ3RoKTsKK30KKworVWludDE2QXJyYXk6OlVpbnQxNkFycmF5KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD4oYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVp
bnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFy
cmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQx
NkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHN1YmFycmF5SW1wbDxVaW50MTZBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCit1c2luZyBKU0M6OlVpbnQxNkFycmF5OworCisjZW5kaWYgLy8gVWludDE2QXJy
YXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJy
YXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWViMDFlMDFhMWNhZDRlYmRlNDk5ZGExMzJmMzk3MGE1OTEyODNlYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKQEAg
LTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVWludDMyQXJyYXlfaAorI2RlZmluZSBV
aW50MzJBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xhc3MgVWludDMyQXJyYXkg
OiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJfdD4geworcHVibGljOgorICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUo
Y29uc3QgdWludDMyX3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBm
aWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEph
dmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwor
CisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50
ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVm
UHRyPFVpbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0
OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBUeXBlVWludDMyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgVWludDMy
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xh
c3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90PjsKK307CisKK1Bh
c3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJB
cnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6
OmNyZWF0ZShjb25zdCB1aW50MzJfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+OjpjcmVhdGU8VWludDMyQXJyYXk+KGFycmF5
LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3Jl
YXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46
OmNyZWF0ZTxVaW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6
Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MzJBcnJheT4obGVuZ3RoKTsKK30KKworVWludDMyQXJy
YXk6OlVpbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTx1aW50MzJfdD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQ
dHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8
VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50MzJBcnJheT4oc3RhcnQsIGVuZCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlVpbnQzMkFycmF5OworCisj
ZW5kaWYgLy8gVWludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVWludDhBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWlu
dDhBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NWY5ZTE3MDUzOGRjMGMyNmFmODE1NGU2OWRkZTBhZjZi
MDJiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9V
aW50OEFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVWludDhBcnJh
eV9oCisjZGVmaW5lIFVpbnQ4QXJyYXlfaAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5
QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNz
IFVpbnQ4QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50OF90PiB7Citw
dWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5
PiBjcmVhdGUoY29uc3QgdWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8v
IFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdp
bGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3Rs
eSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dWludDhfdD46OnNldDsKKyAgICB1c2lu
ZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFR5cGVVaW50ODsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBpbmxpbmUgVWlu
dDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJj
bGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dWludDhfdD47Cit9OworCitQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJh
eT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVh
dGUoY29uc3QgdWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4g
VHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZTxVaW50OEFycmF5PihhcnJheSwgbGVuZ3Ro
KTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWlu
dDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVp
bnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFs
aXplZDxVaW50OEFycmF5PihsZW5ndGgpOworfQorCitVaW50OEFycmF5OjpVaW50OEFycmF5KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+KGJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJy
YXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3Rh
cnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5
SW1wbDxVaW50OEFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
K3VzaW5nIEpTQzo6VWludDhBcnJheTsKKworI2VuZGlmIC8vIFVpbnQ4QXJyYXlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmZmZmFlNzQ3Y2FlZThhZTNiMGQ1ZTE0MTEwYWUxMThjOGQ5ZmQyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5
LmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVWludDhD
bGFtcGVkQXJyYXlfaAorI2RlZmluZSBVaW50OENsYW1wZWRBcnJheV9oCisKKyNpbmNsdWRlICJV
aW50OEFycmF5LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFVpbnQ4Q2xhbXBlZEFycmF5IDogcHVibGljIFVpbnQ4QXJyYXkgeworcHVi
bGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBjcmVhdGUoY29uc3QgdWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVh
dGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCk7CisKKyAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24g
dGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRo
ZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3Qu
CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBJdCdzIG9ubHkgbmVlZGVk
IHRvIHBvdGVudGlhbGx5IGNhbGwgdGhpcyBtZXRob2QgaWYgdGhlIGFycmF5CisgICAgLy8gd2Fz
IGNyZWF0ZWQgdW5pbml0aWFsaXplZCAtLSB0aGUgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBwYXRo
cworICAgIC8vIHplcm8gdGhlIGFsbG9jYXRlZCBtZW1vcnkuCisgICAgaW5saW5lIHZvaWQgemVy
b0ZpbGwoKTsKKworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpzZXQ7CisgICAg
aW5saW5lIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpOworCisgICAgaW5s
aW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29u
c3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7CisgICAgfQor
Citwcml2YXRlOgorICAgIGlubGluZSBVaW50OENsYW1wZWRBcnJheShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAvLyBN
YWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3Mg
VHlwZWRBcnJheUJhc2U8dWludDhfdD47Cit9OworCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4o
bGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZShjb25zdCB1aW50OF90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFy
cmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4oYnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBV
aW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVk
PFVpbnQ4Q2xhbXBlZEFycmF5PihsZW5ndGgpOworfQorCit2b2lkIFVpbnQ4Q2xhbXBlZEFycmF5
Ojp6ZXJvRmlsbCgpCit7CisgICAgemVyb1JhbmdlKDAsIGxlbmd0aCgpKTsKK30KKwordm9pZCBV
aW50OENsYW1wZWRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCit7Cisg
ICAgaWYgKGluZGV4ID49IG1fbGVuZ3RoKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHN0ZDo6
aXNuYW4odmFsdWUpIHx8IHZhbHVlIDwgMCkKKyAgICAgICAgdmFsdWUgPSAwOworICAgIGVsc2Ug
aWYgKHZhbHVlID4gMjU1KQorICAgICAgICB2YWx1ZSA9IDI1NTsKKyAgICBkYXRhKClbaW5kZXhd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4obHJpbnQodmFsdWUpKTsKK30KKworVWludDhDbGFtcGVk
QXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorOiBVaW50OEFycmF5KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBVaW50OENsYW1wZWRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAg
IHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDhDbGFtcGVkQXJyYXk+
KHN0YXJ0LCBlbmQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpVaW50
OENsYW1wZWRBcnJheTsKKworI2VuZGlmIC8vIFVpbnQ4Q2xhbXBlZEFycmF5X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IGU0ODQzYjE5YzJlOGYzOWQ3MDYyZTY3Mzg0MmM3ZTVi
ODMwZWRhYTQuLmUyMjdlMjRmOWFlY2Y0YzBjYzgyZDY5YWQ1MzVhNzdkMjU2YWRiYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNjksOCArNjksMTMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwog
ICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBGbG9hdDMyQXJyYXk7CisgICAgY2xhc3Mg
RmxvYXQ2NEFycmF5OwogICAgIGNsYXNzIEhhbmRsZVN0YWNrOwogICAgIGNsYXNzIElkZW50aWZp
ZXJUYWJsZTsKKyAgICBjbGFzcyBJbnQ4QXJyYXk7CisgICAgY2xhc3MgSW50MTZBcnJheTsKKyAg
ICBjbGFzcyBJbnQzMkFycmF5OwogICAgIGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwpAQCAtODgsNiArOTMsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIGNsYXNzIFJlZ0V4
cDsKICNlbmRpZgorICAgIGNsYXNzIFVpbnQ4QXJyYXk7CisgICAgY2xhc3MgVWludDhDbGFtcGVk
QXJyYXk7CisgICAgY2xhc3MgVWludDE2QXJyYXk7CisgICAgY2xhc3MgVWludDMyQXJyYXk7CiAg
ICAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJs
b2NrOwogICAgIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDY3NDljNmFjMDZkYmUxZThjODlkOWM3NThjODZmN2Q0Yjg0ZWU2NDQuLmY2
YTM4MGJmYTNmZmE5ZDViZTkyNzU5OTY2NjViNDU5ODgyYTc3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTQsMTAgKzQsNiBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93
dGYvQVNDSUlDVHlwZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9BVkxUcmVlLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL0FsaWdubWVudC5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZl
ci5jcHAgXAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmggXAotICAgIFNvdXJjZS9X
VEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAgXAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVm
ZmVyVmlldy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBcCiAgICAgU291
cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmNw
cCBcCkBAIC01Niw4ICs1Miw2IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0
Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJl
YW0uaCBcCiAgICAgU291cmNlL1dURi93dGYvRml4ZWRBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RG
L3d0Zi9GbG9hdDMyQXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5Lmgg
XAogICAgIFNvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBcCiAgICAgU291cmNlL1dURi93dGYvRnVu
Y3Rpb25EaXNwYXRjaGVyLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRj
aGVyLmggXApAQCAtNzYsMTAgKzcwLDYgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9X
VEYvd3RmL0hleE51bWJlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCBcCiAg
ICAgU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0ludDE2
QXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93dGYvSW50MzJBcnJheS5oIFwKLSAgICBTb3VyY2Uv
V1RGL3d0Zi9JbnQ4QXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9MaXN0RHVtcC5oIFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9MaXN0SGFzaFNldC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9MTFZNSGVhZGVycy5o
IFwKQEAgLTE4OSwxMSArMTc5LDYgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYv
d3RmL1RyaVN0YXRlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1R5cGVUcmFpdHMuY3BwIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9UeXBlVHJhaXRzLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1R5cGVk
QXJyYXlCYXNlLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmggXAotICAgIFNv
dXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJy
YXkuaCBcCi0gICAgU291cmNlL1dURi93dGYvVWludDhDbGFtcGVkQXJyYXkuaCBcCiAgICAgU291
cmNlL1dURi93dGYvVW5pb25GaW5kLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1VuaVN0ZEV4dHJh
cy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9WTVRhZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dURi5wcm8KaW5kZXggMTZhOWM4YmM2NjhlZDExNDA0
NzE2ZmEzZDhmNTRjOTgyN2VjOWU3Mi4uNGEwYTY4MjI4NmViNTQ5NjI5OTI0MzE4MzI3MDQxNWM1
MDM3NjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYucHJvCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnBybwpAQCAtMjEsOCArMjEsNiBAQCB3aW5jZSogewogCiBIRUFERVJTICs9IFwKICAgICBB
bGlnbm1lbnQuaCBcCi0gICAgQXJyYXlCdWZmZXIuaCBcCi0gICAgQXJyYXlCdWZmZXJWaWV3Lmgg
XAogICAgIEFTQ0lJQ1R5cGUuaCBcCiAgICAgQXNzZXJ0aW9ucy5oIFwKICAgICBBdG9taWNzLmgg
XApAQCAtNjQsOCArNjIsNiBAQCBIRUFERVJTICs9IFwKICAgICBGZWF0dXJlRGVmaW5lcy5oIFwK
ICAgICBGaWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgRml4ZWRBcnJheS5oIFwKLSAgICBGbG9hdDMy
QXJyYXkuaCBcCi0gICAgRmxvYXQ2NEFycmF5LmggXAogICAgIEZvcndhcmQuaCBcCiAgICAgRnVu
Y3Rpb25EaXNwYXRjaGVyLmggXAogICAgIEZ1bmN0aW9uYWwuaCBcCkBAIC03OSw5ICs3NSw2IEBA
IEhFQURFUlMgKz0gXAogICAgIEhhc2hUYWJsZS5oIFwKICAgICBIYXNoVHJhaXRzLmggXAogICAg
IEhleE51bWJlci5oIFwKLSAgICBJbnQxNkFycmF5LmggXAotICAgIEludDMyQXJyYXkuaCBcCi0g
ICAgSW50OEFycmF5LmggXAogICAgIExpc3RIYXNoU2V0LmggXAogICAgIExvY2tlci5oIFwKICAg
ICBNYWluVGhyZWFkLmggXApAQCAtMTYzLDEwICsxNTYsNiBAQCBIRUFERVJTICs9IFwKICAgICBU
aHJlYWRTYWZlUmVmQ291bnRlZC5oIFwKICAgICBUaHJlYWRTcGVjaWZpYy5oIFwKICAgICBUeXBl
VHJhaXRzLmggXAotICAgIFVpbnQxNkFycmF5LmggXAotICAgIFVpbnQzMkFycmF5LmggXAotICAg
IFVpbnQ4QXJyYXkuaCBcCi0gICAgVWludDhDbGFtcGVkQXJyYXkuaCBcCiAgICAgdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oIFwKICAgICB1bmljb2RlL0NvbGxhdG9yLmggXAogICAgIHVuaWNvZGUv
aWN1L1VuaWNvZGVJY3UuaCBcCkBAIC0xODQsOCArMTczLDYgQEAgSEVBREVSUyArPSBcCiB1bml4
OiBIRUFERVJTICs9IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaAogCiBTT1VSQ0VTICs9
IFwKLSAgICBBcnJheUJ1ZmZlci5jcHAgXAotICAgIEFycmF5QnVmZmVyVmlldy5jcHAgXAogICAg
IEFzc2VydGlvbnMuY3BwIFwKICAgICBBdG9taWNzLmNwcCBcCiAgICAgQml0VmVjdG9yLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMmFmNjhmNWQw
Zjg1NDNhMTAyY2U4Mzk1YzhmNzA4M2NkODczY2Q4Li43NDkxZmZhMWZjOTg0NTE3OWRlODRlMTY4
OTVjZTgxMzg1MTg0YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTY3LDEwICs2Nyw2IEBACiAJCUE3NDg3NDU0MTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJp
bmdIYXNoRHVtcENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3NDg3NDUxMTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRl
eHQuaCAqLzsgfTsKIAkJQTg3NkRCRDgxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODc2REJENzE1MTgx
NkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLzsgfTsKIAkJQThBNDczN0YxNTFBODI1QjAwNDEy
M0ZGIC8qIEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8qIEFsaWdubWVudC5oICovOyB9Owot
CQlBOEE0NzM4MTE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTYxNTFBODI1QTAwNDEy
M0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLzsgfTsKLQkJQThBNDczODIxNTFBODI1QjAwNDEyM0ZG
IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEE0NzI1NzE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuaCAqLzsgfTsK
LQkJQThBNDczODMxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1ODE1MUE4MjVB
MDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLzsgfTsKLQkJQThBNDczODQxNTFBODI1
QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTkxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVm
ZmVyVmlldy5oICovOyB9OwogCQlBOEE0NzM4NTE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlDVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcy
NUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCAqLzsgfTsKIAkJQThBNDczODYxNTFB
ODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNUIxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlv
bnMuY3BwICovOyB9OwogCQlBOEE0NzM4NzE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNUMx
NTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLzsgfTsKQEAgLTEyOCw4ICsxMjQsNiBA
QAogCQlBOEE0NzNDMzE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBMTE1MUE4MjVBMDA0
MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi87IH07CiAJCUE4QTQ3M0M0MTUxQTgyNUIwMDQxMjNG
RiAvKiBGYXN0TWFsbG9jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovOyB9Owog
CQlBOEE0NzNDNTE1MUE4MjVCMDA0MTIzRkYgLyogRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTMxNTFBODI1QTAwNDEyM0ZG
IC8qIEZpeGVkQXJyYXkuaCAqLzsgfTsKLQkJQThBNDczQzYxNTFBODI1QjAwNDEyM0ZGIC8qIEZs
b2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyQTQxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oICovOyB9OwotCQlB
OEE0NzNDNzE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNTE1MUE4MjVBMDA0MTIzRkYg
LyogRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCUE4QTQ3M0M4MTUxQTgyNUIwMDQxMjNGRiAvKiBG
b3J3YXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICovOyB9OwogCQlBOEE0NzNDOTE1
MUE4MjVCMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9u
YWwuaCAqLzsgfTsKIAkJQThBNDczQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIEdldFB0ci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTgxNTFBODI1
QTAwNDEyM0ZGIC8qIEdldFB0ci5oICovOyB9OwpAQCAtMTQzLDEwICsxMzcsNiBAQAogCQlBOEE0
NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQkExNTFBODI1QTAwNDEyM0ZGIC8qIEhh
c2hUcmFpdHMuaCAqLzsgfTsKIAkJQThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcy
QkIxNTFBODI1QTAwNDEyM0ZGIC8qIEhleE51bWJlci5oICovOyB9OwogCQlBOEE0NzNEQzE1MUE4
MjVCMDA0MTIzRkYgLyogSW5saW5lQVNNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCQzE1MUE4MjVBMDA0MTIzRkYgLyogSW5saW5lQVNNLmgg
Ki87IH07Ci0JCUE4QTQ3M0REMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkJEMTUxQTgyNUEw
MDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCAqLzsgfTsKLQkJQThBNDczREUxNTFBODI1QjAwNDEyM0ZG
IC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QTQ3MkJFMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQxNkFycmF5LmggKi87IH07Ci0J
CUE4QTQ3M0RGMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCRjE1MUE4MjVBMDA0MTIzRkYg
LyogSW50MzJBcnJheS5oICovOyB9OwotCQlBOEE0NzNFMDE1MUE4MjVCMDA0MTIzRkYgLyogSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZGIC8qIEludGVncmFsVHlwZWRBcnJh
eUJhc2UuaCAqLzsgfTsKIAkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJD
MTE1MUE4MjVBMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCAqLzsgfTsKIAkJQThBNDczRTMxNTFB
ODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDcyQzMxNTFBODI1QTAwNDEyM0ZGIC8qIExvY2tlci5oICovOyB9
OwogCQlBOEE0NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkM1MTUxQTgyNUEw
MDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tICovOyB9OwpAQCAtMjUwLDEzICsyNDAsOCBAQAog
CQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMzQjE1MUE4MjVCMDA0
MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggKi87IH07CiAJCUE4QTQ3NDU0MTUxQTgyNUIwMDQx
MjNGRiAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczM0UxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNh
ZmVSZWZDb3VudGVkLmggKi87IH07CiAJCUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJl
YWRTcGVjaWZpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmljLmggKi87IH07Ci0J
CUE4QTQ3NDU3MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczNDExNTFBODI1QjAwNDEy
M0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggKi87IH07CiAJCUE4QTQ3NDU4MTUxQTgyNUIwMDQxMjNG
RiAvKiBUeXBlVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QTQ3MzQyMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmNwcCAqLzsg
fTsKIAkJQThBNDc0NTkxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQzMTUxQTgyNUIwMDQx
MjNGRiAvKiBUeXBlVHJhaXRzLmggKi87IH07Ci0JCUE4QTQ3NDVBMTUxQTgyNUIwMDQxMjNGRiAv
KiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEE0NzM0NDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5oICovOyB9OwotCQlB
OEE0NzQ1QjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ1MTUxQTgyNUIwMDQx
MjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1QzE1MUE4MjVCMDA0
MTIzRkYgLyogVWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MzQ2MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MTZBcnJheS5oICov
OyB9OwotCQlBOEE0NzQ1RDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ3MTUxQTgyNUIw
MDQxMjNGRiAvKiBVaW50MzJBcnJheS5oICovOyB9OwogCQlBOEE0NzQ1RTE1MUE4MjVCMDA0MTIz
RkYgLyogQ2hhcmFjdGVyTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MzQ5MTUxQTgyNUIwMDQxMjNGRiAvKiBDaGFyYWN0ZXJOYW1lcy5o
ICovOyB9OwogCQlBOEE0NzQ1RjE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRBMTUxQTgyNUIw
MDQxMjNGRiAvKiBDb2xsYXRvci5oICovOyB9OwogCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIzRkYg
LyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQu
Y3BwICovOyB9OwpAQCAtMzQ5LDEwICszMzQsNiBAQAogCQlBNzQ4NzQ1MTE3QTBCREFFMDBGQTA0
Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8qIEFsaWdubWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTcxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5
QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MjU4MTUxQTgyNUEwMDQxMjNGRiAv
KiBBcnJheUJ1ZmZlclZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXJyYXlCdWZmZXJWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDcyNTkxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThBNDcyNUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVNDSUlDVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3NlcnRpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8q
IEFzc2VydGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDEzLDggKzM5NCw2IEBACiAJCUE4
QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MkEzMTUxQTgyNUEwMDQxMjNGRiAvKiBGaXhlZEFycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpeGVkQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQTQxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0MzJB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdDMyQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQTUxNTFBODI1QTAwNDEyM0ZGIC8q
IEZsb2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdDY0
QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQTYxNTFBODI1QTAw
NDEyM0ZGIC8qIEZvcndhcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9y
d2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJBNzE1MUE4MjVBMDA0
MTIzRkYgLyogRnVuY3Rpb25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
dW5jdGlvbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkE4MTUxQTgy
NUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2V0UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjgsMTAgKzQwNyw2IEBA
CiAJCUE4QTQ3MkJBMTUxQTgyNUEwMDQxMjNGRiAvKiBIYXNoVHJhaXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThBNDcyQkIxNTFBODI1QTAwNDEyM0ZGIC8qIEhleE51bWJlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZXhOdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThBNDcyQkMxNTFBODI1QTAwNDEyM0ZGIC8qIElubGluZUFTTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVBU00uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQThBNDcyQkQxNTFBODI1QTAwNDEyM0ZGIC8qIEludDhBcnJheS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQ4QXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQkUxNTFBODI1QTAwNDEyM0ZGIC8qIEludDE2QXJyYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50MTZBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzJCRjE1MUE4MjVBMDA0MTIzRkYgLyogSW50MzJB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQzMkFycmF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkMwMTUxQTgyNUEwMDQxMjNGRiAvKiBJ
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGVncmFsVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QThBNDcyQzExNTFBODI1QTAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RIYXNoU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4QTQ3MkMzMTUxQTgyNUEwMDQxMjNGRiAvKiBMb2NrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTG9ja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWFpblRocmVhZE1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNSwxMyArNTEwLDggQEAKIAkJQThBNDczM0IxNTFB
ODI1QjAwNDEyM0ZGIC8qIEJpbmFyeVNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCaW5hcnlTZW1hcGhvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThBNDczM0UxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNhZmVSZWZDb3VudGVkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzNGMTUxQTgyNUIwMDQxMjNGRiAvKiBU
aHJlYWRTcGVjaWZpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRT
cGVjaWZpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM0MTE1MUE4MjVC
MDA0MTIzRkYgLyogVHlwZWRBcnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThB
NDczNDIxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVRyYWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QTQ3MzQzMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQThBNDczNDQxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4QXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhBcnJheS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM0NTE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFt
cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhDbGFtcGVk
QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczNDYxNTFBODI1QjAw
NDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVpbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzQ3MTUx
QTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVaW50MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0
NzM0OTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThBNDczNEExNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sbGF0b3JEZWZhdWx0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyNiwxMCArNTk2LDYgQEAKIAkJCQlB
OEE0NzMzOTE1MUE4MjVCMDA0MTIzRkYgLyogdGhyZWFkcyAqLywKIAkJCQlBOEE0NzM0ODE1MUE4
MjVCMDA0MTIzRkYgLyogdW5pY29kZSAqLywKIAkJCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYg
LyogQWxpZ25tZW50LmggKi8sCi0JCQkJQThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5
QnVmZmVyLmNwcCAqLywKLQkJCQlBOEE0NzI1NzE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZm
ZXIuaCAqLywKLQkJCQlBOEE0NzI1ODE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3
LmNwcCAqLywKLQkJCQlBOEE0NzI1OTE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3
LmggKi8sCiAJCQkJQThBNDcyNUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCAqLywK
IAkJCQlBOEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkJ
QThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLywKQEAgLTY4Miw4ICs2
NDgsNiBAQAogCQkJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0u
Y3BwICovLAogCQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0u
aCAqLywKIAkJCQlBOEE0NzJBMzE1MUE4MjVBMDA0MTIzRkYgLyogRml4ZWRBcnJheS5oICovLAot
CQkJCUE4QTQ3MkE0MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9hdDMyQXJyYXkuaCAqLywKLQkJCQlB
OEE0NzJBNTE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQThBNDcy
QTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKIAkJCQlBOEE0NzJBNzE1MUE4MjVB
MDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oICovLAogCQkJCTFBMUQ4QjlEMTczMTg3OTgwMDE0MURB
NCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwICovLApAQCAtNzAyLDEwICs2NjYsNiBAQAogCQkJ
CUE4QTQ3MkJCMTUxQTgyNUEwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCAqLywKIAkJCQlBOEE0NzJC
QzE1MUE4MjVBMDA0MTIzRkYgLyogSW5saW5lQVNNLmggKi8sCiAJCQkJQTcwREEwODIxNzk5RjA0
RDAwNTI5QTlCIC8qIEluc2VydGlvbi5oICovLAotCQkJCUE4QTQ3MkJFMTUxQTgyNUEwMDQxMjNG
RiAvKiBJbnQxNkFycmF5LmggKi8sCi0JCQkJQThBNDcyQkYxNTFBODI1QTAwNDEyM0ZGIC8qIElu
dDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzJCRDE1MUE4MjVBMDA0MTIzRkYgLyogSW50OEFycmF5
LmggKi8sCi0JCQkJQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZGIC8qIEludGVncmFsVHlwZWRBcnJh
eUJhc2UuaCAqLywKIAkJCQlBNzBEQTA4MzE3OTlGMDREMDA1MjlBOUIgLyogTGlzdER1bXAuaCAq
LywKIAkJCQlBOEE0NzJDMTE1MUE4MjVBMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCAqLywKIAkJ
CQlBNzM2QjM1ODE3OTlFMTFBMDBDNkYwNUUgLyogTExWTUhlYWRlcnMuaCAqLywKQEAgLTgxNiwx
MyArNzc2LDggQEAKIAkJCQlBOEE0NzMzRTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaCAqLywKIAkJCQlBOEE0NzMzRjE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU3Bl
Y2lmaWMuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCAq
LywKLQkJCQlBOEE0NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRBcnJheUJhc2UuaCAqLywK
IAkJCQlBOEE0NzM0MjE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5jcHAgKi8sCiAJCQkJ
QThBNDczNDMxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuaCAqLywKLQkJCQlBOEE0NzM0
NjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCAqLywKLQkJCQlBOEE0NzM0NzE1MUE4
MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzM0NDE1MUE4MjVCMDA0
MTIzRkYgLyogVWludDhBcnJheS5oICovLAotCQkJCUE4QTQ3MzQ1MTUxQTgyNUIwMDQxMjNGRiAv
KiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJCUE4QTQ3MzVDMTUxQTgyNUIwMDQxMjNGRiAv
KiBVbmlvbkZpbmQuaCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4MjVCMDA0MTIzRkYgLyogVmFsdWVD
aGVjay5oICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywK
QEAgLTk0NSw4ICs5MDAsNiBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAogCQkJCUE4QTQ3MzdGMTUxQTgyNUIwMDQxMjNGRiAvKiBBbGlnbm1lbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCUE4QTQ3MzgyMTUxQTgyNUIwMDQxMjNGRiAvKiBBcnJheUJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDczODQxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5
QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczODUxNTFBODI1QjAwNDEyM0ZG
IC8qIEFTQ0lJQ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDM0MTUxQTgyNUIwMDQx
MjNGRiAvKiBBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzM4NzE1MUE4
MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA1LDggKzk1
OCw2IEBACiAJCQkJMEY5RDMzNjExNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQjYxNTFBODI1QjAwNDEyM0ZGIC8qIGZpeGVkLWR0
b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0M1MTUxQTgyNUIwMDQxMjNGRiAvKiBGaXhl
ZEFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNDNjE1MUE4MjVCMDA0MTIzRkYgLyog
RmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNDNzE1MUE4MjVCMDA0MTIz
RkYgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNDODE1MUE4MjVC
MDA0MTIzRkYgLyogRm9yd2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzkxNTFBODI1
QjAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUQ4QjlDMTcz
MTg2Q0UwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAyMiwxMSArOTczLDcgQEAKIAkJCQlBOEE0NzNEQjE1MUE4MjVCMDA0MTIzRkYgLyogSGV4TnVt
YmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyogSW5s
aW5lQVNNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4NDE3OTlGMDREMDA1MjlBOUIgLyog
SW5zZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNERTE1MUE4MjVCMDA0MTIzRkYg
LyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDczREYxNTFBODI1QjAwNDEy
M0ZGIC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3M0REMTUxQTgyNUIw
MDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MTQ3QjBBMTVEREND
REMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywK
LQkJCQlBOEE0NzNFMDE1MUE4MjVCMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwREEwODUxNzk5RjA0RDAwNTI5QTlCIC8qIExpc3REdW1w
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFMTE1MUE4MjVCMDA0MTIzRkYgLyogTGlzdEhh
c2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0UzMTUxQTgyNUIwMDQxMjNGRiAvKiBM
b2NrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTExNywxMiArMTA2NCw3IEBACiAJCQkJQThBNDc0
NTQxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQ1NTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0OUVGMTYzMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0NTcxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlC
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1OTE1MUE4MjVCMDA0MTIzRkYgLyogVHlw
ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0NUMxNTFBODI1QjAwNDEyM0ZGIC8q
IFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzQ1RDE1MUE4MjVCMDA0MTIz
RkYgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3NDVBMTUxQTgyNUIw
MDQxMjNGRiAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzQ1QjE1MUE4
MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3NDY3MTUxQTgyNUIwMDQxMjNGRiAvKiBVbmljb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQ2NDE1MUE4MjVCMDA0MTIzRkYgLyogVW5pY29kZUljdS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0NjgxNTFBODI1QjAwNDEyM0ZGIC8qIFVuaWNvZGVNYWNyb3NGcm9tSUNVLmggaW4g
SGVhZGVycyAqLywKQEAgLTEyMDgsOCArMTE1MCw2IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
LQkJCQlBOEE0NzM4MTE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQThBNDczODMxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM4NjE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQzNTE1MUE4MjVCMDA0MTIzRkYgLyog
QXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCQzcwRjA1MTc2QzM3OUQwMDEw
MURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVm
ZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDViNTdmZTljNmZiY2EwNjY0
ODg2ODdkY2E3MDA2YzI4MjMzMTI4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkFycmF5QnVmZmVyLmgiCi0KLSNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLQotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFj
ZSBXVEYgewotCi1ib29sIEFycmF5QnVmZmVyOjp0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRz
JiByZXN1bHQsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiA+JiBuZXV0ZXJlZFZpZXdz
KQotewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2VlcEFsaXZlKHRoaXMpOwotCi0gICAgaWYg
KCFtX2NvbnRlbnRzLm1fZGF0YSkgewotICAgICAgICByZXN1bHQubV9kYXRhID0gMDsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgYWxsVmlld3NBcmVOZXV0ZXJhYmxl
ID0gdHJ1ZTsKLSAgICBmb3IgKEFycmF5QnVmZmVyVmlldyogaSA9IG1fZmlyc3RWaWV3OyBpOyBp
ID0gaS0+bV9uZXh0VmlldykgewotICAgICAgICBpZiAoIWktPmlzTmV1dGVyYWJsZSgpKQotICAg
ICAgICAgICAgYWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYg
KGFsbFZpZXdzQXJlTmV1dGVyYWJsZSkKLSAgICAgICAgbV9jb250ZW50cy50cmFuc2ZlcihyZXN1
bHQpOwotICAgIGVsc2UgewotICAgICAgICBtX2NvbnRlbnRzLmNvcHlUbyhyZXN1bHQpOwotICAg
ICAgICBpZiAoIXJlc3VsdC5tX2RhdGEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgd2hpbGUgKG1fZmlyc3RWaWV3KSB7Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldyog
Y3VycmVudCA9IG1fZmlyc3RWaWV3OwotICAgICAgICByZW1vdmVWaWV3KGN1cnJlbnQpOwotICAg
ICAgICBpZiAoYWxsVmlld3NBcmVOZXV0ZXJhYmxlIHx8IGN1cnJlbnQtPmlzTmV1dGVyYWJsZSgp
KQotICAgICAgICAgICAgY3VycmVudC0+bmV1dGVyKCk7Ci0gICAgICAgIG5ldXRlcmVkVmlld3Mu
YXBwZW5kKGN1cnJlbnQpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBcnJh
eUJ1ZmZlcjo6YWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCi17Ci0gICAgdmlldy0+bV9i
dWZmZXIgPSB0aGlzOwotICAgIHZpZXctPm1fcHJldlZpZXcgPSAwOwotICAgIHZpZXctPm1fbmV4
dFZpZXcgPSBtX2ZpcnN0VmlldzsKLSAgICBpZiAobV9maXJzdFZpZXcpCi0gICAgICAgIG1fZmly
c3RWaWV3LT5tX3ByZXZWaWV3ID0gdmlldzsKLSAgICBtX2ZpcnN0VmlldyA9IHZpZXc7Ci19Ci0K
LXZvaWQgQXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3KiB2aWV3KQotewot
ICAgIEFTU0VSVCh0aGlzID09IHZpZXctPm1fYnVmZmVyKTsKLSAgICBpZiAodmlldy0+bV9uZXh0
VmlldykKLSAgICAgICAgdmlldy0+bV9uZXh0Vmlldy0+bV9wcmV2VmlldyA9IHZpZXctPm1fcHJl
dlZpZXc7Ci0gICAgaWYgKHZpZXctPm1fcHJldlZpZXcpCi0gICAgICAgIHZpZXctPm1fcHJldlZp
ZXctPm1fbmV4dFZpZXcgPSB2aWV3LT5tX25leHRWaWV3OwotICAgIGlmIChtX2ZpcnN0VmlldyA9
PSB2aWV3KQotICAgICAgICBtX2ZpcnN0VmlldyA9IHZpZXctPm1fbmV4dFZpZXc7Ci0gICAgdmll
dy0+bV9wcmV2VmlldyA9IHZpZXctPm1fbmV4dFZpZXcgPSAwOwotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oIGIvU291cmNlL1dURi93dGYvQXJyYXlCdWZm
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UwYTFiM2MzZTNkNjM1MTdjNjcy
YWFkYWI3YTc3NzE2NDQwODg4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMjU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFycmF5QnVmZmVyX2gKLSNkZWZpbmUg
QXJyYXlCdWZmZXJfaAotCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFz
cyBBcnJheUJ1ZmZlclZpZXc7Ci0KLWNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMpOwotcHVibGljOgotICAgIEFy
cmF5QnVmZmVyQ29udGVudHMoKSAKLSAgICAgICAgOiBtX2RhdGEoMCkKLSAgICAgICAgLCBtX3Np
emVJbkJ5dGVzKDApCi0gICAgeyB9Ci0KLSAgICBpbmxpbmUgfkFycmF5QnVmZmVyQ29udGVudHMo
KTsKLQotICAgIHZvaWQqIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KLSAgICB1bnNpZ25lZCBz
aXplSW5CeXRlcygpIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KLQotcHJpdmF0ZToKLSAgICBB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzKSAKLSAg
ICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVz
KQotICAgIHsgfQotCi0gICAgZnJpZW5kIGNsYXNzIEFycmF5QnVmZmVyOwotCi0gICAgZW51bSBJ
bml0aWFsaXphdGlvblBvbGljeSB7Ci0gICAgICAgIFplcm9Jbml0aWFsaXplLAotICAgICAgICBE
b250SW5pdGlhbGl6ZQotICAgIH07Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgdHJ5QWxsb2Nh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlh
bGl6YXRpb25Qb2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMmKTsKLSAgICB2b2lkIHRyYW5zZmVy
KEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFvdGhl
ci5tX2RhdGEpOwotICAgICAgICBvdGhlci5tX2RhdGEgPSBtX2RhdGE7Ci0gICAgICAgIG90aGVy
Lm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwotICAgICAgICBtX2RhdGEgPSAwOwotICAg
ICAgICBtX3NpemVJbkJ5dGVzID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlUbyhBcnJheUJ1
ZmZlckNvbnRlbnRzJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghb3RoZXIubV9kYXRh
KTsKLSAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUobV9zaXplSW5CeXRl
cywgc2l6ZW9mKGNoYXIpLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSwgb3Ro
ZXIpOwotICAgICAgICBpZiAoIW90aGVyLm1fZGF0YSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgbWVtY3B5KG90aGVyLm1fZGF0YSwgbV9kYXRhLCBtX3NpemVJbkJ5dGVzKTsKLSAgICAg
ICAgb3RoZXIubV9zaXplSW5CeXRlcyA9IG1fc2l6ZUluQnl0ZXM7Ci0gICAgfQotCi0gICAgdm9p
ZCogbV9kYXRhOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Ci19OwotCi1jbGFzcyBBcnJh
eUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXIqKTsKLSAgICBzdGF0aWMg
aW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmKTsKLQotICAgIC8vIE9ubHkgZm9y
IHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZC4KLSAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0KLSAgICBpbmxp
bmUgdm9pZCogZGF0YSgpOwotICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0g
ICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKLQotICAgIGlubGluZSBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4sIGludCBlbmQpIGNvbnN0OwotICAg
IGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4pIGNvbnN0Owot
Ci0gICAgdm9pZCBhZGRWaWV3KEFycmF5QnVmZmVyVmlldyopOwotICAgIHZvaWQgcmVtb3ZlVmll
dyhBcnJheUJ1ZmZlclZpZXcqKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRyYW5z
ZmVyKEFycmF5QnVmZmVyQ29udGVudHMmLCBWZWN0b3I8UmVmUHRyPEFycmF5QnVmZmVyVmlldz4g
PiYgbmV1dGVyZWRWaWV3cyk7Ci0gICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fY29u
dGVudHMubV9kYXRhOyB9Ci0KLSAgICB+QXJyYXlCdWZmZXIoKSB7IH0KLQotcHJpdmF0ZToKLSAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0KLSAgICBpbmxpbmUgQXJyYXlCdWZmZXIoQXJyYXlC
dWZmZXJDb250ZW50cyYpOwotICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGlj
ZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7Ci0gICAgaW5saW5lIHVu
c2lnbmVkIGNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25zdDsKLSAgICBzdGF0aWMgaW5saW5lIGlu
dCBjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KTsKLQotICAgIEFycmF5QnVm
ZmVyQ29udGVudHMgbV9jb250ZW50czsKLSAgICBBcnJheUJ1ZmZlclZpZXcqIG1fZmlyc3RWaWV3
OwotfTsKLQotaW50IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50
IHJpZ2h0KQotewotICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0KTsKLSAgICBpZiAoeCA8IGxlZnQp
Ci0gICAgICAgIHggPSBsZWZ0OwotICAgIGlmIChyaWdodCA8IHgpCi0gICAgICAgIHggPSByaWdo
dDsKLSAgICByZXR1cm4geDsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQotewotICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwotfQotCi1QYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyKiBvdGhlcikKLXsKLSAgICBy
ZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci0+ZGF0YSgpLCBvdGhlci0+Ynl0ZUxlbmd0
aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi17Ci0gICAgQXJyYXlCdWZm
ZXJDb250ZW50cyBjb250ZW50czsKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0
ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6ZSwgY29u
dGVudHMpOwotICAgIGlmICghY29udGVudHMubV9kYXRhKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBBcnJheUJ1ZmZlcihj
b250ZW50cykpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3Ro
KTsKLSAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiBjb250ZW50cykK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7Ci19Ci0K
LVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCi17Ci0gICAg
cmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5
KQotewotICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7Ci0gICAgQXJyYXlCdWZmZXJD
b250ZW50czo6dHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5
LCBjb250ZW50cyk7Ci0gICAgaWYgKCFjb250ZW50cy5tX2RhdGEpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVudHMpKTsKLX0KLQot
QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIGNvbnRlbnRzKQot
ICAgIDogbV9maXJzdFZpZXcoMCkKLXsKLSAgICBjb250ZW50cy50cmFuc2ZlcihtX2NvbnRlbnRz
KTsKLX0KLQotdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKQotewotICAgIHJldHVybiBtX2NvbnRl
bnRzLm1fZGF0YTsKLX0KLQotY29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKLX0KLQotdW5zaWduZWQgQXJyYXlCdWZm
ZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fc2l6ZUlu
Qnl0ZXM7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShp
bnQgYmVnaW4sIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcElu
ZGV4KGJlZ2luKSwgY2xhbXBJbmRleChlbmQpKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnNsaWNlKGludCBiZWdpbikgY29uc3QKLXsKLSAgICByZXR1cm4gc2xp
Y2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNp
Z25lZCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVu
ZCAtIGJlZ2luIDogMDsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKLX0KLQotdW5zaWduZWQgQXJy
YXlCdWZmZXI6OmNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25zdAotewotICAgIHVuc2lnbmVkIGN1
cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7Ci0gICAgaWYgKGluZGV4IDwgMCkKLSAgICAgICAg
aW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7Ci0gICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5k
ZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwotfQotCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRy
eUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSwgQXJyYXlC
dWZmZXJDb250ZW50cyYgcmVzdWx0KQotewotICAgIC8vIERvIG5vdCBhbGxvdyAzMi1iaXQgb3Zl
cmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgLy8gRklYTUU6IFdoeSBub3Q/IFRoZSB0cnlG
YXN0Q2FsbG9jIGZ1bmN0aW9uIGFscmVhZHkgY2hlY2tzIGl0cyBhcmd1bWVudHMsCi0gICAgLy8g
YW5kIHdpbGwgZmFpbCBpZiB0aGVyZSBpcyBhbnkgb3ZlcmZsb3csIHNvIHdoeSBzaG91bGQgd2Ug
aW5jbHVkZSBhCi0gICAgLy8gcmVkdWRhbnQgdW5uZWNlc3NhcmlseSByZXN0cmljdGl2ZSBjaGVj
ayBoZXJlPwotICAgIGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNp
emUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6
ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSkgewotICAgICAgICAgICAgcmVzdWx0
Lm1fZGF0YSA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ym9vbCBhbGxvY2F0aW9uU3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgaWYgKHBvbGljeSA9PSBaZXJv
SW5pdGlhbGl6ZSkKLSAgICAgICAgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IFdURjo6dHJ5RmFzdENh
bGxvYyhudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1bHQubV9kYXRh
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHBvbGljeSA9PSBEb250SW5pdGlhbGl6ZSk7
Ci0gICAgICAgIGFsbG9jYXRpb25TdWNjZWVkZWQgPSBXVEY6OnRyeUZhc3RNYWxsb2MobnVtRWxl
bWVudHMgKiBlbGVtZW50Qnl0ZVNpemUpLmdldFZhbHVlKHJlc3VsdC5tX2RhdGEpOwotICAgIH0K
LQotICAgIGlmIChhbGxvY2F0aW9uU3VjY2VlZGVkKSB7Ci0gICAgICAgIHJlc3VsdC5tX3NpemVJ
bkJ5dGVzID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci19Ci0KLUFycmF5QnVmZmVyQ29udGVudHM6
On5BcnJheUJ1ZmZlckNvbnRlbnRzKCkKLXsKLSAgICBXVEY6OmZhc3RGcmVlKG1fZGF0YSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkFycmF5QnVmZmVyOwotCi0jZW5k
aWYgLy8gQXJyYXlCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZm
ZXJWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmIzYTJlNDE3ZmRkZjE0YmZkMjEyMDhkMDg1YTYyNTVk
MzVlNDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZm
ZXJWaWV3LmgiCi0KLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV1RGIHsK
LQotQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KQot
ICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQotICAgICAgICAsIG1faXNOZXV0ZXJh
YmxlKHRydWUpCi0gICAgICAgICwgbV9idWZmZXIoYnVmZmVyKQotICAgICAgICAsIG1fcHJldlZp
ZXcoMCkKLSAgICAgICAgLCBtX25leHRWaWV3KDApCi17Ci0gICAgbV9iYXNlQWRkcmVzcyA9IG1f
YnVmZmVyID8gKHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSArIG1fYnl0ZU9m
ZnNldCkgOiAwOwotICAgIGlmIChtX2J1ZmZlcikgCi0gICAgICAgIG1fYnVmZmVyLT5hZGRWaWV3
KHRoaXMpOwotfQotCi1BcnJheUJ1ZmZlclZpZXc6On5BcnJheUJ1ZmZlclZpZXcoKQotewotICAg
IGlmIChtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXItPnJlbW92ZVZpZXcodGhpcyk7Ci19Ci0K
LXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKQotewotICAgIG1fYnVmZmVyID0gMDsKLSAg
ICBtX2J5dGVPZmZzZXQgPSAwOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9B
cnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjcwOGZiZGZmYWI5MWQ2ZjU2NDBiMWZkN2RlZjQx
ZTYzMDk2MTBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjA4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFycmF5QnVmZmVyVmlld19oCi0jZGVmaW5lIEFy
cmF5QnVmZmVyVmlld19oCi0KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLQotI2luY2x1
ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGlj
IFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7Ci0gIHB1YmxpYzoKLSAgICBlbnVtIFZpZXdU
eXBlIHsKLSAgICAgICAgVHlwZUludDgsCi0gICAgICAgIFR5cGVVaW50OCwKLSAgICAgICAgVHlw
ZVVpbnQ4Q2xhbXBlZCwKLSAgICAgICAgVHlwZUludDE2LAotICAgICAgICBUeXBlVWludDE2LAot
ICAgICAgICBUeXBlSW50MzIsCi0gICAgICAgIFR5cGVVaW50MzIsCi0gICAgICAgIFR5cGVGbG9h
dDMyLAotICAgICAgICBUeXBlRmxvYXQ2NCwKLSAgICAgICAgVHlwZURhdGFWaWV3Ci0gICAgfTsK
LSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdCA9IDA7Ci0KLSAgICBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBidWZmZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YnVmZmVyOwotICAgIH0KLQotICAgIHZvaWQqIGJhc2VBZGRyZXNzKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCA9IDA7Ci0KLSAgICB2
b2lkIHNldE5ldXRlcmFibGUoYm9vbCBmbGFnKSB7IG1faXNOZXV0ZXJhYmxlID0gZmxhZzsgfQot
ICAgIGJvb2wgaXNOZXV0ZXJhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc05ldXRlcmFibGU7IH0K
LQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKLQot
ICBwcm90ZWN0ZWQ6Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0KLSAgICBpbmxpbmUg
Ym9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotCi0g
ICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRh
Qnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0KLSAgICBpbmxpbmUgYm9vbCB6ZXJv
UmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwot
Ci0gICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3Rh
cnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7Ci0K
LSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJy
YXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVu
dHMpCi0gICAgewotICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgaWYgKHNpemVvZihUKSA+IDEgJiYgYnl0ZU9mZnNldCAlIHNpemVvZihUKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBidWZm
ZXItPmJ5dGVMZW5ndGgoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5z
aWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBieXRlT2Zm
c2V0KSAvIHNpemVvZihUKTsKLSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxl
bWVudHMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJv
bSB0aGlzIGFycmF5J3MgdmlldzsKLSAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBv
ZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyhQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQot
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRl
T2Zmc2V0KSAvIHNpemVvZihUKTsKLSAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsK
LSAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgICAg
ICpudW1FbGVtZW50cyA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAg
ICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXItPmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
IC0gKm9mZnNldCkgLyBzaXplb2YoVCk7Ci0gICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWlu
KHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwotICAgIH0KLQotICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7Ci0KLSAgICAvLyBUaGlzIGlzIHRoZSBh
ZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0
LgotICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7Ci0KLSAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQg
OiAzMTsKLSAgICBib29sIG1faXNOZXV0ZXJhYmxlIDogMTsKLQotICBwcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVy
OwotICAgIEFycmF5QnVmZmVyVmlldyogbV9wcmV2VmlldzsKLSAgICBBcnJheUJ1ZmZlclZpZXcq
IG1fbmV4dFZpZXc7Ci19OwotCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1
ZmZlclZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQotewotICAgIGlmIChieXRlT2Zm
c2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxl
bmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0
ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0
IG9yIG92ZXJmbG93Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgY2hh
ciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKLSAgICBtZW1tb3Zl
KGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5n
dGgoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRS
YW5nZUltcGwoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KQotewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAg
ICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAg
IC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2VB
ZGRyZXNzKCkpOwotICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRl
TGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onpl
cm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkK
LXsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zm
c2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZz
ZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiBy
YW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAKLSAgICBjaGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOwot
ICAgIG1lbXNldChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFu
ZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQqIG9mZnNldCwg
dW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCAr
PSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAg
IGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAw
KQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+
IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFy
dCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBz
dGFydCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkFycmF5QnVmZmVy
VmlldzsKLQotI2VuZGlmIC8vIEFycmF5QnVmZmVyVmlld19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GbG9hdDMyQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL0Zsb2F0MzJBcnJheS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjcyYTBhZmY2MzI2MWE1MDM2YWEyNTdlZTIx
YTg3NTk2YTg0NDYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Zsb2F0MzJBcnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgRmxvYXQzMkFycmF5X2gKLSNkZWZpbmUgRmxvYXQz
MkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9UeXBlZEFycmF5QmFzZS5oPgotI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBGbG9hdDMyQXJyYXkg
OiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGUoY29uc3QgZmxv
YXQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVz
ZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwot
ICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdp
dGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQz
MkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2lu
ZyBUeXBlZEFycmF5QmFzZTxmbG9hdD46OnNldDsKLQotICAgIHZvaWQgc2V0KHVuc2lnbmVkIGlu
ZGV4LCBkb3VibGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJh
eUJhc2U8ZmxvYXQ+OjptX2xlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgVHlw
ZWRBcnJheUJhc2U8ZmxvYXQ+OjpkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZh
bHVlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IHN1YmFy
cmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBWaWV3
VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlRmxvYXQzMjsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEZsb2F0MzJBcnJheShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVj
dG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJh
c2U8ZmxvYXQ+OwotfTsKLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6
Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8Zmxv
YXQ+OjpjcmVhdGU8RmxvYXQzMkFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0
MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUoY29uc3QgZmxvYXQqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZs
b2F0MzJBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5
PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRB
cnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGU8RmxvYXQzMkFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQs
IGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTxmbG9hdD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8RmxvYXQzMkFycmF5PihsZW5ndGgp
OwotfQotCi1GbG9hdDMyQXJyYXk6OkZsb2F0MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IFR5
cGVkQXJyYXlCYXNlPGZsb2F0PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQot
UGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi1Q
YXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQs
IGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxGbG9hdDMyQXJyYXk+
KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpGbG9h
dDMyQXJyYXk7Ci0KLSNlbmRpZiAvLyBGbG9hdDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDY0QXJyYXkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5MzBjZTAwOGU5ZmQ4NmI0OWNiM2ViOTRm
NDgzNGQyNmUyNzhkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDY0QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEw
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmxvYXQ2NEFycmF5X2gKLSNkZWZpbmUgRmxvYXQ2
NEFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9UeXBlZEFycmF5QmFzZS5oPgotI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBGbG9hdDY0QXJyYXkg
OiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8ZG91YmxlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKGNvbnN0IGRv
dWJsZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUg
dXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERv
Ci0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQg
d2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9h
dDY0QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVz
aW5nIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OnNldDsKLQotICAgIHZvaWQgc2V0KHVuc2lnbmVk
IGluZGV4LCBkb3VibGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRB
cnJheUJhc2U8ZG91YmxlPjo6bV9sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHZhbHVlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+
IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2
NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVh
bCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlRmxv
YXQ2NDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEZsb2F0NjRBcnJheShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwK
LSAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVj
dG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJh
c2U8ZG91YmxlPjsKLX07Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6
OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRv
dWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8Rmxv
YXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1bnNp
Z25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0
ZTxGbG9hdDY0QXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0NjRB
cnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5
cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGJ1ZmZlciwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJh
eTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5
cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8RmxvYXQ2NEFycmF5Pihs
ZW5ndGgpOwotfQotCi1GbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAg
ICA6IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCi17
Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OnN1YmFycmF5KGlu
dCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsK
LX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6c3ViYXJyYXkoaW50
IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8RmxvYXQ2
NEFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdU
Rjo6RmxvYXQ2NEFycmF5OwotCi0jZW5kaWYgLy8gRmxvYXQ2NEFycmF5X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRl
eCA4MmMyZTE4MWFjNjJlNDc3ODEzMmEwMzkyNzAxYWIxOWE0M2MyOWJjLi4yYTQ3NTAzY2JjMzQw
MDNlYjA3ZTQ5YzNiZTZkNGM5Y2M0NTljNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9G
b3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0zMywzMCArMzMsMTkg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1Jl
ZlB0cjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHI7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXI+IGNsYXNzIFZlY3RvcjsKLSAgICAKLSAgICBjbGFzcyBBcnJheUJ1ZmZlcjsKLSAgICBj
bGFzcyBBcnJheUJ1ZmZlclZpZXc7CisKICAgICBjbGFzcyBBdG9taWNTdHJpbmc7CiAgICAgY2xh
c3MgQXRvbWljU3RyaW5nSW1wbDsKICAgICBjbGFzcyBCaW5hcnlTZW1hcGhvcmU7CiAgICAgY2xh
c3MgQ1N0cmluZzsKICAgICBjbGFzcyBEZWNvZGVyOwogICAgIGNsYXNzIEVuY29kZXI7Ci0gICAg
Y2xhc3MgRmxvYXQzMkFycmF5OwotICAgIGNsYXNzIEZsb2F0NjRBcnJheTsKICAgICBjbGFzcyBG
dW5jdGlvbkRpc3BhdGNoZXI7Ci0gICAgY2xhc3MgSW50OEFycmF5OwotICAgIGNsYXNzIEludDE2
QXJyYXk7Ci0gICAgY2xhc3MgSW50MzJBcnJheTsKICAgICBjbGFzcyBQcmludFN0cmVhbTsKICAg
ICBjbGFzcyBTdHJpbmc7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFN0cmluZ0J1
ZmZlcjsKICAgICBjbGFzcyBTdHJpbmdCdWlsZGVyOwogICAgIGNsYXNzIFN0cmluZ0ltcGw7Ci0g
ICAgY2xhc3MgVWludDhBcnJheTsKLSAgICBjbGFzcyBVaW50OENsYW1wZWRBcnJheTsKLSAgICBj
bGFzcyBVaW50MTZBcnJheTsKLSAgICBjbGFzcyBVaW50MzJBcnJheTsKIH0KIAogdXNpbmcgV1RG
OjpGdW5jdGlvbjsKQEAgLTY4LDI4ICs1NywxNyBAQCB1c2luZyBXVEY6OlBhc3NSZWZQdHI7CiB1
c2luZyBXVEY6OlJlZlB0cjsKIHVzaW5nIFdURjo6VmVjdG9yOwogCi11c2luZyBXVEY6OkFycmF5
QnVmZmVyOwotdXNpbmcgV1RGOjpBcnJheUJ1ZmZlclZpZXc7CiB1c2luZyBXVEY6OkF0b21pY1N0
cmluZzsKIHVzaW5nIFdURjo6QXRvbWljU3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6QmluYXJ5U2Vt
YXBob3JlOwogdXNpbmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpFbmNvZGVyOwogdXNpbmcg
V1RGOjpEZWNvZGVyOwotdXNpbmcgV1RGOjpGbG9hdDMyQXJyYXk7Ci11c2luZyBXVEY6OkZsb2F0
NjRBcnJheTsKIHVzaW5nIFdURjo6RnVuY3Rpb25EaXNwYXRjaGVyOwotdXNpbmcgV1RGOjpJbnQ4
QXJyYXk7Ci11c2luZyBXVEY6OkludDE2QXJyYXk7Ci11c2luZyBXVEY6OkludDMyQXJyYXk7CiB1
c2luZyBXVEY6OlByaW50U3RyZWFtOwogdXNpbmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6OlN0
cmluZ0J1ZmZlcjsKIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKIHVzaW5nIFdURjo6U3RyaW5n
SW1wbDsKLXVzaW5nIFdURjo6VWludDhBcnJheTsKLXVzaW5nIFdURjo6VWludDhDbGFtcGVkQXJy
YXk7Ci11c2luZyBXVEY6OlVpbnQxNkFycmF5OwotdXNpbmcgV1RGOjpVaW50MzJBcnJheTsKIAog
I2VuZGlmIC8vIFdURl9Gb3J3YXJkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludDE2
QXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL0ludDE2QXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2Q1YTU3OWE3MjgxYmE4ZmZiM2Y5ODFhMmUwODRlMmRmNWM1NDg2YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9JbnQxNkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpZm5kZWYgSW50MTZBcnJheV9oCi0jZGVmaW5lIEludDE2QXJyYXlfaAotCi0jaW5jbHVkZSA8
d3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNz
IEFycmF5QnVmZmVyOwotCi1jbGFzcyBJbnQxNkFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRB
cnJheUJhc2U8c2hvcnQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
SW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZShjb25zdCBzaG9ydCogYXJyYXksIHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0
aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhl
c2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4K
LSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8c2hvcnQ+
OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaG9ydD46OnNldDsKLQot
ICAgIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29u
c3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0
LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZUludDE2OwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBpbmxpbmUgSW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFz
cy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8c2hvcnQ+OwotfTsKLQotUGFzc1Jl
ZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewot
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaG9ydD46OmNyZWF0ZTxJbnQxNkFycmF5PihsZW5n
dGgpOwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShjb25z
dCBzaG9ydCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJh
eUJhc2U8c2hvcnQ+OjpjcmVhdGU8SW50MTZBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBh
c3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewot
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaG9ydD46OmNyZWF0ZTxJbnQxNkFycmF5PihidWZm
ZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50
MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJbnQxNkFycmF5
PihsZW5ndGgpOwotfQotCi1JbnQxNkFycmF5OjpJbnQxNkFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAg
IDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaG9ydD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6c3ViYXJyYXko
aW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkp
OwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OnN1YmFycmF5KGludCBz
dGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDE2QXJy
YXk+KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpJ
bnQxNkFycmF5OwotCi0jZW5kaWYgLy8gSW50MTZBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9JbnQzMkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQzMkFycmF5LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YTk5NzgwOWEyOTNlZmRmYmVkOTg3MDc3NzY0OGNl
ZGM0ODFjMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dURi93dGYvSW50MzJBcnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpZm5kZWYgSW50MzJBcnJheV9oCi0jZGVmaW5lIEludDMyQXJyYXlfaAot
Ci0jaW5jbHVkZSA8d3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLWNsYXNzIEludDMyQXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxp
bnQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4g
Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPElu
dDMyQXJyYXk+IGNyZWF0ZShjb25zdCBpbnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAg
ICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJh
eSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGly
ZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGludD46OnNldDsKLSAgICB1c2lu
ZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD46OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVm
UHRyPEludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBh
c3NSZWZQdHI8SW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsK
LQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gVHlwZUludDMyOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbmxpbmUgSW50MzJBcnJh
eShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1h
a2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBU
eXBlZEFycmF5QmFzZTxpbnQ+OwotfTsKLQotUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFy
cmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQz
MkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoY29uc3QgaW50KiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJh
eT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJh
eTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+
OjpjcmVhdGU8SW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1Q
YXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGVV
bmluaXRpYWxpemVkPEludDMyQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLUludDMyQXJyYXk6OkludDMy
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD4oYnVm
ZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4g
SW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJh
cnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMy
QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3ViYXJyYXlJbXBsPEludDMyQXJyYXk+KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKLQotdXNpbmcgV1RGOjpJbnQzMkFycmF5OwotCi0jZW5kaWYgLy8gSW50MzJBcnJheV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaCBiL1NvdXJjZS9XVEYvd3Rm
L0ludDhBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjlkMmQ5YWFiYTMy
MjVlNjQ5NjhjY2EwNDQwNDAxZTA5NzMzNjNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludDhBcnJheS5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSW50OEFycmF5X2gKLSNkZWZp
bmUgSW50OEFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgSW50OEFy
cmF5IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVh
dGUoY29uc3Qgc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFNo
b3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwg
YmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0
byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7
Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OnNldDsKLSAgICB1c2lu
ZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPjo6c2V0OwotCi0gICAgaW5saW5l
IFBhc3NSZWZQdHI8SW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlu
bGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gVHlwZUludDg7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBJbnQ4
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBj
bGFzcyBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj47Ci19OwotCi1QYXNzUmVmUHRyPEludDhB
cnJheT4gSW50OEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OmNyZWF0ZTxJbnQ4QXJyYXk+KGxlbmd0aCk7Ci19
Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZShjb25zdCBzaWduZWQg
Y2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8c2lnbmVkIGNoYXI+OjpjcmVhdGU8SW50OEFycmF5PihhcnJheSwgbGVuZ3RoKTsKLX0KLQot
UGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewot
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OmNyZWF0ZTxJbnQ4QXJyYXk+
KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+
IEludDhBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAg
cmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJ
bnQ4QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLUludDhBcnJheTo6SW50OEFycmF5KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQotICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6
OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQs
IGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6c3ViYXJy
YXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8
SW50OEFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5n
IFdURjo6SW50OEFycmF5OwotCi0jZW5kaWYgLy8gSW50OEFycmF5X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9XVEYvd3RmL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZh
ZjE0Y2FiNTEzMzNiMDZiMjM1YzI3NmNhZmQyZDkxNGE2OGMwMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lm
bmRlZiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKLSNkZWZpbmUgSW50ZWdyYWxUeXBlZEFycmF5
QmFzZV9oCi0KLSNpbmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4KLSNpbmNsdWRlIDxsaW1p
dHM+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotLy8gQmFzZSBjbGFzcyBmb3IgYWxs
IFdlYkdMPFQ+QXJyYXkgdHlwZXMgaG9sZGluZyBpbnRlZ3JhbAotLy8gKG5vbi1mbG9hdGluZy1w
b2ludCkgdmFsdWVzLgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlIDogcHVibGljIFR5cGVkQXJyYXlCYXNlPFQ+
IHsKLSAgcHVibGljOgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUp
Ci0gICAgewotICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8VD46Om1fbGVuZ3Ro
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpIC8v
IENsYW1wIE5hTiB0byAwCi0gICAgICAgICAgICB2YWx1ZSA9IDA7Ci0gICAgICAgIC8vIFRoZSBk
b3VibGUgY2FzdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHdyYXBwaW5nCi0gICAg
ICAgIC8vIGZvciBvdXQtb2YtcmFuZ2UgdmFsdWVzIHdpdGggSW50MzJBcnJheSBhbmQgVWludDMy
QXJyYXkuCi0gICAgICAgIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdID0gc3RhdGlj
X2Nhc3Q8VD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKLSAgICB9Ci0KLSAgcHJvdGVj
dGVkOgotICAgIEludGVncmFsVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDog
VHlwZWRBcnJheUJhc2U8VD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCi0gICAgewotICAg
IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkludGVncmFsVHlwZWRB
cnJheUJhc2U7Ci0KLSNlbmRpZiAvLyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9UeXBl
ZEFycmF5QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGU4MjRmYTgyYzdi
YWI5YzdmMmU1MTJkN2QzYjZjNTY0MTQ1MmRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgVHlwZWRBcnJheUJh
c2VfaAotI2RlZmluZSBUeXBlZEFycmF5QmFzZV9oCi0KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZm
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0KLW5hbWVzcGFjZSBXVEYg
ewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVibGlj
IEFycmF5QnVmZmVyVmlldyB7Ci0gIHB1YmxpYzoKLSAgICBUKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VCo+KGJhc2VBZGRyZXNzKCkpOyB9Ci0KLSAgICBib29sIHNldChUeXBl
ZEFycmF5QmFzZTxUPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YoVCkpOwotICAgIH0KLQotICAgIGJv
b2wgc2V0UmFuZ2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHVuc2lnbmVkIG9m
ZnNldCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzZXRSYW5nZUltcGwocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSksIGRhdGFMZW5ndGggKiBzaXplb2YoVCksIG9mZnNldCAqIHNp
emVvZihUKSk7Ci0gICAgfQotCi0gICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCBz
aXplX3QgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHplcm9SYW5nZUltcGwob2Zmc2V0
ICogc2l6ZW9mKFQpLCBsZW5ndGggKiBzaXplb2YoVCkpOwotICAgIH0KLQotICAgIC8vIE92ZXJy
aWRkZW4gZnJvbSBBcnJheUJ1ZmZlclZpZXcuIFRoaXMgbXVzdCBiZSBwdWJsaWMgYmVjYXVzZSBv
ZgotICAgIC8vIHJ1bGVzIGFib3V0IGluaGVyaXRhbmNlIG9mIG1lbWJlcnMgaW4gdGVtcGxhdGUg
Y2xhc3NlcywgYW5kCi0gICAgLy8gYmVjYXVzZSBpdCBpcyBhY2Nlc3NlZCB2aWEgcG9pbnRlcnMg
dG8gc3ViY2xhc3Nlcy4KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fbGVuZ3RoOwotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZUxl
bmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YoVCk7
Ci0gICAgfQotCi0gICAgLy8gSW52b2tlZCBieSB0aGUgaW5kZXhlZCBnZXR0ZXIuIERvZXMgbm90
IHBlcmZvcm0gcmFuZ2UgY2hlY2tzOyBjYWxsZXIKLSAgICAvLyBpcyByZXNwb25zaWJsZSBmb3Ig
ZG9pbmcgc28gYW5kIHJldHVybmluZyB1bmRlZmluZWQgYXMgbmVjZXNzYXJ5LgotICAgIFQgaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgVHlwZWRBcnJheUJhc2U8VD46Om1fbGVuZ3RoKTsKLSAg
ICAgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdOwotICAgIH0KLQot
ICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHBvcykg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAg
ICAgICAmJiBvZmZzZXQgKyBwb3MgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92
ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBwb3MgPj0gb2Zmc2V0KTsKLSAgICB9Ci0K
LXByb3RlY3RlZDoKLSAgICBUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBB
cnJheUJ1ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQotICAgICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotICAg
IHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGxlbmd0aCwgc2l6ZW9mKFQpKTsKLSAgICAgICAgaWYgKCFidWZmZXIuZ2V0KCkpCi0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVy
LCAwLCBsZW5ndGgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKGNvbnN0IFQqIGFycmF5LCB1bnNp
Z25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8U3ViY2xhc3M+IGEgPSBjcmVhdGU8
U3ViY2xhc3M+KGxlbmd0aCk7Ci0gICAgICAgIGlmIChhKQotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGEtPnNldChpLCBh
cnJheVtpXSk7Ci0gICAgICAgIHJldHVybiBhOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFz
cyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZihidWZmZXIpOwotICAgICAgICBpZiAoIXZlcmlmeVN1YlJhbmdlPFQ+KGJ1
ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotICAg
IHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVmZmVy
LmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGU8U3Vi
Y2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
U3ViY2xhc3M+Ci0gICAgUGFzc1JlZlB0cjxTdWJjbGFzcz4gc3ViYXJyYXlJbXBsKGludCBzdGFy
dCwgaW50IGVuZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3Ro
OwotICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgbV9sZW5ndGgs
ICZvZmZzZXQsICZsZW5ndGgpOwotICAgICAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPFQ+
KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgpOwotICAgICAgICByZXR1
cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5ndGgpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQotICAgIHsKLSAgICAgICAgQXJyYXlCdWZmZXJWaWV3
OjpuZXV0ZXIoKTsKLSAgICAgICAgbV9sZW5ndGggPSAwOwotICAgIH0KLQotICAgIC8vIFdlIGRv
IG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmlydHVhbCBmdW5jdGlvbiBp
biBzdWJjbGFzc2VzLAotICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBwcm90ZWN0ZWQgcmF0aGVy
IHRoYW4gcHJpdmF0ZS4KLSAgICB1bnNpZ25lZCBtX2xlbmd0aDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdURgotCi11c2luZyBXVEY6OlR5cGVkQXJyYXlCYXNlOwotCi0jZW5kaWYgLy8gVHlwZWRB
cnJheUJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaCBiL1Nv
dXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGVjZjVmOWM5OWQ0YThmZjI4YjdjNTg2MGE0NDA5ZGU3ZWE1OWUyZjcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvVWludDE2QXJy
YXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVp
bnQxNkFycmF5X2gKLSNkZWZpbmUgVWludDE2QXJyYXlfaAotCi0jaW5jbHVkZSA8d3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEFycmF5QnVm
ZmVyOwotCi1jbGFzcyBVaW50MTZBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
PHVuc2lnbmVkIHNob3J0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PFVpbnQxNkFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBzaG9ydCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQx
NkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4g
aXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBu
b3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZp
bGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFy
cmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OnNldDsKLSAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlPHVuc2lnbmVkIHNob3J0Pjo6c2V0OwotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8VWlu
dDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQ
dHI8VWludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAg
ICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IFR5cGVVaW50MTY7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBVaW50MTZBcnJheShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0g
ICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0PjsKLX07Ci0KLVBh
c3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OmNyZWF0ZTxV
aW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2
QXJyYXk6OmNyZWF0ZShjb25zdCB1bnNpZ25lZCBzaG9ydCogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+OjpjcmVhdGU8
VWludDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5
PiBVaW50MTZBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OmNyZWF0ZTxVaW50MTZBcnJheT4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJh
eTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5
cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MTZB
cnJheT4obGVuZ3RoKTsKLX0KLQotVWludDE2QXJyYXk6OlVpbnQxNkFycmF5KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQotICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD4oYnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQx
NkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5
KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFy
cmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1
YmFycmF5SW1wbDxVaW50MTZBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgotCi11c2luZyBXVEY6OlVpbnQxNkFycmF5OwotCi0jZW5kaWYgLy8gVWludDE2QXJyYXlf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWludDMyQXJyYXkuaCBiL1NvdXJjZS9XVEYv
d3RmL1VpbnQzMkFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYWRmNmJm
YzE5NTEwNmE4Yjg3NzE0MDNmNzkwZDgyY2MxM2VkYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvVWludDMyQXJyYXkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVpbnQzMkFycmF5
X2gKLSNkZWZpbmUgVWludDMyQXJyYXlfaAotCi0jaW5jbHVkZSA8d3RmL0ludGVncmFsVHlwZWRB
cnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEFycmF5QnVmZmVyOwotCi1j
bGFzcyBVaW50MzJBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVk
IGludD4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJh
eT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PFVpbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgaW50KiBhcnJheSwgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0
aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhl
c2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4K
LSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHVuc2ln
bmVkPjo6c2V0OwotICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQ+Ojpz
ZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0
YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlw
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQzMjsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgaW5saW5lIFVpbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2UgY29uc3RydWN0
b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFz
ZTx1bnNpZ25lZCBpbnQ+OwotfTsKLQotUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJy
YXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVuc2lnbmVkIGludD46OmNyZWF0ZTxVaW50MzJBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1Jl
ZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZShjb25zdCB1bnNpZ25lZCBpbnQq
IGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVu
c2lnbmVkIGludD46OmNyZWF0ZTxVaW50MzJBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBh
c3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17
Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD46OmNyZWF0ZTxVaW50MzJB
cnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQz
MkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgp
Ci17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQ8VWludDMyQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVVpbnQzMkFycmF5OjpVaW50MzJB
cnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQg
aW50PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxVaW50
MzJBcnJheT4gVWludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MzJB
cnJheT4gVWludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPFVpbnQzMkFycmF5PihzdGFydCwgZW5kKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6VWludDMyQXJyYXk7Ci0KLSNlbmRpZiAv
LyBVaW50MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VaW50OEFycmF5Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9VaW50OEFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhjYWYwNTQ3NjY1YjQ4ODg3YTg5ZDNhNGQyZTg3NGVmYmE5M2M4YjUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvVWludDhB
cnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYg
VWludDhBcnJheV9oCi0jZGVmaW5lIFVpbnQ4QXJyYXlfaAotCi0jaW5jbHVkZSA8d3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEFycmF5QnVm
ZmVyOwotCi1jbGFzcyBVaW50OEFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8
dW5zaWduZWQgY2hhcj4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxV
aW50OEFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5
PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMg
a25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0
dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcg
Zmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNl
PHVuc2lnbmVkIGNoYXI+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBjaGFyPjo6c2V0OwotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4g
c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFy
cmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBW
aWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlVWludDg7
Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgaW5saW5lIFVpbnQ4QXJyYXkoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAv
LyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xh
c3MgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj47Ci19OwotCi1QYXNzUmVmUHRyPFVpbnQ4
QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJu
IFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVhdGU8VWludDhBcnJheT4obGVuZ3Ro
KTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZTxVaW50OEFycmF5PihhcnJheSwgbGVu
Z3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+Ojpj
cmVhdGU8VWludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1QYXNz
UmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6
Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50OEFycmF5PihsZW5ndGgpOwotfQotCi1VaW50OEFycmF5
OjpVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2ln
bmVkIGNoYXI+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRy
PFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50
OEFycmF5PiBVaW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OEFycmF5PihzdGFydCwgZW5kKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6VWludDhBcnJheTsKLQotI2VuZGlmIC8v
IFVpbnQ4QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWludDhDbGFtcGVkQXJy
YXkuaCBiL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDc1Y2MyZDgyYjI5MTQyYmQzMTI4MzZhNTA3OTc2ODUwOGFkYjMwYzQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dU
Ri93dGYvVWludDhDbGFtcGVkQXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFVpbnQ4Q2xhbXBlZEFycmF5X2gKLSNkZWZp
bmUgVWludDhDbGFtcGVkQXJyYXlfaAotCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNp
bmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBVaW50OENsYW1wZWRBcnJheSA6IHB1YmxpYyBVaW50
OEFycmF5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFy
cmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNl
ZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0g
ICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0
aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAg
Ly8gSXQncyBvbmx5IG5lZWRlZCB0byBwb3RlbnRpYWxseSBjYWxsIHRoaXMgbWV0aG9kIGlmIHRo
ZSBhcnJheQotICAgIC8vIHdhcyBjcmVhdGVkIHVuaW5pdGlhbGl6ZWQgLS0gdGhlIGRlZmF1bHQg
aW5pdGlhbGl6YXRpb24gcGF0aHMKLSAgICAvLyB6ZXJvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5Lgot
ICAgIGlubGluZSB2b2lkIHplcm9GaWxsKCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBjaGFyPjo6c2V0OwotICAgIGlubGluZSB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwg
ZG91YmxlIHZhbHVlKTsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAg
dmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBU
eXBlVWludDhDbGFtcGVkOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbmxpbmUgVWludDhDbGFt
cGVkQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1
cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+
OwotfTsKLQotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVu
c2lnbmVkIGNoYXI+OjpjcmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoY29u
c3QgdW5zaWduZWQgY2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4g
VHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4o
YXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4
Q2xhbXBlZEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQot
ewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlVW5pbml0
aWFsaXplZDxVaW50OENsYW1wZWRBcnJheT4obGVuZ3RoKTsKLX0KLQotdm9pZCBVaW50OENsYW1w
ZWRBcnJheTo6emVyb0ZpbGwoKQotewotICAgIHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7Ci19Ci0K
LXZvaWQgVWludDhDbGFtcGVkQXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVl
KQotewotICAgIGlmIChpbmRleCA+PSBtX2xlbmd0aCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
IChzdGQ6OmlzbmFuKHZhbHVlKSB8fCB2YWx1ZSA8IDApCi0gICAgICAgIHZhbHVlID0gMDsKLSAg
ICBlbHNlIGlmICh2YWx1ZSA+IDI1NSkKLSAgICAgICAgdmFsdWUgPSAyNTU7Ci0gICAgZGF0YSgp
W2luZGV4XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGxyaW50KHZhbHVlKSk7Ci19Ci0K
LVVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLTogVWlu
dDhBcnJheShidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OnN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPFVpbnQ4
Q2xhbXBlZEFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVz
aW5nIFdURjo6VWludDhDbGFtcGVkQXJyYXk7Ci0KLSNlbmRpZiAvLyBVaW50OENsYW1wZWRBcnJh
eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L0FycmF5QnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3ZDk4YzhhZWU4ZTk0NzcyNWExZTdmMjQxODUy
NzQwMTc5YTdjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2Vi
Q29yZV9GV0RfQXJyYXlCdWZmZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZlcl9o
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlC
dWZmZXJWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGUzOTUyNjY5N2NkMTBkYjNmNDhmOGI5NmRkMDA0ZDhi
M2Y5NDgyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdl
YkNvcmVfRldEX0FycmF5QnVmZmVyVmlld19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0FycmF5QnVm
ZmVyVmlld19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvRmxvYXQzMkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0Zsb2F0MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNDUzZGQyMTYwOGQzY2NjOWNlNDhjMTA1
MDY0YTc3NmZlYjNkMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9GbG9hdDMyQXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9GbG9hdDMy
QXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Zs
b2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9G
bG9hdDY0QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2UzNWFhZGM4OGFlYmM5NTUwYWU1ZjU4MWQxYjhk
ODljODNhNmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9GbG9hdDY0QXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2Vi
Q29yZV9GV0RfRmxvYXQ2NEFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRmxvYXQ2NEFycmF5
X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDY0QXJyYXkuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQxNkFy
cmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDE2QXJy
YXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NWQwMDM5OWRhMzU0OTc5M2NkYjljMWI3ZWEyZTE0YTQ4N2M4MTI5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9JbnQxNkFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0lu
dDE2QXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnQxNkFycmF5X2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnQxNkFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MzJBcnJheS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQzMkFycmF5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2I2NTc0MWQ3NjliY2U2OTA5MWZkZjIwZjE4YWEwYmVkYzZlYTBhMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MzJBcnJheS5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnQzMkFycmF5X2gKKyNkZWZp
bmUgV2ViQ29yZV9GV0RfSW50MzJBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50
MzJBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0ludDhBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjZhZDUyNzQwYjUxZjFmZGZi
ODhhYWVhYzMxY2NhOTViODkxNDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfSW50OEFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW50OEFy
cmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnQ4QXJyYXkuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjc5YjU2ODRjNjYwNzEz
N2NjNThiNzY3YWU2ZmZhMTZiYWY4YTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKQEAg
LTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0ludGVncmFsVHlwZWRBcnJheUJhc2Vf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlwZWRBcnJh
eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlwZWRB
cnJheUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjQxYTU3YzNhNjU4YmJjNWYwMDJkZjAxNjc5NzBlNjJm
NWYxNDBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJD
b3JlX0ZXRF9UeXBlZEFycmF5QmFzZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1R5cGVkQXJyYXlC
YXNlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5QmFzZS5oPgorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1Vp
bnQxNkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1Vp
bnQxNkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NjZWEyYzFiMGMwNzM3ZWM2YzgwZjQzYjZhNWUxYjAz
NWQ5NjJlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvVWludDE2QXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29y
ZV9GV0RfVWludDE2QXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9VaW50MTZBcnJheV9oCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDE2QXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5o
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY2MDI2ZjE1YzA2MzYxOGNjNmIyZDQxNjJkOGNiZWM4YWE3YjBiMjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1VpbnQzMkFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1VpbnQz
MkFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVWludDMyQXJyYXlfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1VpbnQzMkFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDhBcnJheS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OEFycmF5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGM4ZGU0ZWE3OGNjYWRlNDkyM2E4Njk2MDFiMTUwZGQ1ODU3ZDc2NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDhBcnJheS5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VaW50OEFycmF5X2gKKyNkZWZp
bmUgV2ViQ29yZV9GV0RfVWludDhBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWlu
dDhBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdk
MmUwMWQxYThlNTcwZDhhYTUyOTU4NGUxMWE5ODY1NTNjNjk5NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDhDbGFtcGVkQXJy
YXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVWludDhDbGFtcGVkQXJy
YXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9VaW50OENsYW1wZWRBcnJheV9oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggM2I3NTNkYzUzN2E3ODE4NjVl
OWI2ZTEzYWZmZDYzZDZkZmVkY2FhYi4uM2M0MGY5Y2Q1YjRiMzdhYTFkYjFmOGI2MWEzYTBlY2I1
NmUwNDEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5o
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogCisj
aW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKaW5kZXggNGE5Yzg0M2E2NTIxZjliMWM3ZjJkOWJi
YmYyMDM2YzQzZTdhY2E3OS4uMmIzMWI0NzljNzdkNTZmMjY2ODdmOTViMzc1YTJhODE0M2ViMjk5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU1lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNs
dWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgot
I2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAKaW5k
ZXggNWUwNmY4ZDUwNjMxN2VhM2ZiOWE4Mzc4NzlmZjgwMWM4Zjk2N2EyNS4uZGIwNjE3MzhhMDEy
YjBiOTY3MmQyNzJmYmFkZDUzY2MxNzYzYzNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3Bw
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5oIgogCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmgKaW5kZXggODNkMWZiZWVhYzM3NjY0ZWQwZmQ0ZjJlYzUwOWNkNjMyZjlmYmQ4Ni4u
MDc2Njg0NDc5M2Y4YWEwODU2OGM1NTYzM2ZlZjBhYjYwMDllZjAyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
CkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
VWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVWlu
dDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaAppbmRleCA0ZmYzZTA2OWVhMTI5NTUyNDhiMDcxYWRjMTMzMzc2ODRhMmE0ODY2
Li5mMTYyZjk2MWJmMGQ1YzFhNWQ5MTJhOTFkNDkxMTBlYzZjNTFlYjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTMxLDEw
ICszMSwxMCBAQAogI2luY2x1ZGUgIkNETS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5jcHAKaW5kZXggZWU2MzI2OWM2ZThiODA2NGFiNjQxM2EyMjI4NjZhN2IxNzcwMTlhNC4uNzA3
YTgzM2Y5MmQ5MDQ5NWU4YmUwMjYyZDQxZDc4OWFiNjc0MjRkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlIDx3dGYvVWlu
dDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcAppbmRleCBmZjgwZGY1NDc0NGE0YTMxMzQ4OWMyNTY3MGE3MmQ2NTE0
OTNlZTIxLi4yMmViNmFkYTFiYmFlYjRhY2E1ZjZiN2QwYzA0ZTU0NDk4ODE5NTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUg
PHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCBmMjAxODgzY2I2MGNkNjFiZDJiNDY4
ZjVmMDM4MmU4ZTBjNzZhZDFkLi4wNDVjNWQ3MmQwN2FhNTY0NzE4YTU3YTMyNzkzNmI1OTUyYmRi
YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmNwcApAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIgogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZm
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKaW5kZXggOTZlOTdhOTE1ZjUyNzE2
YTYwY2ViYzk5YjM2NGU2ODJmZTYwMzJmOC4uODNiNjAyOGJkMDgwNDNmMGI0YmU2NzU5MzUzYWEz
ZWQ1Yzk0ZTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24v
TmF2aWdhdG9yVmlicmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJh
dGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
TmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlZpYnJhdGlvbi5oIgot
I2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMyQXJy
YXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAppbmRleCA5ZjJmMGI4NzMyMDkyMzc2ZWRkNzlkYzdj
MWFlYTVlYTk3Y2Q4MzQ0Li5jM2FhNWM3NzgyYzA3N2M0ZDE0YmMwMGMxNWE3YjUwMWRjMzIwZGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgK
QEAgLTU5LDkgKzU5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0
YW50KGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBmbG9hdCBzbW9vdGhpbmdUaW1lQ29u
c3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCgp
OyB9CiAKLSAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShGbG9hdDMyQXJyYXkqIGFycmF5
KSB7IG1fYW5hbHlzZXIuZ2V0RmxvYXRGcmVxdWVuY3lEYXRhKGFycmF5KTsgfQotICAgIHZvaWQg
Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRC
eXRlRnJlcXVlbmN5RGF0YShhcnJheSk7IH0KLSAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0
YShVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YShh
cnJheSk7IH0KKyAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShKU0M6OkZsb2F0MzJBcnJh
eSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRGbG9hdEZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9Cisg
ICAgdm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShKU0M6OlVpbnQ4QXJyYXkqIGFycmF5KSB7IG1f
YW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9CisgICAgdm9pZCBnZXRCeXRl
VGltZURvbWFpbkRhdGEoSlNDOjpVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5
dGVUaW1lRG9tYWluRGF0YShhcnJheSk7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJs
ZSB0YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXgg
ZjAwYmQxYWRjZjIxMDRjZmQyZTk3ZmEzNTAxYjYwM2RjN2RhMjg4YS4uMDkzODNlZjVmNDc5ZjM1
NDA3ZmYxMTMwMDgwZDNlMTYyNDZiYmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9CdWZmZXJDYWxsYmFj
ay5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4IGNlZDgwNThj
MGY2MDE0M2QzMzM1MWQ0ZWNhNTY1YWJkOGQ3ODQ4YTcuLjljZmE4OGU1ZWMwY2IzZTZmNzA2YmRh
MjY0ZjBlOTI3NWQzMmZiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorbmFtZXNwYWNlIEpT
QyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBdWRpb0J1ZmZlcjsKQEAgLTQ3LDIwICs1MSwyMCBAQCBwdWJsaWM6CiAgICAgfkFzeW5jQXVk
aW9EZWNvZGVyKCk7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
Ci0gICAgdm9pZCBkZWNvZGVBc3luYyhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1w
bGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lk
IGRlY29kZUFzeW5jKEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0
ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAKIHByaXZhdGU6CiAg
ICAgY2xhc3MgRGVjb2RpbmdUYXNrIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVj
b2RpbmdUYXNrKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPERlY29k
aW5nVGFzaz4gY3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUs
IFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOworICAgICAgICBzdGF0aWMg
UGFzc093blB0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0ZShKU0M6OkFycmF5QnVmZmVyKiBhdWRpb0Rh
dGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spOwogCiAgICAgICAgIHZvaWQgZGVjb2RlKCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIERlY29kaW5nVGFzayhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVS
YXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgRGVj
b2RpbmdUYXNrKEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwg
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAKLSAgICAgICAgQXJyYXlC
dWZmZXIqIGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhLmdldCgpOyB9CisgICAgICAg
IEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhLmdldCgp
OyB9CiAgICAgICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJh
dGU7IH0KICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFjayogc3VjY2Vzc0NhbGxiYWNrKCkgeyBy
ZXR1cm4gbV9zdWNjZXNzQ2FsbGJhY2suZ2V0KCk7IH0KICAgICAgICAgQXVkaW9CdWZmZXJDYWxs
YmFjayogZXJyb3JDYWxsYmFjaygpIHsgcmV0dXJuIG1fZXJyb3JDYWxsYmFjay5nZXQoKTsgfQpA
QCAtNjksNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdm9pZCBub3RpZnlDb21w
bGV0ZURpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKTsKICAgICAgICAgdm9pZCBub3RpZnlDb21wbGV0
ZSgpOwogCi0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hdWRpb0RhdGE7CisgICAgICAg
IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX2F1ZGlvRGF0YTsKICAgICAgICAgZmxvYXQgbV9z
YW1wbGVSYXRlOwogICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gbV9zdWNjZXNz
Q2FsbGJhY2s7CiAgICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBtX2Vycm9yQ2Fs
bGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmgK
aW5kZXggODI3ZGY5ZWJiODRlNmUwYTI3YmRlMmNkODAxNTAzMTZlYjA2N2RhZi4uMWNhNjc2NmJj
OTllMmEyYWYzOTk4ZTJmZGU5ODdhMDk0YjFlZTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBB
dWRpb0J1ZmZlcl9oCiAjZGVmaW5lIEF1ZGlvQnVmZmVyX2gKIAotI2luY2x1ZGUgPHd0Zi9GbG9h
dDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAKaW5kZXggMmI0ZDE3OTg4YTJhZjE2MjIxNDc0NDg1NTY5Y2ZhYjllZmZm
MzUyNS4uOGEwZThkNWIyYjYxNTBlZGNkMjRjNGRmY2MwNWIzZmZmYzliN2VlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNzks
NyArNzksNyBAQAogI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2VuZGlmCiAKLSNp
bmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1BhcmFtLmgKaW5kZXggNTI0Zjk4ZjA3ZjhjMmFhZTYzOTAzMTk2Yzc0MWZjMmI5
NGM0ODk5MS4uMWU0MDdiYTBiYTQ4NTEzZWE4NjQ1M2E3MTIzYzY0N2JmNTQwMTY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKQEAgLTMyLDggKzMy
LDggQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtVGlt
ZWxpbmUuaCIKICNpbmNsdWRlICJBdWRpb1N1bW1pbmdKdW5jdGlvbi5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8
d3RmL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5oCmluZGV4IGMwYTk2MDg3MDQ5MTMwOGU3MTA0NDA5ZGFkNzk0ODYwMzVkYzFiMTEuLmUwZTVh
NWRjY2I1MDJiYjM3M2VkYmQwNzIwMWI1NGRlZmJhNDZjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaApAQCAtMzAsNyAr
MzAsNyBAQAogI2RlZmluZSBBdWRpb1BhcmFtVGltZWxpbmVfaAogCiAjaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oCmluZGV4IDNiNmRlNjhm
ZTBlMGZiMzI5MDZiMGY3Mjg0MjZhYjk4MWIwNzkwZjYuLjEyNDNkOTA4MGQyZGNlZTY2YzA2M2Jk
ODcxNzg5NmM0MmExYmRmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGVyaW9kaWNXYXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9QZXJpb2RpY1dhdmUuaApAQCAtMzAsNyArMzAsNyBAQAogI2RlZmluZSBQZXJpb2RpY1dhdmVf
aAogCiAjaW5jbHVkZSAiQXVkaW9BcnJheS5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXku
aD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0
aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGlt
ZUFuYWx5c2VyLmNwcAppbmRleCA2ODE2M2NlNTU3YTFmZTE4MDE5MTJlYTI5ZmRhN2VkMGM1ODIy
OTc2Li42NGEzY2YzYjk0OTczMTAzY2UwOGJhMGI5MWRhMjdiMmI2MWRmMWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAK
QEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8Y29tcGxleD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1l
L1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5oCmluZGV4IDAyZWEwNWY1ZWVlYTVjZmFlZjIwNjUzMzUwZGY0MjNmMzlh
OWMwMGIuLjFmYmI2OGE1NjY3ZDcxYWVjZDM5Zjk1MzU5MTk3MDlhM2ZiMWEzOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oCkBA
IC0zMCw2ICszMCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGbG9hdDMyQXJyYXk7Citj
bGFzcyBVaW50OEFycmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlv
QnVzOwpAQCAtNTcsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTbW9vdGhpbmdUaW1l
Q29uc3RhbnQoZmxvYXQgaykgeyBtX3Ntb290aGluZ1RpbWVDb25zdGFudCA9IGs7IH0KICAgICBm
bG9hdCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxm
bG9hdD4obV9zbW9vdGhpbmdUaW1lQ29uc3RhbnQpOyB9CiAKLSAgICB2b2lkIGdldEZsb2F0RnJl
cXVlbmN5RGF0YShGbG9hdDMyQXJyYXkqKTsKLSAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRh
KFVpbnQ4QXJyYXkqKTsKLSAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5
Kik7CisgICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoSlNDOjpGbG9hdDMyQXJyYXkqKTsK
KyAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRhKEpTQzo6VWludDhBcnJheSopOworICAgIHZv
aWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKEpTQzo6VWludDhBcnJheSopOwogCiAgICAgLy8gVGhl
IGF1ZGlvIHRocmVhZCB3cml0ZXMgaW5wdXQgZGF0YSBoZXJlLgogICAgIHZvaWQgd3JpdGVJbnB1
dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXgg
NGUzNmU4Nzk3YTZlZGQ5MmY3MTE5MWMwMzkwNDBhOWUxZTgzYzg5Ni4uYWIxZDJlZTBmYjI4NDVm
OTZiMWE5ZGY5NTE0ZDUwYzNhMjM0MDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC0zNSw3ICszNSw3
IEBACiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9Qcm9jZXNz
aW5nRXZlbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMy
QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKaW5kZXggNTU5
N2E5NGMxZTcyNzQzYWRmN2Y4NGFiZjI4ZjI3NGRjZjM5MDk3Ny4uNjM1YWM3NWQ5NGIyM2QzMWY4
YTlkNjljYTk3NTQ3ZGIxYTkzMmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNp
bmNsdWRlICJBdWRpb0RTUEtlcm5lbC5oIgogI2luY2x1ZGUgIkF1ZGlvRFNQS2VybmVsUHJvY2Vz
c29yLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJh
eS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaAppbmRleCAxOGQ5OWE5ZjBhYWYwMmQ1ZTk0ZjVkNWU4ZWE0ZTgzZjUzMjg0YmFhLi5m
ZjcyODNkODU3ZjhlMmNkZTM4Y2YwMjMzNTg0OWJiN2JlNDFlZmRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaApAQCAtMzcsNiArMzcsMTEgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIEFycmF5QnVmZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC02MCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0
ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTdHJpbmcg
ZXh0ZW5zaW9ucygpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgp
IGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3Qg
QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSA9
IDA7CisgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpID0gMDsKICAgICB2aXJ0
dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgPSAwOwogICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGI0YjQ5YzEwZTk0OTRk
ZDUyNmRhYjgxYTU5ZjA3ZDlhOTkxYWVlNWUuLjVmYTNkOWY2YTBkMWM4ZGYxODFmMGQyNDI5MGQ1
ODEyM2YyOTM0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCkBAIC01NCw4ICs1NCw4IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldl
YlNvY2tldENoYW5uZWwuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRl
IDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApp
bmRleCBlNjQ3OTAzMTU1NjcwZWM5YzkwN2E1YTlhMjQxMzE1ZDdjZWY2YTgzLi45YTU4MjM3MGZm
ZDg2NDBjNDAxZjJkMzdlMWI5Y2Q5YWJkZjNiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
cm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXIqLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZW5kKEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCBzZW5kKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIGNsb3Nl
KGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDViZTk5YTkxMmU1OTdlYjg4ZTU5OTViM2VhOTc2Y2ExOTdkMDkxYTAuLjM0ZjRh
YmU2MjBmOGUyZWEzZmMwZDAxMGIwMTA5YmJkYWFiMTU2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgKaW5kZXggMTcwYWIxODNhZDQ4M2U5OTQzNDkxOWZlMjlkZWExMDNhNjYwODU5Mi4uZjE0
OGNkOTFiMDgxMDA4ZjhiYWY1MDA1ZmUwOWE0OTc0ODM3MTUwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC03Miw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1
ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2Vu
ZChjb25zdCBCbG9iJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZl
cmVkQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7IC8vIFN0YXJ0IGNsb3NpbmcgaGFu
ZHNoYWtlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXgg
NTY3Yjk3OTUyMjUyZjQzZmQ3YzUxOWRhM2Y0N2MyMzI0YTI2NjYzNS4uNzhiNWIxMDNhMjQyNWU5
ZjY1MjVhN2MxMTg2NjU1Y2Y0ZTZhOWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiV29ya2VyTG9hZGVy
UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9B
cnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMjQyMTM0MzVkMTNkNmI1NTBmYTY0
ZGZiMjJjNzhmZTZiNjQ2MzAzMy4uNDE5YWM0MmQ2YmMzOWQ4NmZiNmNjMmZiNzc5ZmMxYzY5ZWYy
ZGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVm
ZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5k
KGNvbnN0IEJsb2ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBPVkVSUklERTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVi
bGljOgogCiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCk7CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAg
ICAgICB2b2lkIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKKyAgICAgICAgdm9pZCBzZW5kKGNv
bnN0IEpTQzo6QXJyYXlCdWZmZXImKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEJsb2ImKTsK
ICAgICAgICAgdm9pZCBidWZmZXJlZEFtb3VudCgpOwogICAgICAgICB2b2lkIGNsb3NlKGludCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAg
ICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJh
eUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAg
ICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpT
Qzo6QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KTsKICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChj
b25zdCBCbG9iJik7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKTsKICAg
ICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCA0ZjJjNzA3MzE5MmZhYzQxZGMzNTVjMmY5MzlhMDc2Yzg3NjVjOTNh
Li5iMWZmMjE2OTdkNjVmYTdkN2Q3NjE1MWQyMjQ5M2U4ZDRiZWRlYjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtNzIwLDcgKzcyMCw3IEBAIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2No
ZWR1bGVyRDJFdgogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRlc2VyaWFs
aXplRVBLMTVPcGFxdWVKU0NvbnRleHRQUEsxM09wYXF1ZUpTVmFsdWUKIF9fWk43V2ViQ29yZTIx
U2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQTjNKU0M5RXhlY1N0YXRlRVBOUzFf
MTRKU0dsb2JhbE9iamVjdEVQTjNXVEY2VmVjdG9ySU5TNl82UmVmUHRySU5TXzExTWVzc2FnZVBv
cnRFRUVMbTFFTlM2XzE1Q3Jhc2hPbk92ZXJmbG93RUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JN
b2RlRQogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFx
dWVKU0NvbnRleHRQSzEzT3BhcXVlSlNWYWx1ZVBTNl8KLV9fWk43V2ViQ29yZTIxU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlNmNyZWF0ZUVQTjNKU0M5RXhlY1N0YXRlRU5TMV83SlNWYWx1ZUVQTjNXVEY2
VmVjdG9ySU5TNV82UmVmUHRySU5TXzExTWVzc2FnZVBvcnRFRUVMbTFFTlM1XzE1Q3Jhc2hPbk92
ZXJmbG93RUVFUE5TNl9JTlM3X0lOUzVfMTFBcnJheUJ1ZmZlckVFRUxtMUVTQV9FRU5TXzIyU2Vy
aWFsaXphdGlvbkVycm9yTW9kZUUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVl
NmNyZWF0ZUVQTjNKU0M5RXhlY1N0YXRlRU5TMV83SlNWYWx1ZUVQTjNXVEY2VmVjdG9ySU5TNV82
UmVmUHRySU5TXzExTWVzc2FnZVBvcnRFRUVMbTFFTlM1XzE1Q3Jhc2hPbk92ZXJmbG93RUVFUE5T
Nl9JTlM3X0lOUzFfMTFBcnJheUJ1ZmZlckVFRUxtMUVTQV9FRU5TXzIyU2VyaWFsaXphdGlvbkVy
cm9yTW9kZUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RG
NlZlY3RvckloTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWVEMUV2CkBAIC05MDcsNyArOTA3LDcgQEAgX19aTjdXZWJDb3JlNFBh
dGhDMUV2CiBfX1pON1dlYkNvcmU0UGF0aEQxRXYKIF9fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJM
UHJvdGVjdGlvblNwYWNlCiBfX1pON1dlYkNvcmU0Y29yZUVQMjhOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlCi1fX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9N
R2xvYmFsT2JqZWN0RVBOM1dURjExQXJyYXlCdWZmZXJFCitfX1pON1dlYkNvcmU0dG9KU0VQTjNK
U0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOUzBfMTFBcnJheUJ1ZmZlckUK
IF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmpl
Y3RFUE5TXzEwQ2xpZW50UmVjdEUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVF
UE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEzRE9NU3RyaW5nTGlzdEUKIF9fWk43V2ViQ29y
ZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzE0Q2xp
ZW50UmVjdExpc3RFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fy
cmF5QnVmZmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlC
dWZmZXJDdXN0b20uY3BwCmluZGV4IDJmYTMwNmE5ZDM4YzJjMzliMzcyZTU5NGE2ZjgyODI5YTQ2
MzU4OWUuLmRmZDUyYWI3OGZjYzY3ZTdkMmI0NjNhMDVmNjViNmY0MDdmNjBhMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCkBA
IC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNs
dWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKaW5kZXggOWFmM2Y4YWRkN2Q2OTU3YjVlZDBiOTUw
NjU3NWEzYTRhYTliNzUyNi4uODdiNmU0YzkxN2RjNDU0ODc5OTgyZTI3ODg4OWNjYTA3MWVmYTBj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZp
ZXdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVy
Vmlld0hlbHBlci5oCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxydW50aW1l
L0FyZ0xpc3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUgPHd0Zi9UeXBl
ZEFycmF5QmFzZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUJhc2UuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggZDczMDM2ZmY5MWIxMGVlNjZlNzAzZDdhYzNm
NjUwOTU0NzMyYzZlZC4uYWI2ODUyNmVjNjI1NGQyNmUxYzJmZGIzM2YwZjEyZGJmOWJjNzE2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIkpTQXVkaW9Db250ZXh0LmgiCiAj
aW5jbHVkZSAiSlNPZmZsaW5lQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlv
Q29udGV4dC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3Vz
dG9tLmNwcAppbmRleCBhOTYzYTc0Njg3NjU0YTJlYzgwMDhkNGZjMzcyMjE4MzFhOWI1YmE1Li5k
OWU5Mjk4MWE2YTM5MWM2OTk4NDM1ZTY2Njg0OWExZWRiMGJlMzg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3Lmgi
CiAKKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgK
aW5kZXggMWY4Njg0ZmYwYzEzNzUxY2IxYjdmZjAyOGVhODA0OWVmNjA4NGYwNi4uMDUxOWZlMjY1
ZGZlMDk0NDUyY2Q2YTIzYTkxZmEyMjM0MTBhY2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29u
dmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBBcnJheVZhbHVlJiByZXN1
bHQpOwotICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiByZXN1bHQpOworICAgIHN0YXRpYyB2b2lkIGNv
bnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPEpTQzo6VWlu
dDhBcnJheT4mIHJlc3VsdCk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGF0
aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0
cjxNZWRpYUtleUVycm9yPiYgcmVzdWx0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKaW5kZXggOGI0OTNjYTE3NjlmMmVk
OTk3YTllNTA1NTdmMGM1NGQ1NDAzMmMzNy4uZTg1MTIxOWFmYTc0ODhiMzM1OTFmNDZjYmE2NGQ4
MDNhNTA5MTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxl
UmVhZGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVS
ZWFkZXJDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKICNpbmNsdWRlICJGaWxlUmVhZGVy
LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZl
ci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDVlZDUzZTdiNTNkMjkzMDRkYjMz
YWVkYzI3OTIxMGUyMDExM2UxMGMuLjIyYmYxYWFjN2MxMjA2OTQyZjU3ZWYyYWUyZWRlZmI2ZDQ1
YWQyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTg1LDExICs4NSwxMSBAQAogI2lu
Y2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFy
cmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvVWludDMy
QXJyYXkuaD4KIAogI2lmIEVOQUJMRShWSURFTykKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVl
c3RDdXN0b20uY3BwCmluZGV4IDJiNzk5YzUwZWViYzBiMWM0OTMyNGQ1NmVjMTlhYTlhZWZkMDBl
NmIuLjhkZDhiZjU1OTIyZjY1NDQ3NTk0NWIwNGFjMTQyYzg1OTQyYTZhZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
CkBAIC00OCw4ICs0OCw4IEBACiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlIDxpbnRlcnByZXRlci9TdGFja0l0ZXJhdG9y
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggMTI2YTA0YmZiYTExOTQ0NTg0MTU4Nzk4NWEzNTg1MmY0YTcw
ZTk4ZS4uMzgyY2IyN2ViM2VkNGIyYjA1M2QyZTVhNjg3MWNkNTcxNGFjMGQzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElTaGltcy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0Jvb2xl
YW5PYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvRXJyb3IuaD4KQEAgLTY3LDkgKzY4LDggQEAKICNpbmNsdWRlIDxydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHAuaD4KICNpbmNsdWRl
IDxydW50aW1lL1JlZ0V4cE9iamVjdC5oPgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTk3OCw3ICs5NzgsNyBA
QCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1Zh
bHVlIGluKQogICAgIHJldHVybiBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiB9CiAKLXR5cGVkZWYg
VmVjdG9yPFdURjo6QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5
OwordHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk7CiAKIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKIHB1
YmxpYzoKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIFBhc3NPd25QdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1CiAgICAg
VmVjdG9yPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+ID4gd29ybGRzOwogICAgIHN0YXRpY19jYXN0
PFdlYkNvcmVKU0NsaWVudERhdGEqPihleGVjLT52bSgpLmNsaWVudERhdGEpLT5nZXRBbGxXb3Js
ZHMod29ybGRzKTsKIAotICAgIEhhc2hTZXQ8V1RGOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7Cisg
ICAgSGFzaFNldDxKU0M6OkFycmF5QnVmZmVyKj4gdmlzaXRlZDsKICAgICBmb3IgKHNpemVfdCBh
cnJheUJ1ZmZlckluZGV4ID0gMDsgYXJyYXlCdWZmZXJJbmRleCA8IGFycmF5QnVmZmVycy5zaXpl
KCk7IGFycmF5QnVmZmVySW5kZXgrKykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4gPiBuZXV0ZXJlZFZpZXdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGQzY2Q4ODA4ZDg0NmIzZTc3Yzgw
MDM1MDY2ZGU1ZjU0YzdhMDc3YzkuLjYxMTEyZTdjNjg1MDA5ZTY3NGY2MzcwNDM3ODI0YjZiMzJh
NDQ3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwogdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKLXR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxXVEY6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKK3R5cGVkZWYg
VmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKICAK
IGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCwKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgflNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSgpOwogCiBwcml2YXRlOgotICAgIHR5cGVkZWYgVmVjdG9yPFdURjo6QXJyYXlCdWZmZXJDb250
ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OworICAgIHR5cGVkZWYgVmVjdG9yPEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogICAgIHN0YXRp
YyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoSlNDOjpFeGVj
U3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3RhdGljIGJvb2wgc2VyaWFs
aXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsK
ICAgICBzdGF0aWMgUGFzc093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHRyYW5zZmVy
QXJyYXlCdWZmZXJzKEpTQzo6RXhlY1N0YXRlKiwgQXJyYXlCdWZmZXJBcnJheSYsIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDBmMjhmNmVlNTI5MmI0MjJlNDBjNWRmNjFmYWEz
YmNmNjFlMGQ1NzIuLjZkNTg5MmQ3OTU2N2YzOWZiODk2MzkwNThlMjZmYWUwMjhmY2Q3MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC0yMjYsNyArMjI2LDcgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgIH0gZWxz
aWYgKCRpc0NhbGxiYWNrICYmICRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSkg
ewogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlMke3R5cGV9LmgifSA9IDE7CiAgICAgfSBlbHNp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgICRp
bmNsdWRlc1JlZi0+eyI8d3RmLyR7dHlwZX0uaD4ifSA9IDE7CisgICAgICAgICRpbmNsdWRlc1Jl
Zi0+eyI8cnVudGltZS8ke3R5cGV9Lmg+In0gPSAxOwogICAgIH0gZWxzZSB7CiAgICAgICAgICMg
ZGVmYXVsdCwgaW5jbHVkZSB0aGUgc2FtZSBuYW1lZCBmaWxlCiAgICAgICAgICRpbmNsdWRlc1Jl
Zi0+eyIke3R5cGV9LmgifSA9IDE7CkBAIC02ODMsNyArNjgzLDcgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAKICAgICBpZiAoJGhhc1BhcmVudCAmJiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0In0pIHsKICAgICAgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAgICAgICAg
JGhlYWRlckluY2x1ZGVzeyI8d3RmLyRpbnRlcmZhY2VOYW1lLmg+In0gPSAxOworICAgICAgICAg
ICAgJGhlYWRlckluY2x1ZGVzeyI8cnVudGltZS8kaW50ZXJmYWNlTmFtZS5oPiJ9ID0gMTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siJGludGVyZmFjZU5h
bWUuaCJ9ID0gMTsKICAgICAgICAgfQpAQCAtMzYxMiw3ICszNjEyLDcgQEAgc3ViIE5hdGl2ZVRv
SlNWYWx1ZQogICAgICAgICAjIERlZmF1bHQsIGluY2x1ZGUgaGVhZGVyIHdpdGggc2FtZSBuYW1l
LgogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMkdHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsK
ICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSkgewot
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjx3dGYvJHR5cGUuaD4iLCAkY29uZGl0aW9u
YWwpIGlmIG5vdCAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpOworICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxydW50aW1lLyR0eXBlLmg+IiwgJGNvbmRpdGlv
bmFsKSBpZiBub3QgJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCR0eXBlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIkdHlwZS5oIiwg
JGNvbmRpdGlvbmFsKSBpZiBub3QgJGNvZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCR0
eXBlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKaW5kZXggODI3YjZiYWRlYjczYmU0
YmZlZmM5YjAzMTkzODZjZDQzZmIwZTM4OC4uMDE1MmY4YmQzNTRiMGE4ZDAyNDI3YWRiNGE3N2Zj
YWY5ZWVmMDQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCkBAIC0yNywxMCArMjcsMTAgQEAKICNp
bmNsdWRlICJKU0Zsb2F0MzJBcnJheS5oIgogI2luY2x1ZGUgIkpTSW50MzJBcnJheS5oIgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0NjRBcnJheS5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKaW5kZXggMWQ3ZGZkNzNlMzA0MjQ1YmI2NmYx
MWY0NTEyZmU3N2FmZDExN2Q0YS4uZjM0OWM0ZDgyMGRlY2YyMDUzMjZhYjI1MzE5N2NjM2VhZTgz
MGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKQEAgLTIzLDggKzIzLDggQEAKIAogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8
cnVudGltZS9GbG9hdDY0QXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0j
aW5jbHVkZSA8d3RmL0Zsb2F0NjRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKaW5kZXggZGNhNmE1OTFmNDI2OWU4ZDdhNTA4Zjc0ZDI4NGE1ZDlmOGNhZjljOC4uOWIw
NmJhYThjMTRjODg1ZmRmMmU1MThjZDhlZGNkMGMxNDE2NGFkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTU0
LDkgKzU0LDkgQEAKICNpbmNsdWRlICJUZXN0T2JqLmgiCiAjaW5jbHVkZSAiYm9vbC5oIgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
cnVudGltZS5jcHAKaW5kZXggZDM4MjQ2MmFjMzIwNzcwYTNhZDUwNTRjYzBlOWZmYjgwODYwZGYw
My4uYTQ4MTUxZjY0YmRiMWMwMzE3MWE4OGE5YWI3NWI5MDQwYTlhYTQ1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBAIFFWYXJpYW50
IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
dmFsdWUsIFFNZXRhVHlwCiAKICAgICAgICAgY2FzZSBRTWV0YVR5cGU6OlFCeXRlQXJyYXk6IHsK
ICAgICAgICAgICAgIGlmICh0eXBlID09IFJUVWludDhBcnJheSkgewotICAgICAgICAgICAgICAg
IFdURjo6VWludDhBcnJheSogYXJyID0gdG9VaW50OEFycmF5KHRvSlModG9KUyhjb250ZXh0KSwg
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBKU0M6OlVpbnQ4QXJyYXkqIGFyciA9IHRvVWludDhB
cnJheSh0b0pTKHRvSlMoY29udGV4dCksIHZhbHVlKSk7CiAgICAgICAgICAgICAgICAgcmV0ID0g
UVZhcmlhbnQoUUJ5dGVBcnJheShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihhcnItPmRh
dGEoKSksIGFyci0+bGVuZ3RoKCkpKTsKICAgICAgICAgICAgICAgICBkaXN0ID0gMDsKICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC03MjksNyArNzI5LDcgQEAgSlNWYWx1ZVJlZiBjb252ZXJ0UVZh
cmlhbnRUb1ZhbHVlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+
IHIKIAogICAgIGlmICh0eXBlID09IFFNZXRhVHlwZTo6UUJ5dGVBcnJheSkgewogICAgICAgICBR
Qnl0ZUFycmF5IHF0Qnl0ZUFycmF5ID0gdmFyaWFudC52YWx1ZTxRQnl0ZUFycmF5PigpOwotICAg
ICAgICBXVEY6OlJlZlB0cjxXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5PiB3dGZCeXRlQXJyYXkgPSBX
VEY6OlVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHF0Qnl0ZUFycmF5Lmxl
bmd0aCgpKTsKKyAgICAgICAgV1RGOjpSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gd3Rm
Qnl0ZUFycmF5ID0gSlNDOjpVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChx
dEJ5dGVBcnJheS5sZW5ndGgoKSk7CiAgICAgICAgIG1lbWNweSh3dGZCeXRlQXJyYXktPmRhdGEo
KSwgcXRCeXRlQXJyYXkuY29uc3REYXRhKCksIHF0Qnl0ZUFycmF5Lmxlbmd0aCgpKTsKICAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKICAgICAgICAgQVBJRW50cnlTaGlt
IGVudHJ5U2hpbShleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA2NTk4ZWZi
N2ZiNjBlM2QwNjM3ZTJkMTI3MzZiYjlhYmEyMTEwZjEyLi5mMDRmYmIyZDMzODg4MDg2YjVkZmQ4
ODI0YzRlMGZhZWYyYTlhY2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC0zNCw3
ICszNCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9B
cnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCBi
ZjhjMzNkOTZkMzg2YTkxNTk5ZTM2MGQxYTBhMDdjYjUwNjY3MTdmLi5mNjk2Nzc1YjNiOGQ1ZGMw
MjZkM2YxMjA1MGQ2YjM5YTcyOTkwOGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
UHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCmluZGV4IDdmMjEzM2RlMDhh
MWUxNDcxY2JhOWMzZGZlMGU3OTk0MDQwM2UzYTEuLmMyMGY5N2E5ZmJmM2RmOTNhMjU0YzUzYjBj
M2VhNTkwMzFjYmM5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCkBAIC00Miw2
ICs0MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKQEAgLTczLDcgKzc3LDcgQEAg
cHVibGljOgogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGU7IH0KICAgICBQYXNzUmVmUHRyPEZpbGVFcnJvcj4gZXJyb3IoKSB7IHJldHVybiBtX2Vycm9y
OyB9CiAgICAgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlYWRUeXBlOyB9Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXJSZXN1bHQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyUmVzdWx0KCkgY29uc3Q7CiAgICAgU3RyaW5nIHN0cmluZ1Jlc3VsdCgpOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCmluZGV4IDc3YzA1ZmU4MTNiNzg3MDRkYTQzZjkzY2EyYTk1MDJlNDJhMzU1ZDQuLjI0NDdj
MzBlYTUxNGFmYzhhZjIyNWI0ZWE2ZWYwNGMyMmRhNTdjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGVj
MWJkZmRiMmQ1MTI5NTdhMzgzYmU2NWFkZjFhNWZmYTk4NjlkNzguLjI0ZjFlN2YxYmRhODZhMzQ3
NzcxOGYxNzFhZjA3MmNiZWM5Zjk1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5oCkBAIC00MCw2ICs0MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xh
c3MgQXJyYXlCdWZmZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsK
QEAgLTcyLDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIAogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKLSAgICBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXJSZXN1bHQoKSBjb25zdDsKICNpZiBF
TkFCTEUoU1RSRUFNKQogICAgIFBhc3NSZWZQdHI8QmxvYj4gYmxvYlJlc3VsdCgpOwogI2VuZGlm
IC8vIEVOQUJMRShTVFJFQU0pCkBAIC0xMDUsNyArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBLVVJM
IG1fdXJsRm9yUmVhZGluZzsKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7
CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fcmF3RGF0YTsKKyAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gbV9yYXdEYXRhOwogICAgIGJvb2wgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQ7CiAK
ICAgICBTdHJpbmcgbV9zdHJpbmdSZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlclN5bmMuY3BwCmluZGV4IDc5ZTUyMDBlYTdhZmJkY2NlOTcyMmE4ZjFmZjI2NTFjMDhiNGI1
NzQuLjJkNTNhZmQxYjllNzIxOGI1MmQzMzUyODA5NjAxNjJkYjY0M2IxYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5j
bHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKICNpbmNsdWRlICJG
aWxlUmVhZGVyTG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlclN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMu
aAppbmRleCA5ZmU1YzMwMDNiNWRlNzhiMzMxMmM4YjAzZmM4ZTc3MmM5NGM0OWRkLi41MDE0MGVm
Y2RkNjBkNjU5ODU0M2ZmYzdlY2JiM2JkNzgwNmEwMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyU3luYy5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBK
U0MgeworY2xhc3MgQXJyYXlCdWZmZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQmxvYjsKQEAgLTU0LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RmlsZVJl
YWRlclN5bmMoKSB7IH0KIAotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHJlYWRBc0FycmF5
QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFBhc3NSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gcmVhZEFzQXJyYXlCdWZmZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIHJl
YWRBc0JpbmFyeVN0cmluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBTdHJpbmcgcmVhZEFzVGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9iLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCmluZGV4
IDE2MjJlMmZlNDJiMGI5M2FiOTBkODNmMWRmMWE0NzQxZmU0M2MxYmYuLjRiM2EyZWE3YWFmMTYy
OTdiNTU5OWRiOGZmMDc2NmIzY2I5OWI1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
V2ViS2l0QmxvYkJ1aWxkZXIuY3BwCkBAIC00MCw4ICs0MCw4IEBACiAjaW5jbHVkZSAiTGluZUVu
ZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaAppbmRleCAz
MzViYzc2NmRlYTVkNjJiOWU3MDQ2NzViMWZhOGQwMGY1NzJlNDdjLi5iY2NjMjc4MDIwMTJkZTMw
OTJjOTUxNWMyZmFlZmVlZGY5YzRkYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1dlYktpdEJsb2JCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJL
aXRCbG9iQnVpbGRlci5oCkBAIC0zNCw2ICszNCwxMSBAQAogI2luY2x1ZGUgIkJsb2JEYXRhLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJh
eUJ1ZmZlcjsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAvLyBGSVhNRTogTW92ZSB0aGlzIGZpbGUgdG8gQmxvYkJ1aWxkZXIuaApAQCAtNTAsOCAr
NTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoQmxvYiopOwogICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBlbmRpbmcpOwogI2lmIEVOQUJMRShC
TE9CKQotICAgIHZvaWQgYXBwZW5kKEFycmF5QnVmZmVyKik7Ci0gICAgdm9pZCBhcHBlbmQoQXJy
YXlCdWZmZXJWaWV3Kik7CisgICAgdm9pZCBhcHBlbmQoSlNDOjpBcnJheUJ1ZmZlciopOworICAg
IHZvaWQgYXBwZW5kKEpTQzo6QXJyYXlCdWZmZXJWaWV3Kik7CiAjZW5kaWYKIAogICAgIFBhc3NS
ZWZQdHI8QmxvYj4gZ2V0QmxvYihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDNhOWE2ZDkzMmM2ZjYwMjdiM2Ji
MjRiNDA1ZWQ4NGI1ZmVkYWFhZjYuLjk2MzI0OTNiYjUzZDFlYjc2M2EyZWJjYWY2Y2UxMTBmNDgz
NzVhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtODAs
MTAgKzgwLDEwIEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRpbWVSYW5n
ZXMuaCIKICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCmluZGV4IDc2MTY4NzA2M2E1
NWU1NDVmYmNkZGM2OGZiMDg5MmY0OWU0OWNhOWEuLjgwYjNlYjBjZGZiNmY4OTBhYzIwM2Q0MzZm
YjU2OGFmYTYwMjVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtMzAsOSArMzAsOSBA
QAogI2RlZmluZSBJbWFnZURhdGFfaAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUg
PHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJy
YXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhS2V5RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2
ZW50LmNwcAppbmRleCAyZjYyZGJjNDkwOWViMjNlMzFjOWM3NTc3ZjhjMjQzZTIyMjJiN2M3Li4w
M2IyNTEyZGU5OTE5MDc4OWFiMTA3NTdmZjJhODAzMDYyNjRkYjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFLZXlFdmVudC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJNZWRpYUtl
eUV2ZW50LmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQ4
QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1
ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwKaW5k
ZXggMGY3MGFmNjRkYTE3Y2YzMGQwMGY0ZGJhYWQ1ZjA5YjY5NWZmNjZmNC4uODM2MzEzN2E4YTYx
ZDY2MWZhOTlmNDQ5YWUxMGJlMDc4YWI2MTVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FycmF5QnVmZmVyLmlkbApAQCAtMjgsNyArMjgsNyBAQAogICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbCwKICAgICBDdXN0b21Db25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIGxlbmd0aCks
CiAgICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYs
CisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDLAogICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUKIF0gaW50ZXJmYWNlIEFycmF5QnVmZmVyIHsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBieXRlTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FycmF5QnVmZmVyVmlldy5pZGwKaW5kZXggM2Q2ZmFlMmE0MGU4YjUzOTlkYTFlNTdhOGE0
NDYzNWEzMDI2ZTQ0Yy4uZmM2MWE1ZTgyN2YwODZiZGUyZDNlOWNlZTJmNTNhMDM5MGYxN2ZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRsCkBA
IC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBKU05vU3RhdGlj
VGFibGVzLAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0
aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgQXJyYXlCdWZmZXJWaWV3IHsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXJyYXlCdWZmZXIgYnVmZmVyOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBjYWFlMGJhMjU2
OGU1MGUzZjZiMDZkZGIxY2Q1ZjlkNjJlMjlkZmQzLi44NTFjMDM0Y2Q3MTA4MGFhNGNiNDVjYzQz
ZTQ1YzFkNWRkMjQxNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTYyLDEwICs2MiwxMSBAQAogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhD
bGFtcGVkQXJyYXkuaD4KKwogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0RhdGFWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5o
CmluZGV4IDAwZDU2ZDhmMTg3ZjlmOTZlN2ZkMGI3NDU4YjdkMjQ4NDBiZDUwNDIuLjAwZGQ2ZTRj
YTA4OGQxZTg5NzVjNzY5ZWZjZGE4NzEyYTFjMDQyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRGF0YVZpZXcuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBEYXRhVmlld19oCiAjZGVm
aW5lIERhdGFWaWV3X2gKIAotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9G
bG9hdDMyQXJyYXkuaWRsCmluZGV4IGFjMjU4ZDU1NTYxYzVjNTljMGZkZjNlNjQzNjE5YWIzNzUy
ZDYxYWUuLjgzM2QwMTExYWFlYTk4NzI1YTYzMGU5OGVhMGIwYzQ0OTY1Y2Q4NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBA
QAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBU
eXBlZEFycmF5PWZsb2F0LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIElt
cGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgRmxvYXQzMkFycmF5IDogQXJy
YXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5U
ID0gNDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFy
cmF5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwKaW5k
ZXggZGVlNDRmNmM0MGFhNTAyZGE3MWY3OTEyMDhkNjJiZGJiNWJlNTRhZi4uYzk4YzAzMmNjMGJm
ZmNjOGU1NzgxMjM0ODdhMjEzZjYyNjMwYmExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9GbG9hdDY0QXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09i
amVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9ZG91YmxlLAot
ICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNw
YWNlPUpTQwogXSBpbnRlcmZhY2UgRmxvYXQ2NEFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAg
ICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gODsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbAppbmRleCAwNTc2NDYwZGI2MDJkYmY0Njhi
MWZjNGI5ZTZkMjdhOTI2ZTkyMWI0Li40MzNmMzZmNzI5ZGE2MmM1M2VjNjc3ZWRmOTdlODcyODk3
MzM2MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbApAQCAt
MzIsNyArMzIsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0
YW50cywKICAgICBUeXBlZEFycmF5PXNob3J0LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNl
PVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgSW50MTZB
cnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19Q
RVJfRUxFTUVOVCA9IDI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0ludDMyQXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5p
ZGwKaW5kZXggZDg2N2U2NWRkMjlkMDBkNDFlNGJhN2FiOTZmZDRkMzFhNzJlN2YwYy4uNTNhNzBi
NzI2MWRkNTFmNTU2ZjA1YmNmZDYxNmUzZGM3YTM5MWM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvSW50MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pT
T2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1pbnQsCi0g
ICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3Bh
Y2U9SlNDCiBdIGludGVyZmFjZSBJbnQzMkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBj
b25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gNDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwKaW5kZXggNmNiMjBhMTQ2ZTM2OTI0MDExZDlkODc0
YWNmYzdhNTA2ZTM5YzNiNi4uNWRiMDJhZDMyOTg5MDRhMDc1Njg0ZmQzMjEzOGVhZWI0OTFmZTNl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsCkBAIC0zMyw3ICsz
Myw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAog
ICAgIFR5cGVkQXJyYXk9c2lnbmVkIGNoYXIsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9
V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBJbnQ4QXJy
YXkgOiBBcnJheUJ1ZmZlclZpZXcgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVS
X0VMRU1FTlQgPSAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9V
aW50MTZBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5p
ZGwKaW5kZXggNzA4Y2RiMzAxNWI3MzZiZjkwZTgxNjUzNzczZjBmYzE5Zjc4ZGM4Zi4uODI5MmIz
YjlkNDIyY2U3ZmVmNTBjZGMyY2JjYzJkY2I3YzFiZmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRv
SlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PXVuc2ln
bmVkIHNob3J0LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVu
dGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgVWludDE2QXJyYXkgOiBBcnJheUJ1ZmZl
clZpZXcgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSAyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKaW5kZXggNjQzYzA5
MmRlM2FiMThhOTU4NmI2NzU4ZTY0NDZjYzNjM2FjOTg2Yy4uYjVjMDU1ZDQzMTJkOTM3ZDNjYjYz
Mzk1MTVlMjM3MWI1YWM1MjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvVWludDMyQXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQz
MkFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAg
RG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PXVuc2lnbmVkIGludCwKLSAgICBJ
bXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1K
U0MKIF0gaW50ZXJmYWNlIFVpbnQzMkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25z
dCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gNDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbAppbmRleCBkYWYzZjgwNTczMDMwZTJmODZmMWE0NTc1
YjMyOTU4OWNlMDQxNzFiLi4yNDE2YTQ3ZGY2NDhiMzc4NzIwMWU5MzhkNmM0OTA5MGM2ZmEyZWJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbApAQCAtMzMsNyAr
MzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywK
ICAgICBUeXBlZEFycmF5PXVuc2lnbmVkIGNoYXIsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3Bh
Y2U9V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBVaW50
OEFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVT
X1BFUl9FTEVNRU5UID0gMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWlu
dDhDbGFtcGVkQXJyYXkuaWRsCmluZGV4IGIxN2YxMzU3MmNlYjk1MGY1NTY3YmY4MmNjMDc3YmU0
ZmViZDBmOGYuLjVhOTk5NWU4MDgzNDg4NmVjYzQzZDczMDY5ZTlhOGQwODYyZmE3YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwKQEAg
LTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25z
dGFudHMsCiAgICAgVHlwZWRBcnJheT11bnNpZ25lZCBjaGFyLAotICAgIEltcGxlbWVudGF0aW9u
TmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZh
Y2UgVWludDhDbGFtcGVkQXJyYXkgOiBVaW50OEFycmF5IHsKICAgICBjb25zdCB1bnNpZ25lZCBs
b25nIEJZVEVTX1BFUl9FTEVNRU5UID0gMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmgKaW5kZXggMDUxMjQ1MGQ3NjJkY2FhNGUxMjliYTliNzYzMWNmMzlmOTIzYTZk
MC4uOTQ2NWI2NzRhZDg2ODA0OWUwNTQ1M2RiODRlMTcxZjMyNDIyY2FiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCkBAIC0zMCw2ICszMCwxMSBAQAogCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZl
cjsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXZWJHTEJ1ZmZlciA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CkBAIC0zOSwxMyAr
NDQsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CiAKICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRh
dGEoR0MzRHNpemVpcHRyIHNpemUpOwotICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShBcnJh
eUJ1ZmZlciopOwotICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShBcnJheUJ1ZmZlclZpZXcq
KTsKLSAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGludHB0ciBvZmZzZXQsIEFy
cmF5QnVmZmVyKik7Ci0gICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJTdWJEYXRhKEdDM0RpbnRwdHIg
b2Zmc2V0LCBBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEo
SlNDOjpBcnJheUJ1ZmZlciopOworICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShKU0M6OkFy
cmF5QnVmZmVyVmlldyopOworICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YShHQzNEaW50
cHRyIG9mZnNldCwgSlNDOjpBcnJheUJ1ZmZlciopOworICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVy
U3ViRGF0YShHQzNEaW50cHRyIG9mZnNldCwgSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKIAogICAg
IEdDM0RzaXplaXB0ciBieXRlTGVuZ3RoKCkgY29uc3Q7Ci0gICAgY29uc3QgQXJyYXlCdWZmZXIq
IGVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVy
LmdldCgpOyB9CisgICAgY29uc3QgSlNDOjpBcnJheUJ1ZmZlciogZWxlbWVudEFycmF5QnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCk7IH0KIAogICAgIC8v
IEdldHMgdGhlIGNhY2hlZCBtYXggaW5kZXggZm9yIHRoZSBnaXZlbiB0eXBlLiBSZXR1cm5zIC0x
IGlmCiAgICAgLy8gbm9uZSBoYXMgYmVlbiBzZXQuCkBAIC02OCw3ICs3Myw3IEBAIHByaXZhdGU6
CiAKICAgICBHQzNEZW51bSBtX3RhcmdldDsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9l
bGVtZW50QXJyYXlCdWZmZXI7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fZWxlbWVu
dEFycmF5QnVmZmVyOwogICAgIEdDM0RzaXplaXB0ciBtX2J5dGVMZW5ndGg7CiAKICAgICAvLyBP
cHRpbWl6YXRpb24gZm9yIGluZGV4IHZhbGlkYXRpb24uIEZvciBlYWNoIHR5cGUgb2YgaW5kZXgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCmluZGV4IGY3MTY2
YzQxOTMyZGMzNDc2ZDhiNWMyZTExYTNlYzQyZTQ0MjViMWQuLjhlMjdkM2I5YTExMjBhNzZmN2Mz
MGFjMDFlMWI4MDRiZDA2NjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMR2V0SW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJi
dWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1
ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+Ci0jaW5j
bHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWlu
dDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEdldEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCmlu
ZGV4IDdmOWIwNDI2NmEwZWE2Njc4NWIwYmM5MWI2MGZiYThlMWJmNDQ1ZTQuLjA4MjYxMmFjOWUx
Yzg3MjgxMGE4OTYxMjg2OWE1NTU3ZTc5NWZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMR2V0SW5mby5oCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0j
aW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJh
eS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
VWludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvVWludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA4ZmYwOTFiYzkyYTJiNGRiZDU0NjQyNWQyOTNmOTE4MTg2MDg0Y2Q4Li5kMWUyMTIxNzdhZDA3
ODQzYzQzYjMyZGQ1NzYxNzNmOTc5NGNkYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAK
ICNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlv
bi5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvVWludDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDk3MjNjYTc3NmIwODQ4
OWE5ZGQ2NDBhMzY1YjRhY2M2Y2FmZWQ0OGMuLjhiNWNiNjljYTk2MGVmZTAzMDc1ZjE5Y2Y2NzU2
NDBmYWQwMmYzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIKIAotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXku
aD4KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQz
MkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4
IDg4ZjNkNjBlMTY3NmUyMzE3Y2YxMzdhZGE5ZDI0NmQ2ZWVhZTdiZjcuLjFkYzNlMTJlY2E0NzBm
ZTY0YjE1NDAyOGRkYTg4Zjc2ZGMwMTU1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQAogI2luY2x1
ZGUgIlNjcmlwdEdDRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1
ZGUgIlN0eWxlZEVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25Db3B5aW5nU29ydC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcAppbmRleCBhZTQxNmVlMTc3N2VlODYzOWJmYWZlMDhj
YjQ3NDZjNTdiZmYzNWNhLi5mMGU0YjVkYThiY2YyODg5ZmUxMzgyYTY3MjQxYzBjMjY0MWI2MTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIgotI2lu
Y2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NyeXB0by5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaAppbmRleCAxNzI1YWY4NmVi
MjFhNDgxNjRkNzBkOGFmZTJiYWI2MWZjYzMwMjMwLi44NjU1MmJjNjEwNWJlY2FhNmNjMjZiNWM1
YzhjNzYyM2M0NzVhMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgKQEAgLTM0LDYgKzM0LDEwIEBACiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwpAQCAtNDIsNyArNDYsNyBA
QCBjbGFzcyBDcnlwdG8gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRl
ZDxDcnlwdG8+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG8+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG8oKSk7IH0KIAotICAgIHZvaWQgZ2V0UmFu
ZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGdl
dFJhbmRvbVZhbHVlcyhKU0M6OkFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKIAog
cHJpdmF0ZToKICAgICBDcnlwdG8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCA1YTI0OGQwYTVjNzMxMmVl
ZTFiYzcxYjQyN2Y0Zjg1YjAwNDZkZTY4Li42MTEwNTZkZDc5NzM2NGM3YjE2NDIyMjRiZGY3NWJi
YzBlYTg3ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0RORU9OLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZl
clZpZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXgg
ODcxZDdjMDU1NTBlOTg1OWQwYzFhZmE3NjM0OGIxNTA1NTY3MThiNC4uZGM4YzY0MzdhZDgzMzIx
MGFkMTFkNWEyNTllNDA0ZWFmY2RhMDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zOSwxMSArMzksMTEgQEAKICNpbmNsdWRlICJH
cmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiSW1hZ2VC
dWZmZXJEYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDFlMmI4OGM1ZWZl
YTQ1NjU3OGNiODMxYTM4NzRjYmQ5NGUxYzM2NjEuLjRhZjQ5MTZlY2JmYzJiZDc0MTNiYzA4MDU5
NmUyMWZiN2ZlZGFhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNDcsMTAgKzQ3LDEw
IEBACiAjaW1wb3J0ICJXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
cnVudGltZS9VaW50MTZBcnJheS5oPgorI2ltcG9ydCA8cnVudGltZS9VaW50MzJBcnJheS5oPgor
I2ltcG9ydCA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUu
aD4KLSNpbXBvcnQgPHd0Zi9VaW50MTZBcnJheS5oPgotI2ltcG9ydCA8d3RmL1VpbnQzMkFycmF5
Lmg+Ci0jaW1wb3J0IDx3dGYvVWludDhBcnJheS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVy
RGF0YUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvSW1hZ2VCdWZmZXJEYXRhQmxhY2tCZXJyeS5oCmluZGV4IDhkYTMzMGU5MzAyMDc0ZTYz
ZDNhZjg0YTI0ZjEzYWQ1ZGU1MDQyMjguLjhhODVhZmRhOWNmYTE2OTk3MGQ0MDZlZGMxNGJkYzY0
YTNlZjc1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvSW1hZ2VCdWZmZXJEYXRhQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW1hZ2VCdWZmZXJEYXRhQmxhY2tCZXJyeS5o
CkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGlj
cy5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUd1YXJkZWRQb2ludGVyLmg+Ci0jaW5j
bHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OENs
YW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCmluZGV4
IDhlNjFlZGZmOWM4NmNmY2ZhNDFhYjczMzE4ZDk2OTkzZGFjMjE5ZDIuLjc5M2ViN2JjODlhMGMz
Yjg4YTNhYmRjOWZiNzgxMDhkODgxNDIyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaApAQCAtMjUsMTAgKzI1
LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSA8cnVudGltZS9VaW50
OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBVU0Uo
Q0EpICYmIChQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA3MCkpCiAjZGVmaW5lIFdURl9VU0VfSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuY3BwCmluZGV4IGJmNTI3ZmY1M2I2MzE2N2MyYjg1YTE1ZWY0M2QyNDBlNjY3NDZmNmEu
LjgxNDUzOTBiODE0M2Y4N2Q3OTIzMjcyZGNlOGU2NmRlYjVhMWIwNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNs
dWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIHR5cGVkZWYgdW5zaWduZWQgY2hh
ciAoKkJsZW5kVHlwZSkodW5zaWduZWQgY2hhciBjb2xvckEsIHVuc2lnbmVkIGNoYXIgY29sb3JC
LCB1bnNpZ25lZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hhciBhbHBoYUIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmNwcAppbmRleCBiZGY1NTUyYWUxODk4MTA0M2Y1MjYyYjg0YjkyMGMyMjcxY2ZjMmZh
Li40ZDUyZjhmNTdjNzhhNjcyMmZjNGZhNjQxZjZmYzZkYjZiZWI3NDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0Lmgi
CiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1w
ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5z
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b25lbnRUcmFuc2Zlci5jcHAKaW5kZXggMjI5NDQyNmRlZjljZTE1YTY0MTM1OTIwZjY2M2YxYWE0
Y2VlMmQyZC4uZTQ5NGIwOGJkMWYwNjZjZjAyZDk5MTAyNzU2ZTEwNzljMjViZjlkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAi
UmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUg
PHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFt
cGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4
IDI3ZTczYWE5Y2Y1NzUxMGU0MzJiNDQ4NTk3YWU0ZmI5MWM2MTkzYTAuLjA2MjkxZTc5YjI3YTM4
NzM0NDc0ZmNkMTMxNGVmYmQxYTVhZTdjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmNwcAppbmRleCBmYWQ5MmM5NWExZjUwZTQwY2YxNTMwNzg2Y2JjZWY2
NTVkOGJkNzRhLi43Mzk2OGQ4OGI5ZjZjNmJmYzg4ZTNlYjcyNjQ3ODRiYWNjMmE4OTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJSZW5k
ZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCisjaW5jbHVkZSA8cnVu
dGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4K
LSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IGMyMmY1MGVmOTAxMDljMjgwYWJjZGZiYTQ2
NzRhODg0OGY3NzQ3Y2QuLmM0MzA2YzBmYTE0YTgyNDQzYTM5NDJkODVjMzdiYWIwMmZmMzBjYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
dXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0
Zi9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJy
YXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
CmluZGV4IDAyNWZmNjVhYzNhODZjMzcyOWNkN2UwNWVjMzQxOTBiYjA4N2JiYTUuLjhlYjU2NDBl
MjhiYzZlYWIyZTViYjFhYThkOWIyZTY1YWZhNTE2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRN
YXAuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgog
I2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJh
eS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggYzFlZmEyYWRlYWY2NTAyZjY2ODEw
MTA2MWFmOGU1NTY5ZDIzNGRjOC4uMDk3N2RkMmVmNzVlYmI2YjQ2OWY5YzRkMjQyZDAyYjA1OWQz
OWQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIlJl
bmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCiAjaW5jbHVkZSAiVGV4
dFN0cmVhbS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5o
PgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4IDQ0
NmUyNWExMGM1ZTYzNDc1YTVlNDBhNDc0ZWRkZTRhMjNiNmM4NGUuLjYxYmEzMDJhNGFjZWQ4MTdl
OTQzODk2NTU4YmI1M2M4YzhlYjJjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC0zMyw5
ICszMyw5IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRT
dHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KLSNp
bmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TGlnaHRpbmcuaAppbmRleCBiNDBiYjEzMDkwYWJmMzEyNzY0ODkxMzc2OTY3Nzg2M2ViMGRlYjhl
Li5lYjc5YmJkYmNiNTRiMDVjMzhhMTk4NDJiMDUwNzU3NDcwMjQwODJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApA
QCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkxpZ2h0U291cmNlLmgiCiAjaW5jbHVkZSAiUG9p
bnRMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlNwb3RMaWdodFNvdXJjZS5oIgotI2luY2x1ZGUg
PHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVk
QXJyYXkuaD4KIAogLy8gQ29tbW9uIGJhc2UgY2xhc3MgZm9yIEZFRGlmZnVzZUxpZ2h0aW5nIGFu
ZCBGRVNwZWN1bGFyTGlnaHRpbmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCmluZGV4IDllNzIwZjc0YWNl
Yjk3ODk3MWY0MmYxZTk1MTUzNzM4ZDJmNWNkMjguLjZiMDI4ZWUzOTM3NjkyOWRkZWViN2YzNGFj
MTQyNzgyNmZkMmU2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNp
bmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCisj
aW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXJh
bGxlbEpvYnMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIHN0ZDo6bWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4
IDE3Njg4NzQ2ZjZmOWU0NDYyNzFhNDFmY2IxZTI1MTExZWFkMWM1YTUuLmM0YmQ5Nzk1ZDZjZWQ4
MzNkNGU3ZmI2OWZlM2IxYzVhYzk3NGZmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTMxLDkg
KzMxLDkgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0
cmVhbS5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcAppbmRleCA1ZGQwNjVkOThkYTdjNzlmNWM5YjdiMTc5OGZkMDAxMTdi
M2E3Y2I1Li5mMWI0NWQ2OTcxMTMyYmM4ZGVkNDQ5ZDEwOGUxYjVlNGE2MGJkNDFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCi0jaW5jbHVkZSA8
d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRB
cnJheS5oPgogCiAjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQogI2luY2x1ZGUgPGFybV9u
ZW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAyOTY0NjFmOWYxOTc0Yjg4OWMyM2ZkODIzNmFmODY3
YWQ1MmVjYWNlLi5jZGM3YTUwMTJlZjc4Y2ZhYzFiNWVkYmQxNWExOGM5ODI4NWNiOGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmgKQEAgLTI3LDEwICsyNywxMSBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJy
YXkuaD4KKwogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xh
bXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKE9QRU5D
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQppbmRleCAyNjEzYWFhYTg2NDJlOTg1YTZiOTM3NmNj
MjQ0Njk1OTA3ODQ3MDMxLi5jMmM0M2U5NDYwMTgxNzJjM2JmNjk0Y2U2Mzk2NmVkYWNmNDk4OWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCkBAIC00MywxMSArNDMsMTEgQEAKICNpbmNsdWRl
IDxPcGVuR0wvZ2wuaD4KICNpbmNsdWRlICJXZWJHTExheWVyLmgiCiAjaW5jbHVkZSAiV2ViR0xP
YmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3
dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggOWQ0NmE0YzNkZTBh
MDgzZTE4ODkwMWFiNWUyNmEwNDQwZTdlZTA0OS4uNjkwMmI2MTM1ZWZiMWE1ZjZlMDU4ZDAzOTNm
ZGIzY2FjODc3OWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCkBAIC00NCwxMyArNDQsMTMgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNs
dWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1
ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKICNpZiBVU0UoT1BFTkdMX0VTXzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApp
bmRleCBkNGRjMjQwMWViOWI3ZjdiNmJmODJhYTdjODBlMWMwNjE4MWYwYjE5Li5kMWI0Yjk3OTc3
Mjc2MDE5NTE5YjM2N2Y5MjE5MzFkMTE2ODc0MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUg
Ik5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3Rm
L0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCmluZGV4IDNlNmJmOGExNGNiNTQ4Yzkz
OWEzNmFjNzkwZjQ2YjcyZTU0NTY5MmIuLjJhNzA5NWRiNTFiMWQxN2JhODAwYmM0MjE2NjI3YjAz
MTkyMDYzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmNwcApAQCAtMzAsNyArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ0RNLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgotI2luY2x1
ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggMDllN2ZlNTgyNTJmOTE5Yjg2NzBkZTFkOGFmZGFlMTlmYjY3M2NmZi4uNGJjMDU5NmU3
OGNlMDAxYzk2ZTk0MDdhYzA3MDI5MmQ0NTUxYmE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVz
dFVwbG9hZC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+
CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxy
dW50aW1lL09wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDFjZDc2
YmNkZDQ5MDUyYjg4MDU4ZDhhZTNmMDNhYzVhMzZhOTM2ZGEuLjZhZmZmMzdlYTZjYjRkMDUxMDAx
Y2FmY2Y5YWIyYWVkMDUyYTlhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBA
IC0zNSw2ICszNSwxMSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK25hbWVzcGFjZSBKU0Mgewor
Y2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKQEAgLTkxLDggKzk2LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2VuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5k
KEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKERPTUZvcm1EYXRhKiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgc2VuZChKU0M6OkFycmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c2VuZChKU0M6OkFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFi
b3J0KCk7CiAgICAgdm9pZCBzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgb3ZlcnJp
ZGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKQEAgLTEyMCw4ICsxMjUsOCBAQCBw
dWJsaWM6CiAgICAgUmVzcG9uc2VUeXBlQ29kZSByZXNwb25zZVR5cGVDb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZVR5cGVDb2RlOyB9CiAgICAgCiAgICAgLy8gcmVzcG9uc2UgYXR0cmli
dXRlIGhhcyBjdXN0b20gZ2V0dGVyLgotICAgIEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVm
ZmVyKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBBcnJheUJ1ZmZlciogb3B0aW9uYWxSZXNwb25zZUFy
cmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUFycmF5QnVmZmVyLmdldCgpOyB9
CisgICAgSlNDOjpBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlcihFeGNlcHRpb25Db2Rl
Jik7CisgICAgSlNDOjpBcnJheUJ1ZmZlciogb3B0aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUFycmF5QnVmZmVyLmdldCgpOyB9CiAKICAgICB2b2lk
IHNldExhc3RTZW5kTGluZU51bWJlcih1bnNpZ25lZCBsaW5lTnVtYmVyKSB7IG1fbGFzdFNlbmRM
aW5lTnVtYmVyID0gbGluZU51bWJlcjsgfQogICAgIHZvaWQgc2V0TGFzdFNlbmRVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpIHsgbV9sYXN0U2VuZFVSTCA9IHVybDsgfQpAQCAtMjIyLDcgKzIyNyw3IEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVu
dDsKICAgICAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cjsKLSAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9yZXNwb25zZUFycmF5QnVmZmVy
OworICAgIG11dGFibGUgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmVzcG9uc2VBcnJheUJ1
ZmZlcjsKIAogICAgIGJvb2wgbV9lcnJvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208144</attachid>
            <date>2013-08-05 13:23:07 -0700</date>
            <delta_ts>2013-08-05 14:31:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119489-20130805132309.patch</filename>
            <type>text/plain</type>
            <size>286764</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTJkNjNhZGQ3NjI5YjQyNjhjOTkzNGEwM2YzZGNjYjdlYzRlNzUzLi5hZWRlMzc1NmZmOWQ2YmJh
YmNiYWY2ODBkNmI4ZWRjOTUwOTViYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQyBpbiBhZHZhbmNlIG9mIHJlLWltcGxlbWVudGF0aW9u
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEpTQ1R5cGVkQXJy
YXlTdHVicy5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Ojp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjphZGRWaWV3KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmguCisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpkYXRhKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM6OmNvcHlUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjppc05ldXRlcmVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6On5BcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZSk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpzbGljZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp+
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaC4KKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJhc2VBZGRyZXNz
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXROZXV0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojppc05ldXRlcmFibGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeVN1YlJhbmdlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojpz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6CisgICAgICAg
ICogcnVudGltZS9GbG9hdDMyQXJyYXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0Zs
b2F0MzJBcnJheS5oLgorICAgICAgICAoSlNDOjpGbG9hdDMyQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OkZsb2F0MzJBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OkZsb2F0MzJBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpGbG9hdDMyQXJyYXkpOgorICAgICAg
ICAoSlNDOjpGbG9hdDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0Zsb2F0
NjRBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmguCisg
ICAgICAgIChKU0M6OkZsb2F0NjRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFycmF5OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheSk6CisgICAgICAgIChKU0M6OkZsb2F0NjRB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSW50MTZBcnJheS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oLgorICAgICAgICAoSlNDOjpJbnQxNkFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkludDE2QXJyYXk6OkludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpJbnQxNkFycmF5OjpzdWJh
cnJheSk6CisgICAgICAgICogcnVudGltZS9JbnQzMkFycmF5Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9JbnQzMkFycmF5LmguCisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OmdldFR5
cGUpOgorICAgICAgICAoSlNDOjpJbnQzMkFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJ
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50MzJBcnJh
eTo6SW50MzJBcnJheSk6CisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OnN1YmFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL0ludDhBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYv
SW50OEFycmF5LmguCisgICAgICAgIChKU0M6OkludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAg
IChKU0M6OkludDhBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpJbnQ4QXJyYXkpOgor
ICAgICAgICAoSlNDOjpJbnQ4QXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTo6SW50ZWdyYWxU
eXBlZEFycmF5QmFzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QmFzZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6
VHlwZWRBcnJheUJhc2U6OmRhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c2V0
KToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OnNldFJhbmdlKToKKyAgICAgICAgKEpT
Qzo6VHlwZWRBcnJheUJhc2U6Onplcm9SYW5nZSk6CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlC
YXNlOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlCYXNlOjppdGVtKToKKyAgICAgICAgKEpTQzo6VHlw
ZWRBcnJheUJhc2U6OmNoZWNrSW5ib3VuZERhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5
QmFzZTo6VHlwZWRBcnJheUJhc2UpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c3ViYXJyYXlJbXBsKToKKyAgICAgICAg
KEpTQzo6VHlwZWRBcnJheUJhc2U6Om5ldXRlcik6CisgICAgICAgICogcnVudGltZS9VaW50MTZB
cnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaC4KKyAgICAg
ICAgKEpTQzo6VWludDE2QXJyYXk6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJheTo6VWludDE2QXJyYXkpOgorICAgICAgICAo
SlNDOjpVaW50MTZBcnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDMyQXJy
YXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQzMkFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6OlVpbnQzMkFycmF5KToKKyAgICAgICAgKEpT
Qzo6VWludDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL1VpbnQ4QXJyYXku
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaC4KKyAgICAgICAgKEpT
Qzo6VWludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpVaW50OEFycmF5OjpVaW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6VWludDhB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6Onpl
cm9GaWxsKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheSk6CisgICAgICAgIChK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDEzLTA4LTAyICBDaHJpcyBDdXJ0aXMgIDxjaHJpc19jdXJ0aXNAYXBwbGUuY29tPgog
CiAgICAgICAgIEdpdmUgdGhlIGVycm9yIG9iamVjdCdzIHN0YWNrIHByb3BlcnR5IGFjY2Vzc29y
IGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGJmODMyMDM2MTFkYzM4ZWYwMzFkNGQwMWQwM2NjYTEzNzNlZTQw
YWYuLmVkYTAyMWI3N2MxODU3NDIwMzFmNDVlMGQ4ZjAwNGY4MDdmZDdiMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBUeXBlZEFycmF5
IGltcGxlbWVudGF0aW9uIGZyb20gV1RGCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0
Zi9Gb3J3YXJkLmg6CisKIDIwMTMtMDgtMDIgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBhIGJ1bmNoIG9mIHJlZHVuZGFudCBjaGVja3Mg
Zm9yIGVtcHR5IHN0cmluZyBpbiBTdHJpbmdJbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5NmYzMzc4YWE5
YzI3ZDJjNzI3MjVjYTY0YzU3MDcwNDM0NmQwNy4uMTI2Yzk3Y2I3YTA5YzhkZWE0MTg1ZjljOGNi
MzhmNjI5YWU3NmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxMy0wOC0wNSAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYkNvcmUgZm9yIG5ldyBsb2NhdGlvbiBvZiBUeXBl
ZEFycmF5IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9BcnJheUJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0Zsb2F0NjRBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0ludDE2QXJyYXkuaDogQWRkZWQuCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9JbnQzMkFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50OEFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IEFkZGVk
LgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDE2QXJyYXkuaDogQWRk
ZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaDog
QWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENsYW1wZWRB
cnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5o
OgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRGbG9hdEZyZXF1ZW5jeURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEJ5dGVUaW1lRG9tYWluRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9EYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyUHJvY2Vzc29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmg6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1
ZmZlclZpZXdIZWxwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRmlsZVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRy
YW5zZmVyQXJyYXlCdWZmZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEFkZEluY2x1ZGVzRm9yVHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZl
bnQuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyU3luYy5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5o
OgorICAgICAgICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAqIGZp
bGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXIuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FycmF5QnVmZmVyVmll
dy5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9EYXRhVmlldy5oOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0Zsb2F0MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQ4QXJy
YXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWlu
dDhBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRs
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTEJ1ZmZlcjo6ZWxlbWVudEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0NyeXB0by5j
cHA6CisgICAgICAgICogcGFnZS9DcnlwdG8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b3B0
aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKToKKwogMjAxMy0wOC0wMyAgWW9hdiBXZWlzcyAgPHlv
YXZAeW9hdi53cz4KIAogICAgICAgICBQcmVsb2FkU2Nhbm5lciBwcmVsb2FkcyBleHRlcm5hbCBD
U1Mgd2l0aCBub24tbWF0Y2hpbmcgbWVkaWEgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggYTgzYmQxYmM3YWE3YzVmYjRkY2M4Zjk2YjRlMDdiYzdjZDdlOTEw
ZS4uODVkMTdlZDdhNzZiY2I4NDQxMWI0M2ZmYzYwMTQyN2Q0OTJiNGI3OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjY0LDYgKzI2NCw4IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCiAgICAgcHJvZmlsZXIv
TGVnYWN5UHJvZmlsZXIuY3BwCiAKKyAgICBydW50aW1lL0FycmF5QnVmZmVyLmNwcAorICAgIHJ1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogICAgIHJ1bnRpbWUvQXJnTGlzdC5jcHAKICAgICBy
dW50aW1lL0FyZ3VtZW50cy5jcHAKICAgICBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDBmOWVlY2I1ZGNl
ZjVlMDY2OTZkZDJmZGE1Mjc0Yzc4NDkxODcxZWQuLjIwYjMwZGI4YjJiMjNiMzBmN2FhY2YyNWFi
ZGM0ODI4ZmFmODBhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zMiw3ICszMiw3IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAKIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAotICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJU2hpbXMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaCBcCkBAIC02NDMsNiArNjQzLDEwIEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29udmVudGlvbnMuaCBcCkBAIC03MDQsNiArNzA4LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmxvYXQ2NEFycmF5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIFwKQEAgLTcyMiw2ICs3MjgsMTAgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
ZXhpbmdUeXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXku
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCkBAIC04ODEsOCAr
ODkxLDEzIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHJh
Y2luZy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5RGVzY3JpcHRvci5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZBcnJheS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJhY3Rpb24uaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VaW50OENsYW1wZWRBcnJheS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTVN0YWNrQm91bmRzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNo
ZG9nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKaW5kZXggZDdhYzFlZjcy
ZWNhYzZhMmU2ZGM3MjgzYTc4MWU1YWJlNTViZjcyMS4uMzkzZTEyMWIyYmZmNzAwOGQ4N2IyMzA5
YzdkZTkzZTcxYjhmNjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5
cGVkQXJyYXlTdHVicy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5
U3R1YnMuaApAQCAtMjYsMTkgKzI2LDIwIEBACiAjaWZuZGVmIEpTQ1R5cGVkQXJyYXlTdHVic19o
CiAjZGVmaW5lIEpTQ1R5cGVkQXJyYXlTdHVic19oCiAKKyNpbmNsdWRlICJGbG9hdDMyQXJyYXku
aCIKKyNpbmNsdWRlICJGbG9hdDY0QXJyYXkuaCIKKyNpbmNsdWRlICJJbnQxNkFycmF5LmgiCisj
aW5jbHVkZSAiSW50MzJBcnJheS5oIgorI2luY2x1ZGUgIkludDhBcnJheS5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNp
bmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+CisjaW5jbHVkZSAiVWludDE2QXJyYXkuaCIKKyNp
bmNsdWRlICJVaW50MzJBcnJheS5oIgorI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRl
ICJVaW50OENsYW1wZWRBcnJheS5oIgorCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvSW50MTZBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5j
bHVkZSA8d3RmL0ludDhBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MTZBcnJheS5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+Ci0j
aW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYmVmMTRlYTQzYzZl
OThiZjdiNmE5Mzk4MGM0OGM3YzQzMDVjN2M1OS4uMDFkYTVkZjljOGUyYjlhOWVmMjM1MDYzNDkz
OTVlMWVmNjc1ZTA4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBA
IC00MTAsNiArNDEwLDggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHByb2ZpbGVyXFBy
b2ZpbGVyT1NSRXhpdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccHJvZmls
ZXJcUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccHJvZmlsZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlclZpZXcuY3BwIiAvPg0KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJnTGlzdC5jcHAiIC8+DQogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcmd1bWVudHMuY3BwIiAvPg0KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlDb25zdHJ1Y3Rvci5jcHAiIC8+DQpAQCAtNzcw
LDYgKzc3Miw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxl
ck9TUkV4aXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9m
aWxlck9TUkV4aXRTaXRlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccHJvZmls
ZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlCdWZmZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQXJnTGlzdC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcQXJndW1lbnRzLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxBcnJheUNvbnN0cnVjdG9yLmgiIC8+DQpAQCAtODA1LDYgKzgwOSw4IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4Y2VwdGlvbkhlbHBlcnMuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4ZWN1dGFibGUuaCIgLz4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4ZWN1dGlvbkhhcm5lc3MuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZsb2F0MzJBcnJheS5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRmxvYXQ2NEFycmF5LmgiIC8+DQogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkNvbnN0cnVjdG9yLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3RvdHlwZS5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR0NBY3Rpdml0eUNhbGxiYWNr
LmgiIC8+DQpAQCAtODE0LDYgKzgyMCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEluZGV4aW5nSGVhZGVySW5saW5lcy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbml0aWFsaXplVGhyZWFkaW5nLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJbnQxNkFycmF5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxJbnQzMkFycmF5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbnQ4QXJyYXkuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5oIiAvPg0KQEAgLTkwMiw3ICs5MTEsMTAg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFRyYWNpbmcuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVkQXJyYXlEZXNjcmlwdG9yLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MTZBcnJheS5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDE2V2l0aEZyYWN0aW9uLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MzJBcnJheS5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDhBcnJheS5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdhdGNoZG9nLmgiIC8+DQogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXZWFrR0NNYXAuaCIgLz4NCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZjg2ZDJlNzRiYzFjYThjOGIx
MGQ1NGQzM2JjY2M4YjViMmZiYTI0Yi4uYTdjYmZiMjBkOWJjYzZjN2QxNjYxMjk2YjQyNzllNGQ5
MDMyMDBmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwpAQCAtNDQ0LDYgKzQ0NCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cHJvZmlsZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAiPg0KICAgICAgIDxGaWx0ZXI+
cHJvZmlsZXI8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEFyZ0xpc3QuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAg
ICAgPC9DbENvbXBpbGU+DQpAQCAtMTQ2MCw2ICsxNDY2LDM2IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmgiPg0KICAgICAg
IDxGaWx0ZXI+cHJvZmlsZXI8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVy
Pnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5oIj4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEZsb2F0MzJBcnJheS5oIj4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZsb2F0NjRB
cnJheS5oIj4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludDE2QXJyYXkuaCI+DQorICAg
ICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQzMkFycmF5LmgiPg0KKyAgICAgIDxGaWx0ZXI+d3Rm
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSW50OEFycmF5LmgiPg0KKyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWludDE2
QXJyYXkuaCI+DQorICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MzJBcnJheS5oIj4NCisg
ICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFVpbnQ4QXJyYXkuaCI+DQorICAgICAgPEZpbHRlcj53
dGY8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxBcmdMaXN0LmgiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0K
ICAgICA8L0NsSW5jbHVkZT4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViOTk2
M2M5MWFkNDY3MThlODgyNGU4Y2NiYjNkNjAyNjdmNTY0ZjUuLjk0MzY2MDU1YzQwNTU4ZmM1Y2U3
N2E4ZmJjYWRkMTMxYWNkNGUzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
MTQsNiArODE0LDIxIEBACiAJCUE3QTRBRTBEMTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic01J
UFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTRB
RTA5MTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic01JUFMuaCAqLzsgfTsKIAkJQTdBNEFFMEYx
Nzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzU0g0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwQjE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1
YnNTSDQuaCAqLzsgfTsKIAkJQTdBNEFFMTAxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzWDg2
Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0E0QUUwQzE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1YnNYODZDb21tb24uaCAqLzsgfTsKKwkJ
QTdBOEFGMzQxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI1MTdBREI1RjIwMDVBQjE3
NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi87IH07CisJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAv
KiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGMzYxN0FEQjVG
MzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCAqLzsgfTsKKwkJQTdBOEFGMzcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5
QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdBOEFGMjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjM4MTdBREI1
RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
N0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQg
LyogRmxvYXQ2NEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkIxN0FEQjVG
MzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYy
QzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJ
bnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0E4QUYyRDE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNEMTdBREI1RjMwMDVB
QjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyRTE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdy
YWxUeXBlZEFycmF5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE3QThBRjNFMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5QmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkYx
N0FEQjVGMzAwNUFCMTc0IC8qIFR5cGVkQXJyYXlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGM0YxN0FEQjVGMzAwNUFCMTc0IC8q
IFVpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGNDAxN0FEQjVGMzAw
NUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFt
cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjMyMTdBREI1RjMwMDVB
QjE3NCAvKiBVaW50MTZBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUE3QThBRjQyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMzMx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdCNDhGNDkwRUU4OTM2RjAwRENCREI2IC8qIEV4
ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwICovOyB9OwogCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNy
b3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjRB
Q0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJB
MyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29kZUJs
b2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTE5MDEsNiArMTkxNiwyMSBAQAogCQlBN0E0QUUwQzE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1
YnNYODZDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YnNY
ODZDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdBN0VFNzQxMUI5OEI4
RDAwNjVBMTRGIC8qIEFTVEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVNUQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0E3RUU3NzEx
Qjk4QjhEMDA2NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTeW50YXhDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5
QnVmZmVyVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI4MTdB
REI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXJyYXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQ2NEFycmF5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50OEFycmF5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQx
NkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDE2QXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkQxN0FEQjVGMzAwNUFCMTc0IC8q
IEludDMyQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50MzJBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyRTE3QURCNUYzMDA1QUIx
NzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5QmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYzMDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50OEFycmF5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50
OENsYW1wZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50OENs
YW1wZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYzMjE3QURC
NUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVWludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFG
MzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVpbnQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RXhlY3V0YWJsZUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4cG9ydE1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjIwNyw5ICsyMjM3LDkgQEAKIAkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhC
IC8qIFByb2R1Y3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
ICovLAogCQkJCTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgKi8sCiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKLQkJCQkw
RkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAog
CQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJG
MEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJC
MTAxRCAvKiB0ZXN0UmVnRXhwICovLApAQCAtMjc5NSwxMiArMjgyNSwxNCBAQAogCQk3RUY2RTBC
QjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNjU1M0EzMkYxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNs
b3dQYXRoc0V4Y2VwdGlvbnMuY3BwICovLAotCQkJCTY1NTNBMzMwMTdBMUYxRUUwMDhDRjZGMyAv
KiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAw
QjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAv
KiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50
cy5jcHAgKi8sCiAJCQkJQkMyNTdERTYwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5oICov
LAorCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCisJ
CQkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggKi8sCisJCQkJQTdB
OEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8sCisJCQkJQTdB
OEFGMjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovLAogCQkJCUJDNzk1
MjA2MEUxNUU4QTgwMEE4OThBQiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzc5
NTIwNzBFMTVFOEE4MDBBODk4QUIgLyogQXJyYXlDb25zdHJ1Y3Rvci5oICovLAogCQkJCTBGQjdG
Mzg5MTVFRDhFMzgwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25zLmggKi8sCkBAIC0yODI5LDYg
KzI4NjEsOCBAQAogCQkJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlm
aWVycy5oICovLAogCQkJCUE3MDlGMkYxMTdBMEFDMkEwMDUxMkU5OCAvKiBDb21tb25TbG93UGF0
aHMuY3BwICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0
aHMuaCAqLywKKwkJCQk2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhz
RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJNjU1M0EzMzAxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1v
blNsb3dQYXRoc0V4Y2VwdGlvbnMuaCAqLywKIAkJCQlBN0U1QTNBNTE3OTc0MzJEMDBFODkzQzAg
LyogQ29tcGlsYXRpb25SZXN1bHQuY3BwICovLAogCQkJCUE3RTVBM0E2MTc5NzQzMkQwMEU4OTND
MCAvKiBDb21waWxhdGlvblJlc3VsdC5oICovLAogCQkJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4
MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKQEAgLTI4NjAsNiArMjg5NCw4IEBACiAJCQkJODZDQTAz
MkQxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuY3BwICovLAogCQkJCTg2Q0FGRUUyMTAz
NURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi8sCiAJCQkJMEYyMUMyN0ExNEJFNzI3MzAw
QURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKKwkJCQlBN0E4QUYyOTE3QURCNUYzMDA1
QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0
IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIg
LyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTBGQjRCNTIxMTZCNjI3OEQwMDNGNjk2
QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAqLywKQEAgLTI4NzgsNiArMjkxNCwxMCBA
QAogCQkJCTBGQjdGMzhGMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCAqLywKIAkJ
CQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8s
CiAJCQkJRTE3ODYzM0YwRDlCRUMwMDAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCAq
LywKKwkJCQlBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAorCQkJ
CUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFG
MkIxN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovLAorCQkJCUE3QThBRjJFMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8sCiAJCQkJQTc4ODUzRjcx
Nzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCUE3
ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8sCiAJ
CQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVuY3Rpb24uY3BwICovLApA
QCAtMzAzNSw4ICszMDc1LDEzIEBACiAJCQkJMTRBMzk2QTYwQ0QyOTMzMTAwQjVCNEZGIC8qIFN5
bWJvbFRhYmxlLmggKi8sCiAJCQkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcu
ZCAqLywKIAkJCQk1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovLAorCQkJ
CUE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5QmFzZS5oICovLAogCQkJCTBG
RUIzRUNCMTYyMzdGNDcwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVzY3JpcHRvci5oICovLAorCQkJ
CUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovLAogCQkJCTg2Njcz
OUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLywKKwkJCQlBN0E4
QUYzMzE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYzMDE3
QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICovLAorCQkJCUE3QThBRjMxMTdBREI1RjMw
MDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJCUUxOEUzQTU3MERGOTI3OEMw
MEQ5MEIzNCAvKiBWTS5jcHAgKi8sCiAJCQkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZN
LmggKi8sCiAJCQkJRkU2NjE3MjcxNzc0RTAzNTAwNDk1QjAwIC8qIFZNU3RhY2tCb3VuZHMuaCAq
LywKQEAgLTM0ODEsNiArMzUyNiw4IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8q
IEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAz
NTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlD
MUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBN0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTUxNUVEOEU0NjAwRjE2N0IyIC8qIEFy
cmF5Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZB
NTk3QyAvKiBBcnJheVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzUxOSw2ICszNTY2LDcg
QEAKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21tb25JZGVudGlmaWVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU1M0EzMzIxN0ExRjFFRTAwOENGNkYzIC8q
IENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTM5
MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdFNUEzQTgxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tcGxldGlvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNjc1LDYgKzM3MjMsOCBAQAogCQkJCTBGMjFDMjdDMTRCRTcyNzYw
MEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4
NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4
M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkRCMkNDOTE3M0RBNTIwMDA3QjNDMUIgLyogRlRMQWJicmV2
aWF0ZWRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMDgxNzA1MTNEQjAwQkI3MjJD
IC8qIEZUTEFiYnJldmlhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTFEMTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzczNyw2
ICszNzg3LDEwIEBACiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTAwRTE2RjVDRDAwQjM0NDYwIC8qIEluaXRp
YWxpemVUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYx
RjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0IxN0FEQjVG
MzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNDMTdB
REI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYz
QTE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4
QUYzRDE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc4ODUzRkExNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJl
Q2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzk3MSw3ICs0MDI1LDYg
QEAKIAkJCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0
ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFy
c2VBcnJheVZhbHVlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1
NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNjU1M0Ez
MzIxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0
ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyog
U3RhY2tJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC00MDAxLDYgKzQwNTQsNyBAQAogCQkJ
CUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVENTM3MjZGMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFjaW5nLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzRTE3QURCNUYzMDA1QUIxNzQgLyogVHlwZWRBcnJh
eUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUIzRUNEMTYyMzdGNEQwMEFCNjdBRCAvKiBU
eXBlZEFycmF5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NEIxNThFQkU5
MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NDExNThFQkU4
RDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDAwOSw3ICs0
MDYzLDExIEBACiAJCQkJMEZGNDI3NDgxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRjQyNzQ5MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfdHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTVBQjM5MTc5OUU0QjIwMEQyODMzRCAvKiBVRGlz
ODZEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjQxMTdBREI1RjMwMDVB
QjE3NCAvKiBVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDMxM0JGREU3
MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdB
OEFGNDIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBN0E4QUYzRjE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTdBOEFGNDAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25h
bEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNjAxODIxNjM5RkQyQTAwMzcyQkEz
IC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJFODkyQzE2RDAy
OEFEMDA5RTRGRDIgLyogVW51c2VkUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00Mzg5LDYg
KzQ0NDcsOCBAQAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyog
QVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGODMzNUI3MTYzOUMxRTYwMDE0
NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
QThBRjM0MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBN0E4QUYzNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUJGMTA3RUMzNzYwMDQyN0E0OCAvKiBBcnJheUNvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDU0MTVEMDcwNTUwMDZBNTk3QyAvKiBB
cnJheVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzAxMDdFQzM3NjAwNDI3
QTQ4IC8qIEFycmF5UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDQxMiw2ICs0NDcy
LDcgQEAKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50aWZp
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDlGMkYyMTdBMEFDMkEwMDUxMkU5OCAvKiBD
b21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjU1M0EzMzExN0ExRjFFRTAw
OENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTdFNUEzQTcxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUMyMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21wbGV0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0NkIxNkQ4MTJFQjVCNTkwMDFCRUMxQiAvKiBDb25zZXJ2
YXRpdmVSb290cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ2ODQsNyArNDc0NSw2IEBACiAJCQkJ
MEZGNzI5QUYxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGNzI5QjAxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGls
YXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJB
MyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNjU1
M0EzMzExN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0
YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjMxNjZBRDM1QzAwMEY1QkEzIC8q
IFByb2ZpbGVyT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjcyOUI0MTY2QUQzNUMw
MDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvVGFyZ2V0LnByaQppbmRleCAzNjFiMmJlN2ExN2UwMzRlODhiYjczY2EyNDQ4ZjU3NGRl
OGFlZGNlLi42OWU2NDRmZGY3ZmEzNzRkZTBhYjY3MmU4YzA5YWQzYmM2YWYzMzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtMjU5LDYgKzI1OSw4IEBAIFNPVVJDRVMgKz0gXAogICAg
IHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIFwKICAgICBwcm9maWxlci9Qcm9maWxlTm9k
ZS5jcHAgXAogICAgIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcCBcCisgICAgcnVudGltZS9B
cnJheUJ1ZmZlci5jcHAgXAorICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBcCiAgICAg
cnVudGltZS9BcmdMaXN0LmNwcCBcCiAgICAgcnVudGltZS9Bcmd1bWVudHMuY3BwIFwKICAgICBy
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmViNmJlNjY1NzhmOGE0NDRlMjJm
YTRjNmUxM2ExMGQ0MjBkYmMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKworI2luY2x1ZGUg
IkFycmF5QnVmZmVyVmlldy5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Jvb2wgQXJyYXlCdWZmZXI6OnRy
YW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCwgVmVjdG9yPFJlZlB0cjxBcnJheUJ1
ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpCit7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBr
ZWVwQWxpdmUodGhpcyk7CisKKyAgICBpZiAoIW1fY29udGVudHMubV9kYXRhKSB7CisgICAgICAg
IHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Ym9vbCBhbGxWaWV3c0FyZU5ldXRlcmFibGUgPSB0cnVlOworICAgIGZvciAoQXJyYXlCdWZmZXJW
aWV3KiBpID0gbV9maXJzdFZpZXc7IGk7IGkgPSBpLT5tX25leHRWaWV3KSB7CisgICAgICAgIGlm
ICghaS0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAgICAgICBhbGxWaWV3c0FyZU5ldXRlcmFibGUg
PSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYWxsVmlld3NBcmVOZXV0ZXJhYmxlKQorICAgICAg
ICBtX2NvbnRlbnRzLnRyYW5zZmVyKHJlc3VsdCk7CisgICAgZWxzZSB7CisgICAgICAgIG1fY29u
dGVudHMuY29weVRvKHJlc3VsdCk7CisgICAgICAgIGlmICghcmVzdWx0Lm1fZGF0YSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB3aGlsZSAobV9maXJzdFZpZXcpIHsK
KyAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBjdXJyZW50ID0gbV9maXJzdFZpZXc7CisgICAgICAg
IHJlbW92ZVZpZXcoY3VycmVudCk7CisgICAgICAgIGlmIChhbGxWaWV3c0FyZU5ldXRlcmFibGUg
fHwgY3VycmVudC0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAgICAgICBjdXJyZW50LT5uZXV0ZXIo
KTsKKyAgICAgICAgbmV1dGVyZWRWaWV3cy5hcHBlbmQoY3VycmVudCk7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEFycmF5QnVmZmVyOjphZGRWaWV3KEFycmF5QnVmZmVyVmll
dyogdmlldykKK3sKKyAgICB2aWV3LT5tX2J1ZmZlciA9IHRoaXM7CisgICAgdmlldy0+bV9wcmV2
VmlldyA9IDA7CisgICAgdmlldy0+bV9uZXh0VmlldyA9IG1fZmlyc3RWaWV3OworICAgIGlmICht
X2ZpcnN0VmlldykKKyAgICAgICAgbV9maXJzdFZpZXctPm1fcHJldlZpZXcgPSB2aWV3OworICAg
IG1fZmlyc3RWaWV3ID0gdmlldzsKK30KKwordm9pZCBBcnJheUJ1ZmZlcjo6cmVtb3ZlVmlldyhB
cnJheUJ1ZmZlclZpZXcqIHZpZXcpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gdmlldy0+bV9idWZm
ZXIpOworICAgIGlmICh2aWV3LT5tX25leHRWaWV3KQorICAgICAgICB2aWV3LT5tX25leHRWaWV3
LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9wcmV2VmlldzsKKyAgICBpZiAodmlldy0+bV9wcmV2Vmll
dykKKyAgICAgICAgdmlldy0+bV9wcmV2Vmlldy0+bV9uZXh0VmlldyA9IHZpZXctPm1fbmV4dFZp
ZXc7CisgICAgaWYgKG1fZmlyc3RWaWV3ID09IHZpZXcpCisgICAgICAgIG1fZmlyc3RWaWV3ID0g
dmlldy0+bV9uZXh0VmlldzsKKyAgICB2aWV3LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9uZXh0Vmll
dyA9IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI3YzczNGM2NzM0ODEwOTdjODE3NmRkNjRhOGRhMGJkYjM0YzZlY2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCkBAIC0wLDAgKzEsMjU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBcnJheUJ1ZmZlcl9o
CisjZGVmaW5lIEFycmF5QnVmZmVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVm
ZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworCitjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRz
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKK3B1Ymxp
YzoKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKCkgCisgICAgICAgIDogbV9kYXRhKDApCisgICAg
ICAgICwgbV9zaXplSW5CeXRlcygwKQorICAgIHsgfQorCisgICAgaW5saW5lIH5BcnJheUJ1ZmZl
ckNvbnRlbnRzKCk7CisKKyAgICB2b2lkKiBkYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CisgICAg
dW5zaWduZWQgc2l6ZUluQnl0ZXMoKSB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisKK3ByaXZh
dGU6CisgICAgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5C
eXRlcykgCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9zaXplSW5CeXRlcyhz
aXplSW5CeXRlcykKKyAgICB7IH0KKworICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKKwor
ICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kgeworICAgICAgICBaZXJvSW5pdGlhbGl6ZSwK
KyAgICAgICAgRG9udEluaXRpYWxpemUKKyAgICB9OworCisgICAgc3RhdGljIGlubGluZSB2b2lk
IHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEluaXRpYWxpemF0aW9uUG9saWN5LCBBcnJheUJ1ZmZlckNvbnRlbnRzJik7CisgICAgdm9p
ZCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVCghb3RoZXIubV9kYXRhKTsKKyAgICAgICAgb3RoZXIubV9kYXRhID0gbV9kYXRhOworICAg
ICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRlczsKKyAgICAgICAgbV9kYXRh
ID0gMDsKKyAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7CisgICAgfQorCisgICAgdm9pZCBjb3B5
VG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBBU1NFUlQoIW90
aGVyLm1fZGF0YSk7CisgICAgICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG1f
c2l6ZUluQnl0ZXMsIHNpemVvZihjaGFyKSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRp
YWxpemUsIG90aGVyKTsKKyAgICAgICAgaWYgKCFvdGhlci5tX2RhdGEpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1lbWNweShvdGhlci5tX2RhdGEsIG1fZGF0YSwgbV9zaXplSW5CeXRl
cyk7CisgICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOworICAgIH0K
KworICAgIHZvaWQqIG1fZGF0YTsKKyAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworfTsKKwor
Y2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4geworcHVi
bGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyKik7Cisg
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9p
ZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJik7CisKKyAgICAv
LyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQu
CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwor
CisgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKKyAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgp
IGNvbnN0OworICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisKKyAgICBp
bmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBj
b25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoaW50IGJlZ2lu
KSBjb25zdDsKKworICAgIHZvaWQgYWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICB2b2lk
IHJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3Kik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiwgVmVjdG9yPFJlZlB0cjxBcnJheUJ1
ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpOworICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0
dXJuICFtX2NvbnRlbnRzLm1fZGF0YTsgfQorCisgICAgfkFycmF5QnVmZmVyKCkgeyB9CisKK3By
aXZhdGU6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworCisgICAgaW5saW5lIEFycmF5QnVm
ZmVyKEFycmF5QnVmZmVyQ29udGVudHMmKTsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAg
IGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGludCBpbmRleCkgY29uc3Q7CisgICAgc3RhdGlj
IGlubGluZSBpbnQgY2xhbXBWYWx1ZShpbnQgeCwgaW50IGxlZnQsIGludCByaWdodCk7CisKKyAg
ICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVudHM7CisgICAgQXJyYXlCdWZmZXJWaWV3KiBt
X2ZpcnN0VmlldzsKK307CisKK2ludCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShpbnQgeCwgaW50
IGxlZnQsIGludCByaWdodCkKK3sKKyAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CisgICAgaWYg
KHggPCBsZWZ0KQorICAgICAgICB4ID0gbGVmdDsKKyAgICBpZiAocmlnaHQgPCB4KQorICAgICAg
ICB4ID0gcmlnaHQ7CisgICAgcmV0dXJuIHg7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKK30KKworUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlciogb3RoZXIp
Cit7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUob3RoZXItPmRhdGEoKSwgb3RoZXIt
PmJ5dGVMZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQoreworICAg
IEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CisgICAgQXJyYXlCdWZmZXJDb250ZW50czo6
dHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRp
YWxpemUsIGNvbnRlbnRzKTsKKyAgICBpZiAoIWNvbnRlbnRzLm1fZGF0YSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBhZG9wdFJlZihuZXcgQXJy
YXlCdWZmZXIoY29udGVudHMpKTsKKyAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwg
Ynl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYg
Y29udGVudHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50
cykpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQoreworICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOworfQorCitQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5IHBvbGljeSkKK3sKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOworICAgIEFy
cmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNp
emUsIHBvbGljeSwgY29udGVudHMpOworICAgIGlmICghY29udGVudHMubV9kYXRhKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRz
KSk7Cit9CisKK0FycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBj
b250ZW50cykKKyAgICA6IG1fZmlyc3RWaWV3KDApCit7CisgICAgY29udGVudHMudHJhbnNmZXIo
bV9jb250ZW50cyk7Cit9CisKK3ZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkKK3sKKyAgICByZXR1
cm4gbV9jb250ZW50cy5tX2RhdGE7Cit9CisKK2NvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cy5tX2RhdGE7Cit9CisKK3Vuc2lnbmVk
IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50
cy5tX3NpemVJbkJ5dGVzOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6c2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBzbGljZUlt
cGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7Cit9CisKK1Bhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShpbnQgYmVnaW4pIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKK30KKwor
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBi
ZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAoreworICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8
PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7Cit9CisKK3Vu
c2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGludCBpbmRleCkgY29uc3QKK3sKKyAgICB1
bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIGlmIChpbmRleCA8IDAp
CisgICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0aCArIGluZGV4OworICAgIHJldHVybiBjbGFt
cFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKK30KKwordm9pZCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3ksIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCkKK3sKKyAgICAvLyBEbyBub3QgYWxsb3cg
MzItYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgorICAgIC8vIEZJWE1FOiBXaHkgbm90
PyBUaGUgdHJ5RmFzdENhbGxvYyBmdW5jdGlvbiBhbHJlYWR5IGNoZWNrcyBpdHMgYXJndW1lbnRz
LAorICAgIC8vIGFuZCB3aWxsIGZhaWwgaWYgdGhlcmUgaXMgYW55IG92ZXJmbG93LCBzbyB3aHkg
c2hvdWxkIHdlIGluY2x1ZGUgYQorICAgIC8vIHJlZHVkYW50IHVubmVjZXNzYXJpbHkgcmVzdHJp
Y3RpdmUgY2hlY2sgaGVyZT8KKyAgICBpZiAobnVtRWxlbWVudHMpIHsKKyAgICAgICAgdW5zaWdu
ZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7CisgICAgICAgIGlm
ICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorICAgIGJvb2wgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IGZhbHNlOworICAgIGlmIChwb2xp
Y3kgPT0gWmVyb0luaXRpYWxpemUpCisgICAgICAgIGFsbG9jYXRpb25TdWNjZWVkZWQgPSBXVEY6
OnRyeUZhc3RDYWxsb2MobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSkuZ2V0VmFsdWUocmVz
dWx0Lm1fZGF0YSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChwb2xpY3kgPT0gRG9udElu
aXRpYWxpemUpOworICAgICAgICBhbGxvY2F0aW9uU3VjY2VlZGVkID0gV1RGOjp0cnlGYXN0TWFs
bG9jKG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1bHQubV9kYXRh
KTsKKyAgICB9CisKKyAgICBpZiAoYWxsb2NhdGlvblN1Y2NlZWRlZCkgeworICAgICAgICByZXN1
bHQubV9zaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC5tX2RhdGEgPSAwOworfQorCitBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp+QXJyYXlCdWZmZXJDb250ZW50cygpCit7CisgICAgV1RGOjpmYXN0RnJlZSht
X2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpBcnJheUJ1ZmZl
cjsKK3VzaW5nIEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czsKKworI2VuZGlmIC8vIEFycmF5QnVm
ZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkODZhZjk4ZWQwMmVjNDBmM2YzYzc3Njc0OTY4M2M1YzIyYjZm
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisKKyNpbmNsdWRlICJBcnJheUJ1
ZmZlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZl
clZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
KQorICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCisgICAgLCBtX2lzTmV1dGVyYWJsZSh0
cnVlKQorICAgICwgbV9idWZmZXIoYnVmZmVyKQorICAgICwgbV9wcmV2VmlldygwKQorICAgICwg
bV9uZXh0VmlldygwKQoreworICAgIG1fYmFzZUFkZHJlc3MgPSBtX2J1ZmZlciA/IChzdGF0aWNf
Y2FzdDxjaGFyKj4obV9idWZmZXItPmRhdGEoKSkgKyBtX2J5dGVPZmZzZXQpIDogMDsKKyAgICBp
ZiAobV9idWZmZXIpIAorICAgICAgICBtX2J1ZmZlci0+YWRkVmlldyh0aGlzKTsKK30KKworQXJy
YXlCdWZmZXJWaWV3Ojp+QXJyYXlCdWZmZXJWaWV3KCkKK3sKKyAgICBpZiAobV9idWZmZXIpCisg
ICAgICAgIG1fYnVmZmVyLT5yZW1vdmVWaWV3KHRoaXMpOworfQorCit2b2lkIEFycmF5QnVmZmVy
Vmlldzo6bmV1dGVyKCkKK3sKKyAgICBtX2J1ZmZlciA9IDA7CisgICAgbV9ieXRlT2Zmc2V0ID0g
MDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZTFhYzNhMzE0NzI0N2I1ODljNGUyYzU3MWJlN2M5YjRhNTU3
OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmgKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFycmF5
QnVmZmVyVmlld19oCisjZGVmaW5lIEFycmF5QnVmZmVyVmlld19oCisKKyNpbmNsdWRlICJBcnJh
eUJ1ZmZlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGxpbWl0cy5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJh
eUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKK3B1Ymxp
YzoKKyAgICBlbnVtIFZpZXdUeXBlIHsKKyAgICAgICAgVHlwZUludDgsCisgICAgICAgIFR5cGVV
aW50OCwKKyAgICAgICAgVHlwZVVpbnQ4Q2xhbXBlZCwKKyAgICAgICAgVHlwZUludDE2LAorICAg
ICAgICBUeXBlVWludDE2LAorICAgICAgICBUeXBlSW50MzIsCisgICAgICAgIFR5cGVVaW50MzIs
CisgICAgICAgIFR5cGVGbG9hdDMyLAorICAgICAgICBUeXBlRmxvYXQ2NCwKKyAgICAgICAgVHlw
ZURhdGFWaWV3CisgICAgfTsKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdCA9
IDA7CisKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYnVmZmVyOworICAgIH0KKworICAgIHZvaWQqIGJhc2VBZGRyZXNz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Ynl0ZU9mZnNldDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdCA9IDA7CisKKyAgICB2b2lkIHNldE5ldXRlcmFibGUoYm9vbCBmbGFnKSB7IG1faXNOZXV0
ZXJhYmxlID0gZmxhZzsgfQorICAgIGJvb2wgaXNOZXV0ZXJhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9pc05ldXRlcmFibGU7IH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJh
eUJ1ZmZlclZpZXcoKTsKKworcHJvdGVjdGVkOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBcnJh
eUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
OworCisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0KTsKKworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworCisgICAg
aW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFu
Z2VCeXRlTGVuZ3RoKTsKKworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVk
KiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOworCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0
aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCisgICAgLy8gd2l0aGlu
IHJhbmdlLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBib29sIHZlcmlm
eVN1YlJhbmdlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMpCisgICAgeworICAgICAgICBpZiAoIWJ1ZmZlcikK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHNpemVvZihUKSA+IDEgJiYg
Ynl0ZU9mZnNldCAlIHNpemVvZihUKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKGJ5dGVPZmZzZXQgPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVy
LT5ieXRlTGVuZ3RoKCkgLSBieXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgaWYgKG51
bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIElucHV0IG9mZnNldCBpcyBp
biBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKKyAgICAvLyBvdXRw
dXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZl
cidzIHZpZXcuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50cyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwgdW5zaWduZWQgKm9mZnNldCwgdW5zaWduZWQgKm51bUVs
ZW1lbnRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0g
YXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhP
ZmZzZXQpIHsKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAg
ICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2Yo
VCk7CisgICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXItPmJ5dGVMZW5ndGgoKSwgKm9m
ZnNldCk7CisgICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgICpudW1FbGVtZW50cyA9
IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOworICAgIH0KKworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7CisKKyAgICAvLyBUaGlz
IGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5
dGUgb2Zmc2V0LgorICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7CisKKyAgICB1bnNpZ25lZCBtX2J5
dGVPZmZzZXQgOiAzMTsKKyAgICBib29sIG1faXNOZXV0ZXJhYmxlIDogMTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBBcnJheUJ1ZmZlclZpZXcqIG1fcHJldlZpZXc7CisgICAgQXJyYXlCdWZm
ZXJWaWV3KiBtX25leHRWaWV3OworfTsKKworYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwo
QXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBpZiAo
Ynl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXkt
PmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJy
YXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgLy8gT3V0IG9mIHJhbmdl
IG9mZnNldCBvciBvdmVyZmxvdworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAor
ICAgIGNoYXIqIGJhc2UgPSBzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZUFkZHJlc3MoKSk7CisgICAg
bWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5i
eXRlTGVuZ3RoKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwg
dW5zaWduZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgo
KQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkK
KyAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewor
ICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIq
PihiYXNlQWRkcmVzcygpKTsKKyAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBk
YXRhQnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXJyYXlCdWZmZXJW
aWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVM
ZW5ndGgpCit7CisgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKKyAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgeworICAgICAgICAvLyBP
dXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVz
cygpKTsKKyAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVP
ZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVu
c2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCit7CisgICAgaWYgKHN0YXJ0IDwgMCkK
KyAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOworICAgIGlmIChzdGFydCA8IDApCisgICAgICAg
IHN0YXJ0ID0gMDsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsK
KyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kID0gMDsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCisgICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKKyAg
ICBpZiAoZW5kIDwgc3RhcnQpCisgICAgICAgIGVuZCA9IHN0YXJ0OworICAgICpvZmZzZXQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOworICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZW5kIC0gc3RhcnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcg
SlNDOjpBcnJheUJ1ZmZlclZpZXc7CisKKyNlbmRpZiAvLyBBcnJheUJ1ZmZlclZpZXdfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQzMkFycmF5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YzUyNTc0MTdjYTI3NTJlNjYyODg5MzhmYmY2OTdlNzMzYjhlZDRiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQzMkFycmF5LmgKQEAgLTAsMCAr
MSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRmxvYXQzMkFycmF5X2gKKyNkZWZpbmUgRmxvYXQz
MkFycmF5X2gKKworI2luY2x1ZGUgIlR5cGVkQXJyYXlCYXNlLmgiCisjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZsb2F0MzJBcnJheSA6IHB1
YmxpYyBUeXBlZEFycmF5QmFzZTxmbG9hdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZShjb25zdCBmbG9hdCog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZs
b2F0MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3
aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAg
Ly8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91
dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJy
YXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5
cGVkQXJyYXlCYXNlPGZsb2F0Pjo6c2V0OworCisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgs
IGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBUeXBlZEFycmF5QmFz
ZTxmbG9hdD46Om1fbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBUeXBlZEFy
cmF5QmFzZTxmbG9hdD46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUp
OworICAgIH0KKworICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IHN1
YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBl
IGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVGbG9hdDMyOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgRmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIC8vIE1h
a2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBU
eXBlZEFycmF5QmFzZTxmbG9hdD47Cit9OworCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxv
YXQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK1Bhc3NS
ZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb25zdCBmbG9hdCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+
OjpjcmVhdGU8RmxvYXQzMkFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxG
bG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0
MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxGbG9hdDMyQXJy
YXk+KGxlbmd0aCk7Cit9CisKK0Zsb2F0MzJBcnJheTo6RmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIDogVHlwZWRBcnJheUJhc2U8ZmxvYXQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KQoreworfQorCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgo
KSk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OnN1YmFycmF5
KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEZs
b2F0MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2lu
ZyBKU0M6OkZsb2F0MzJBcnJheTsKKworI2VuZGlmIC8vIEZsb2F0MzJBcnJheV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0QXJyYXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zsb2F0NjRBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3N2Vk
YmQzYjhlNTljNTI4MTgzNzQxMTlmOGE5ZDk3YzIyNzFhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0QXJyYXkuaApAQCAtMCwwICsxLDEw
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEZsb2F0NjRBcnJheV9oCisjZGVmaW5lIEZsb2F0NjRBcnJh
eV9oCisKKyNpbmNsdWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGbG9hdDY0QXJyYXkgOiBwdWJsaWMg
VHlwZWRBcnJheUJhc2U8ZG91YmxlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKGNvbnN0IGRvdWJsZSogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0
NjRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVu
IGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8g
bm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBm
aWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5cGVk
QXJyYXlCYXNlPGRvdWJsZT46OnNldDsKKworICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBk
b3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8
ZG91YmxlPjo6bV9sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFR5cGVkQXJy
YXlCYXNlPGRvdWJsZT46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVl
KTsKKyAgICB9CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IHN1YmFycmF5
KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlw
ZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlRmxvYXQ2NDsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIEZsb2F0NjRBcnJheShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAKKyAg
ICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQg
Y2xhc3MgVHlwZWRBcnJheUJhc2U8ZG91YmxlPjsKK307CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFy
cmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJu
IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGxlbmd0aCk7Cit9
CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZShjb25zdCBk
b3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlC
YXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJy
YXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDY0
QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQ8RmxvYXQ2NEFycmF5PihsZW5ndGgpOworfQorCitGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJh
eShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKKyAgICA6IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0
QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXko
c3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBz
dWJhcnJheUltcGw8RmxvYXQ2NEFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKK3VzaW5nIEpTQzo6RmxvYXQ2NEFycmF5OworCisjZW5kaWYgLy8gRmxvYXQ2NEFy
cmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJy
YXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNDY2YWU0ZGE3ZTIzMmI1NjdmOWEyNGVmM2Y5YmM4ZjFmYmEzMDAxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MTZBcnJheS5oCkBAIC0w
LDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQxNkFycmF5X2gKKyNkZWZpbmUgSW50
MTZBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xhc3MgSW50MTZBcnJheSA6IHB1
YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZShjb25zdCBp
bnQxNl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUg
dXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERv
CisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQg
d2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQx
NkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2lu
ZyBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6c2V0OworICAgIHVzaW5nIEludGVncmFsVHlwZWRB
cnJheUJhc2U8aW50MTZfdD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJy
YXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50
MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKKworICAgIHZpcnR1
YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVHlwZUlu
dDE2OworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgSW50MTZBcnJheShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKwor
ICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVu
ZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQxNl90PjsKK307CisKK1Bhc3NSZWZQdHI8SW50MTZB
cnJheT4gSW50MTZBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4g
VHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJbnQxNkFycmF5PihsZW5ndGgpOworfQor
CitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShjb25zdCBpbnQxNl90
KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxp
bnQxNl90Pjo6Y3JlYXRlPEludDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVm
UHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJbnQxNkFycmF5PihidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJu
IFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDE2QXJyYXk+
KGxlbmd0aCk7Cit9CisKK0ludDE2QXJyYXk6OkludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
OiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVu
Z3RoKQoreworfQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OnN1YmFycmF5
KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgp
KTsKK30KKworUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQxNkFy
cmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6
SW50MTZBcnJheTsKKworI2VuZGlmIC8vIEludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNjU5Mjc4ODI2YjNmMjZiMzEx
OTRkMDIyYThlOGM2YTI2YzU3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnQzMkFycmF5LmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgSW50MzJBcnJheV9oCisjZGVmaW5lIEludDMyQXJyYXlfaAorCisjaW5jbHVkZSAiSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50MzJB
cnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD4geworcHVibGljOgorICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlKGNv
bnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJl
IHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBE
bworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0
IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50
MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNp
bmcgVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0OworICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJh
eUJhc2U8aW50Pjo6c2V0OworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gc3Vi
YXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3
VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlSW50MzI7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIC8vIE1h
a2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBU
eXBlZEFycmF5QmFzZTxpbnQ+OworfTsKKworUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFy
cmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQz
MkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoY29uc3QgaW50KiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJh
eT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJh
eTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+
OjpjcmVhdGU8SW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGVV
bmluaXRpYWxpemVkPEludDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDMyQXJyYXk6OkludDMy
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD4oYnVm
ZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4g
SW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBzdWJh
cnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMy
QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4g
c3ViYXJyYXlJbXBsPEludDMyQXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwordXNpbmcgSlNDOjpJbnQzMkFycmF5OworCisjZW5kaWYgLy8gSW50MzJBcnJheV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkw
ZjIyODY2NjU5NDZiM2QzOThjOTkyYWU4NTgwYmM1N2NiNGNlYzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaApAQCAtMCwwICsxLDEw
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQ4QXJyYXlfaAorI2RlZmluZSBJbnQ4QXJyYXlfaAor
CisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIEludDhBcnJheSA6IHB1YmxpYyBJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlPGludDhfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShjb25zdCBpbnQ4X3QqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+
IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBr
bm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1
cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBm
aXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxp
bnQ4X3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+Ojpz
ZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFy
dCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlSW50ODsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgaW5saW5lIEludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIE1ha2UgY29uc3RydWN0b3Ig
dmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxp
bnQ4X3Q+OworfTsKKworUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3Jl
YXRlPEludDhBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhB
cnJheTo6Y3JlYXRlKGNvbnN0IGludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRlPEludDhBcnJheT4oYXJyYXks
IGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRl
PEludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRy
PEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFs
aXplZDxJbnQ4QXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDhBcnJheTo6SW50OEFycmF5KFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+KGJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5
OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0
LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OnN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBs
PEludDhBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2lu
ZyBKU0M6OkludDhBcnJheTsKKworI2VuZGlmIC8vIEludDhBcnJheV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTljOTg5ZWM3ZjIzMDdkODc4ZmExMmViNWJlMGNkNDk2OWUxZmIxZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVncmFsVHlwZWRB
cnJheUJhc2UuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCisKKyNpbmNs
dWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgorCisvLyBCYXNlIGNsYXNzIGZvciBhbGwgV2ViR0w8VD5BcnJheSB0eXBl
cyBob2xkaW5nIGludGVncmFsCisvLyAobm9uLWZsb2F0aW5nLXBvaW50KSB2YWx1ZXMuCisKK25h
bWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEludGVncmFsVHlw
ZWRBcnJheUJhc2UgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8VD4geworcHVibGljOgorICAgIHZv
aWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAo
aW5kZXggPj0gVHlwZWRBcnJheUJhc2U8VD46Om1fbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpIC8vIENsYW1wIE5hTiB0byAwCisgICAg
ICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgIC8vIFRoZSBkb3VibGUgY2FzdCBpcyBuZWNlc3Nh
cnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHdyYXBwaW5nCisgICAgICAgIC8vIGZvciBvdXQtb2YtcmFu
Z2UgdmFsdWVzIHdpdGggSW50MzJBcnJheSBhbmQgVWludDMyQXJyYXkuCisgICAgICAgIFR5cGVk
QXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8VD4oc3RhdGljX2Nhc3Q8
aW50NjRfdD4odmFsdWUpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBJbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IFR5cGVkQXJyYXlCYXNlPFQ+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQorICAgIHsKKyAgICB9CisKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmU3
YTZjMWE1NjY5NTc4ZWUxZDVhNjA2Y2NkZDhkNjQwZGMxMTg3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApAQCAtMCwwICsx
LDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVHlwZWRBcnJheUJhc2VfaAorI2RlZmluZSBUeXBl
ZEFycmF5QmFzZV9oCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkFycmF5
QnVmZmVyVmlldy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgeworcHVibGlj
OgorICAgIFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4oYmFzZUFkZHJl
c3MoKSk7IH0KKworICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPFQ+KiBhcnJheSwgdW5zaWdu
ZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXksIG9mZnNldCAq
IHNpemVvZihUKSk7CisgICAgfQorCisgICAgYm9vbCBzZXRSYW5nZShjb25zdCBUKiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNldFJhbmdlSW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgZGF0YUxl
bmd0aCAqIHNpemVvZihUKSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBib29s
IHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCisgICAgeworICAgICAg
ICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQgKiBzaXplb2YoVCksIGxlbmd0aCAqIHNpemVv
ZihUKSk7CisgICAgfQorCisgICAgLy8gT3ZlcnJpZGRlbiBmcm9tIEFycmF5QnVmZmVyVmlldy4g
VGhpcyBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIG9mCisgICAgLy8gcnVsZXMgYWJvdXQgaW5oZXJp
dGFuY2Ugb2YgbWVtYmVycyBpbiB0ZW1wbGF0ZSBjbGFzc2VzLCBhbmQKKyAgICAvLyBiZWNhdXNl
IGl0IGlzIGFjY2Vzc2VkIHZpYSBwb2ludGVycyB0byBzdWJjbGFzc2VzLgorICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGg7CisgICAgfQor
CisgICAgdmlydHVhbCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZihUKTsKKyAgICB9CisKKyAgICAvLyBJbnZva2VkIGJ5
IHRoZSBpbmRleGVkIGdldHRlci4gRG9lcyBub3QgcGVyZm9ybSByYW5nZSBjaGVja3M7IGNhbGxl
cgorICAgIC8vIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBzbyBhbmQgcmV0dXJuaW5nIHVuZGVm
aW5lZCBhcyBuZWNlc3NhcnkuCisgICAgVCBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBUeXBl
ZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpOworICAgICAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8
VD46OmRhdGEoKVtpbmRleF07CisgICAgfQorCisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgcG9zKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IChvZmZzZXQgPD0gbV9sZW5ndGgKKyAgICAgICAgICAgICYmIG9mZnNldCArIHBvcyA8PSBtX2xl
bmd0aAorICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKKyAgICAgICAgICAgICYmIG9mZnNl
dCArIHBvcyA+PSBvZmZzZXQpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFR5cGVkQXJyYXlC
YXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVP
ZmZzZXQpCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobGVuZ3RoLCBzaXplb2YoVCkpOworICAg
ICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0aCk7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNz
PiBjcmVhdGUoY29uc3QgVCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAg
IFJlZlB0cjxTdWJjbGFzcz4gYSA9IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsKKyAgICAgICAg
aWYgKGEpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CisgICAgICAgICAgICAgICAgYS0+c2V0KGksIGFycmF5W2ldKTsKKyAgICAgICAgcmV0dXJuIGE7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZihidWZmZXIpOworICAgICAgICBpZiAoIXZlcmlmeVN1YlJhbmdl
PFQ+KGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLCBieXRlT2Zmc2V0LCBsZW5n
dGgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KQorICAgIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7CisgICAgICAgIGlmICgh
YnVmZmVyLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBjcmVh
dGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgU3ViY2xhc3M+CisgICAgUGFzc1JlZlB0cjxTdWJjbGFzcz4gc3ViYXJyYXlJbXBsKGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCwg
bGVuZ3RoOworICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgbV9s
ZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOworICAgICAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1l
bnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgpOworICAgICAg
ICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5ndGgpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQorICAgIHsKKyAgICAgICAgQXJyYXlCdWZm
ZXJWaWV3OjpuZXV0ZXIoKTsKKyAgICAgICAgbV9sZW5ndGggPSAwOworICAgIH0KKworICAgIC8v
IFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmlydHVhbCBmdW5j
dGlvbiBpbiBzdWJjbGFzc2VzLAorICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBwcm90ZWN0ZWQg
cmF0aGVyIHRoYW4gcHJpdmF0ZS4KKyAgICB1bnNpZ25lZCBtX2xlbmd0aDsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlR5cGVkQXJyYXlCYXNlOworCisjZW5kaWYgLy8g
VHlwZWRBcnJheUJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVWludDE2QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNkFy
cmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmYyZmFiMWIyN2I4NjJhOWEwOGQ5MTkxYzhiNDI4MzQ1NGNiZGRl
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQx
NkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVWludDE2QXJyYXlf
aAorI2RlZmluZSBVaW50MTZBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xhc3Mg
VWludDE2QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD4gewor
cHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFy
cmF5PiBjcmVhdGUoY29uc3QgdWludDE2X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisg
ICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJy
YXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRp
cmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OjpzZXQ7Cisg
ICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46OnNldDsKKworICAgIGlu
bGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Owor
ICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGlu
dCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDE2OworICAgIH0KKworcHJpdmF0ZToKKyAgICBp
bmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxl
IHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90
PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46OmNy
ZWF0ZTxVaW50MTZBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50MTZBcnJheT4g
VWludDE2QXJyYXk6OmNyZWF0ZShjb25zdCB1aW50MTZfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OjpjcmVhdGU8VWludDE2
QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50
MTZBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTx1aW50MTZfdD46OmNyZWF0ZTxVaW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVpbnQxNl90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MTZBcnJheT4obGVuZ3RoKTsKK30K
KworVWludDE2QXJyYXk6OlVpbnQxNkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxU
eXBlZEFycmF5QmFzZTx1aW50MTZfdD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9
CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3Rh
cnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisK
K1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQs
IGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50MTZBcnJheT4o
c3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlVpbnQx
NkFycmF5OworCisjZW5kaWYgLy8gVWludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWViMDFlMDFhMWNhZDRlYmRlNDk5
ZGExMzJmMzk3MGE1OTEyODNlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgVWludDMyQXJyYXlfaAorI2RlZmluZSBVaW50MzJBcnJheV9oCisKKyNpbmNsdWRlICJJ
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJh
eUJ1ZmZlcjsKKworY2xhc3MgVWludDMyQXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5
QmFzZTx1aW50MzJfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxV
aW50MzJBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgdWludDMyX3QqIGFycmF5LCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4g
Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtu
b3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVy
biB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZp
cnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8
dWludDMyX3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJf
dD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJhcnJheShp
bnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJh
cnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBn
ZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDMyOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBpbmxpbmUgVWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBj
b25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVk
QXJyYXlCYXNlPHVpbnQzMl90PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQz
MkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1Jl
ZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZShjb25zdCB1aW50MzJfdCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDMy
X3Q+OjpjcmVhdGU8VWludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRy
PFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJBcnJheT4oYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50
MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MzJB
cnJheT4obGVuZ3RoKTsKK30KKworVWludDMyQXJyYXk6OlVpbnQzMkFycmF5KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJfdD4oYnVmZmVyLCBieXRlT2Zm
c2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5
OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0
LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5
SW1wbDxVaW50MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
Cit1c2luZyBKU0M6OlVpbnQzMkFycmF5OworCisjZW5kaWYgLy8gVWludDMyQXJyYXlfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NWY5
ZTE3MDUzOGRjMGMyNmFmODE1NGU2OWRkZTBhZjZiMDJiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OEFycmF5LmgKQEAgLTAsMCArMSwxMDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgVWludDhBcnJheV9oCisjZGVmaW5lIFVpbnQ4QXJyYXlfaAor
CisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIFVpbnQ4QXJyYXkgOiBwdWJsaWMgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTx1aW50OF90PiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGUoY29uc3QgdWludDhfdCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4
QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBp
dCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5v
dCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmls
bGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJh
eUJhc2U8dWludDhfdD46OnNldDsKKyAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVp
bnQ4X3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1
YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBl
IGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVVaW50ODsKKyAgICB9
CisKK3Byb3RlY3RlZDoKKyAgICBpbmxpbmUgVWludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtl
IGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlw
ZWRBcnJheUJhc2U8dWludDhfdD47Cit9OworCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4
QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlC
YXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoY29uc3QgdWludDhfdCogYXJyYXksIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNy
ZWF0ZTxVaW50OEFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFy
cmF5PiBVaW50OEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTx1aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50OEFycmF5PihsZW5ndGgpOwor
fQorCitVaW50OEFycmF5OjpVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorOiBJbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlPHVpbnQ4X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OEFycmF5PihzdGFydCwgZW5k
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6VWludDhBcnJheTsKKwor
I2VuZGlmIC8vIFVpbnQ4QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZmZmFlNzQ3Y2FlZThhZTNiMGQ1
ZTE0MTEwYWUxMThjOGQ5ZmQyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVWludDhDbGFtcGVkQXJyYXlfaAorI2RlZmluZSBVaW50
OENsYW1wZWRBcnJheV9oCisKKyNpbmNsdWRlICJVaW50OEFycmF5LmgiCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFVpbnQ4Q2xhbXBlZEFy
cmF5IDogcHVibGljIFVpbnQ4QXJyYXkgeworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoY29uc3Qg
dWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4s
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBTaG91bGQg
b25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZp
bGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2
YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCk7CisKKyAgICAvLyBJdCdzIG9ubHkgbmVlZGVkIHRvIHBvdGVudGlhbGx5IGNhbGwgdGhpcyBt
ZXRob2QgaWYgdGhlIGFycmF5CisgICAgLy8gd2FzIGNyZWF0ZWQgdW5pbml0aWFsaXplZCAtLSB0
aGUgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBwYXRocworICAgIC8vIHplcm8gdGhlIGFsbG9jYXRl
ZCBtZW1vcnkuCisgICAgaW5saW5lIHZvaWQgemVyb0ZpbGwoKTsKKworICAgIHVzaW5nIFR5cGVk
QXJyYXlCYXNlPHVpbnQ4X3Q+OjpzZXQ7CisgICAgaW5saW5lIHZvaWQgc2V0KHVuc2lnbmVkIGlu
ZGV4LCBkb3VibGUgdmFsdWUpOworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFR5cGVVaW50OENsYW1wZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBVaW50
OENsYW1wZWRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8g
c3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dWludDhfdD47Cit9
OworCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhf
dD46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShjb25zdCB1aW50OF90
KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1
aW50OF90Pjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKwor
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0
ZTxVaW50OENsYW1wZWRBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQ
YXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVpbnQ4X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQ4Q2xhbXBlZEFycmF5PihsZW5ndGgp
OworfQorCit2b2lkIFVpbnQ4Q2xhbXBlZEFycmF5Ojp6ZXJvRmlsbCgpCit7CisgICAgemVyb1Jh
bmdlKDAsIGxlbmd0aCgpKTsKK30KKwordm9pZCBVaW50OENsYW1wZWRBcnJheTo6c2V0KHVuc2ln
bmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCit7CisgICAgaWYgKGluZGV4ID49IG1fbGVuZ3RoKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpIHx8IHZhbHVlIDwgMCkK
KyAgICAgICAgdmFsdWUgPSAwOworICAgIGVsc2UgaWYgKHZhbHVlID4gMjU1KQorICAgICAgICB2
YWx1ZSA9IDI1NTsKKyAgICBkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4obHJp
bnQodmFsdWUpKTsKK30KKworVWludDhDbGFtcGVkQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorOiBVaW50OEFycmF5KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQorewor
fQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6c3Vi
YXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVu
Z3RoKCkpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBz
dWJhcnJheUltcGw8VWludDhDbGFtcGVkQXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpVaW50OENsYW1wZWRBcnJheTsKKworI2VuZGlmIC8v
IFVpbnQ4Q2xhbXBlZEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGU0
ODQzYjE5YzJlOGYzOWQ3MDYyZTY3Mzg0MmM3ZTViODMwZWRhYTQuLmUyMjdlMjRmOWFlY2Y0YzBj
YzgyZDY5YWQ1MzVhNzdkMjU2YWRiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApA
QCAtNjksOCArNjksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwog
ICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBj
bGFzcyBGbG9hdDMyQXJyYXk7CisgICAgY2xhc3MgRmxvYXQ2NEFycmF5OwogICAgIGNsYXNzIEhh
bmRsZVN0YWNrOwogICAgIGNsYXNzIElkZW50aWZpZXJUYWJsZTsKKyAgICBjbGFzcyBJbnQ4QXJy
YXk7CisgICAgY2xhc3MgSW50MTZBcnJheTsKKyAgICBjbGFzcyBJbnQzMkFycmF5OwogICAgIGNs
YXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OwpAQCAtODgsNiArOTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKFJF
R0VYUF9UUkFDSU5HKQogICAgIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgorICAgIGNsYXNzIFVpbnQ4
QXJyYXk7CisgICAgY2xhc3MgVWludDhDbGFtcGVkQXJyYXk7CisgICAgY2xhc3MgVWludDE2QXJy
YXk7CisgICAgY2xhc3MgVWludDMyQXJyYXk7CiAgICAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7
CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDY3NDljNmFjMDZkYmUx
ZThjODlkOWM3NThjODZmN2Q0Yjg0ZWU2NDQuLmY2YTM4MGJmYTNmZmE5ZDViZTkyNzU5OTY2NjVi
NDU5ODgyYTc3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQsMTAgKzQsNiBAQCB3dGZf
c291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oIFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9BVkxUcmVlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0FsaWdubWVudC5oIFwK
LSAgICBTb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAgXAotICAgIFNvdXJjZS9XVEYvd3Rm
L0FycmF5QnVmZmVyLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAg
XAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oIFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmNwcCBcCkBAIC01Niw4ICs1Miw2IEBAIHd0Zl9z
b3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgU291cmNlL1dURi93dGYv
Rml4ZWRBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaCBcCi0gICAg
U291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zvcndh
cmQuaCBcCiAgICAgU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCBcCiAgICAg
U291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmggXApAQCAtNzYsMTAgKzcwLDYgQEAg
d3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCBcCiAgICAgU291cmNlL1dURi93dGYvSW5zZXJ0aW9u
LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0ludDE2QXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93
dGYvSW50MzJBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaCBcCi0gICAg
U291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9MaXN0RHVtcC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9MTFZNSGVhZGVycy5oIFwKQEAgLTE4OSwxMSArMTc5LDYgQEAgd3Rm
X3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmggXAogICAgIFNvdXJj
ZS9XVEYvd3RmL1R5cGVUcmFpdHMuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9UeXBlVHJhaXRz
LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmggXAotICAgIFNvdXJjZS9X
VEYvd3RmL1VpbnQxNkFycmF5LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5Lmgg
XAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93dGYv
VWludDhDbGFtcGVkQXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvVW5pb25GaW5kLmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL1VuaVN0ZEV4dHJhcy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9W
TVRhZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dU
Ri5wcm8KaW5kZXggMTZhOWM4YmM2NjhlZDExNDA0NzE2ZmEzZDhmNTRjOTgyN2VjOWU3Mi4uNGEw
YTY4MjI4NmViNTQ5NjI5OTI0MzE4MzI3MDQxNWM1MDM3NjI4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYucHJvCisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtMjEsOCArMjEsNiBAQCB3
aW5jZSogewogCiBIRUFERVJTICs9IFwKICAgICBBbGlnbm1lbnQuaCBcCi0gICAgQXJyYXlCdWZm
ZXIuaCBcCi0gICAgQXJyYXlCdWZmZXJWaWV3LmggXAogICAgIEFTQ0lJQ1R5cGUuaCBcCiAgICAg
QXNzZXJ0aW9ucy5oIFwKICAgICBBdG9taWNzLmggXApAQCAtNjQsOCArNjIsNiBAQCBIRUFERVJT
ICs9IFwKICAgICBGZWF0dXJlRGVmaW5lcy5oIFwKICAgICBGaWxlUHJpbnRTdHJlYW0uaCBcCiAg
ICAgRml4ZWRBcnJheS5oIFwKLSAgICBGbG9hdDMyQXJyYXkuaCBcCi0gICAgRmxvYXQ2NEFycmF5
LmggXAogICAgIEZvcndhcmQuaCBcCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmggXAogICAgIEZ1
bmN0aW9uYWwuaCBcCkBAIC03OSw5ICs3NSw2IEBAIEhFQURFUlMgKz0gXAogICAgIEhhc2hUYWJs
ZS5oIFwKICAgICBIYXNoVHJhaXRzLmggXAogICAgIEhleE51bWJlci5oIFwKLSAgICBJbnQxNkFy
cmF5LmggXAotICAgIEludDMyQXJyYXkuaCBcCi0gICAgSW50OEFycmF5LmggXAogICAgIExpc3RI
YXNoU2V0LmggXAogICAgIExvY2tlci5oIFwKICAgICBNYWluVGhyZWFkLmggXApAQCAtMTYzLDEw
ICsxNTYsNiBAQCBIRUFERVJTICs9IFwKICAgICBUaHJlYWRTYWZlUmVmQ291bnRlZC5oIFwKICAg
ICBUaHJlYWRTcGVjaWZpYy5oIFwKICAgICBUeXBlVHJhaXRzLmggXAotICAgIFVpbnQxNkFycmF5
LmggXAotICAgIFVpbnQzMkFycmF5LmggXAotICAgIFVpbnQ4QXJyYXkuaCBcCi0gICAgVWludDhD
bGFtcGVkQXJyYXkuaCBcCiAgICAgdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oIFwKICAgICB1bmlj
b2RlL0NvbGxhdG9yLmggXAogICAgIHVuaWNvZGUvaWN1L1VuaWNvZGVJY3UuaCBcCkBAIC0xODQs
OCArMTczLDYgQEAgSEVBREVSUyArPSBcCiB1bml4OiBIRUFERVJTICs9IFRocmVhZElkZW50aWZp
ZXJEYXRhUHRocmVhZHMuaAogCiBTT1VSQ0VTICs9IFwKLSAgICBBcnJheUJ1ZmZlci5jcHAgXAot
ICAgIEFycmF5QnVmZmVyVmlldy5jcHAgXAogICAgIEFzc2VydGlvbnMuY3BwIFwKICAgICBBdG9t
aWNzLmNwcCBcCiAgICAgQml0VmVjdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dU
Ri52Y3hwcm9qL1dURi52Y3hwcm9qIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJv
agppbmRleCAzZjA1MDE5OWFhODNhM2MxMTc0Zjk5YmE4MmZkMWZkMmIxYmFkNTQ1Li5lNGY1YzU1
NmMyMDUzMDNmNGZhYjQ4ODU1MTVlNDZmNDdkOTJiNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RG
LnZjeHByb2oKQEAgLTUxLDggKzUxLDYgQEAKICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0K
ICAgPC9JdGVtR3JvdXA+DQogICA8SXRlbUdyb3VwPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHd0ZlxBcnJheUJ1ZmZlci5jcHAiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
d3RmXEFycmF5QnVmZmVyVmlldy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
d3RmXEFzc2VydGlvbnMuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxC
aXRWZWN0b3IuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxDb21waWxh
dGlvblRocmVhZC5jcHAiIC8+DQpAQCAtMTIyLDggKzEyMCw2IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcQ29tcGlsYXRpb25UaHJlYWQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxXVEZcY29uZmlnLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEFsaWdubWVudC5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBcnJh
eUJ1ZmZlci5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBcnJheUJ1ZmZl
clZpZXcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQVNDSUlDVHlwZS5o
IiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBc3NlcnRpb25zLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEF0b21pY3MuaCIgLz4NCkBAIC0xNjgsOCAr
MTY0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGZWF0dXJlRGVmaW5lcy5o
IiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGaWxlUHJpbnRTdHJlYW0uaCIg
Lz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRml4ZWRBcnJheS5oIiAvPg0KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGbG9hdDMyQXJyYXkuaCIgLz4NCi0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRmxvYXQ2NEFycmF5LmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXEZvcndhcmQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcRnVuY3Rpb25EaXNwYXRjaGVyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cd3RmXEZ1bmN0aW9uYWwuaCIgLz4NCkBAIC0xODMsOSArMTc3LDYgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxIYXNoVGFibGUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcSGFzaFRyYWl0cy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxIZXhOdW1iZXIuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
SW50MTZBcnJheS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxJbnQzMkFy
cmF5LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEludDhBcnJheS5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxMaXN0SGFzaFNldC5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxMb2NrZXIuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcTWFpblRocmVhZC5oIiAvPg0KQEAgLTI3MCw5ICsyNjEsNiBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRocmVhZHNwZWNpZmljLmgiIC8+DQogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRocmVhZHNcQmluYXJ5U2VtYXBob3JlLmgiIC8+
DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFR5cGVUcmFpdHMuaCIgLz4NCi0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDE2QXJyYXkuaCIgLz4NCi0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDMyQXJyYXkuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcVWludDhBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0Zlx1bmljb2RlXENoYXJhY3Rlck5hbWVzLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXHVuaWNvZGVcQ29sbGF0b3IuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlx3dGZcdW5pY29kZVxpY3VcVW5pY29kZUljdS5oIiAvPg0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RG
LnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwppbmRleCBhOTcxMDM1MzM2ZThmMTcwNmZhMWU2
ZTNjMzY3Mzc4NDc1MDY4YjZjLi44M2NmMDgxNDM1ODZlYTljOWE5ZWNmNmI1MWMwYTBmYjI3ZTFi
MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRl
cnMKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC05
NiwxMiArOTYsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHVuaWNvZGVcVVRG
OC5jcHAiPg0KICAgICAgIDxGaWx0ZXI+d3RmXHVuaWNvZGU8L0ZpbHRlcj4NCiAgICAgPC9DbENv
bXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXEFycmF5QnVmZmVyLmNwcCI+
DQotICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXEFycmF5QnVmZmVyVmlldy5jcHAiPg0KLSAgICAgIDxG
aWx0ZXI+d3RmPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHd0ZlxBc3NlcnRpb25zLmNwcCI+DQogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRl
cj4NCiAgICAgPC9DbENvbXBpbGU+DQpAQCAtMzM4LDEyICszMzIsNiBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXFdURlRocmVhZERhdGEuaCI+DQogICAgICAgPEZpbHRlcj53dGY8
L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEFycmF5QnVmZmVyLmgiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQotICAgIDwv
Q2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBcnJheUJ1ZmZlclZp
ZXcuaCI+DQotICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEFTQ0lJQ1R5cGUuaCI+DQogICAgICAgPEZp
bHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpAQCAtNDM3LDEyICs0MjUsNiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEZpeGVkQXJyYXkuaCI+DQogICAgICAg
PEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cd3RmXEZsb2F0MzJBcnJheS5oIj4NCi0gICAgICA8RmlsdGVyPnd0ZjwvRmls
dGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
RmxvYXQ2NEFycmF5LmgiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQotICAgIDwvQ2xJ
bmNsdWRlPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGb3J3YXJkLmgiPg0KICAg
ICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KQEAgLTQ3OSwxNSAr
NDYxLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxIZXhOdW1iZXIuaCI+DQog
ICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEludDE2QXJyYXkuaCI+DQotICAgICAgPEZpbHRlcj53dGY8
L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEludDMyQXJyYXkuaCI+DQotICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0gICAgPC9D
bEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEludDhBcnJheS5oIj4N
Ci0gICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcTGlzdEhhc2hTZXQuaCI+DQogICAgICAgPEZpbHRlcj53
dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpAQCAtNjgwLDE1ICs2NTMsNiBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFR5cGVUcmFpdHMuaCI+DQogICAgICAgPEZpbHRl
cj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cd3RmXFVpbnQxNkFycmF5LmgiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQot
ICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxVaW50MzJB
cnJheS5oIj4NCi0gICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4N
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDhBcnJheS5oIj4NCi0gICAgICA8
RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcVmFsdWVDaGVjay5oIj4NCiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVy
Pg0KICAgICA8L0NsSW5jbHVkZT4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhMmFmNjhmNWQwZjg1NDNhMTAyY2U4Mzk1YzhmNzA4M2NkODczY2Q4Li43NDkx
ZmZhMWZjOTg0NTE3OWRlODRlMTY4OTVjZTgxMzg1MTg0YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3LDEwICs2Nyw2IEBACiAJCUE3NDg3NDU0MTdB
MEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NDg3NDUxMTdBMEJEQUUwMEZBMDRDQiAv
KiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCAqLzsgfTsKIAkJQTg3NkRCRDgxNTE4MTZFNTAwREFE
Qjk1IC8qIFBsYXRmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLzsgfTsKIAkJ
QThBNDczN0YxNTFBODI1QjAwNDEyM0ZGIC8qIEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8q
IEFsaWdubWVudC5oICovOyB9OwotCQlBOEE0NzM4MTE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLzsgfTsKLQkJQThB
NDczODIxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1NzE1MUE4MjVBMDA0MTIzRkYgLyog
QXJyYXlCdWZmZXIuaCAqLzsgfTsKLQkJQThBNDczODMxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5
QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEE0NzI1ODE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLzsg
fTsKLQkJQThBNDczODQxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTkxNTFBODI1
QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oICovOyB9OwogCQlBOEE0NzM4NTE1MUE4MjVC
MDA0MTIzRkYgLyogQVNDSUlDVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDcyNUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCAq
LzsgfTsKIAkJQThBNDczODYxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNUIxNTFBODI1
QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwICovOyB9OwogCQlBOEE0NzM4NzE1MUE4MjVCMDA0
MTIzRkYgLyogQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLzsg
fTsKQEAgLTEyOCw4ICsxMjQsNiBAQAogCQlBOEE0NzNDMzE1MUE4MjVCMDA0MTIzRkYgLyogRmFz
dE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi87IH07CiAJCUE4
QTQ3M0M0MTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyog
RmFzdE1hbGxvYy5oICovOyB9OwogCQlBOEE0NzNDNTE1MUE4MjVCMDA0MTIzRkYgLyogRml4ZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThB
NDcyQTMxNTFBODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAqLzsgfTsKLQkJQThBNDczQzYx
NTFBODI1QjAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTQxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0
MzJBcnJheS5oICovOyB9OwotCQlBOEE0NzNDNzE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQ2NEFy
cmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0
NzJBNTE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCUE4QTQ3M0M4
MTUxQTgyNUIwMDQxMjNGRiAvKiBGb3J3YXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5o
ICovOyB9OwogCQlBOEE0NzNDOTE1MUE4MjVCMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTcxNTFBODI1
QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAqLzsgfTsKIAkJQThBNDczQ0ExNTFBODI1QjAwNDEy
M0ZGIC8qIEdldFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThBNDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdldFB0ci5oICovOyB9OwpAQCAtMTQz
LDEwICsxMzcsNiBAQAogCQlBOEE0NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQkEx
NTFBODI1QTAwNDEyM0ZGIC8qIEhhc2hUcmFpdHMuaCAqLzsgfTsKIAkJQThBNDczREIxNTFBODI1
QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDcyQkIxNTFBODI1QTAwNDEyM0ZGIC8qIEhleE51bWJlci5oICov
OyB9OwogCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyogSW5saW5lQVNNLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCQzE1MUE4MjVBMDA0
MTIzRkYgLyogSW5saW5lQVNNLmggKi87IH07Ci0JCUE4QTQ3M0REMTUxQTgyNUIwMDQxMjNGRiAv
KiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MkJEMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCAqLzsgfTsKLQkJQThB
NDczREUxNTFBODI1QjAwNDEyM0ZGIC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkJFMTUxQTgyNUEwMDQxMjNGRiAvKiBJ
bnQxNkFycmF5LmggKi87IH07Ci0JCUE4QTQ3M0RGMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQzMkFy
cmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0
NzJCRjE1MUE4MjVBMDA0MTIzRkYgLyogSW50MzJBcnJheS5oICovOyB9OwotCQlBOEE0NzNFMDE1
MUE4MjVCMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZG
IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLzsgfTsKIAkJQThBNDczRTExNTFBODI1QjAw
NDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzJDMTE1MUE4MjVBMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCAq
LzsgfTsKIAkJQThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQzMxNTFBODI1QTAwNDEy
M0ZGIC8qIExvY2tlci5oICovOyB9OwogCQlBOEE0NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFp
blRocmVhZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tICovOyB9OwpA
QCAtMjUwLDEzICsyNDAsOCBAQAogCQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5
U2VtYXBob3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzMzQjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggKi87IH07CiAJ
CUE4QTQ3NDU0MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczM0UxNTFBODI1
QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi87IH07CiAJCUE4QTQ3NDU1MTUx
QTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVh
ZFNwZWNpZmljLmggKi87IH07Ci0JCUE4QTQ3NDU3MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlZEFy
cmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDczNDExNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggKi87IH07CiAJCUE4
QTQ3NDU4MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQyMTUxQTgyNUIwMDQxMjNGRiAv
KiBUeXBlVHJhaXRzLmNwcCAqLzsgfTsKIAkJQThBNDc0NTkxNTFBODI1QjAwNDEyM0ZGIC8qIFR5
cGVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTQ3MzQzMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmggKi87IH07Ci0JCUE4QTQ3
NDVBMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0NDE1MUE4MjVCMDA0MTIzRkYgLyogVWlu
dDhBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1QjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFt
cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTQ3MzQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oICovOyB9Owot
CQlBOEE0NzQ1QzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ2MTUxQTgyNUIwMDQxMjNG
RiAvKiBVaW50MTZBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1RDE1MUE4MjVCMDA0MTIzRkYgLyog
VWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5oICovOyB9OwogCQlB
OEE0NzQ1RTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFtZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ5MTUxQTgyNUIwMDQxMjNG
RiAvKiBDaGFyYWN0ZXJOYW1lcy5oICovOyB9OwogCQlBOEE0NzQ1RjE1MUE4MjVCMDA0MTIzRkYg
LyogQ29sbGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MzRBMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvci5oICovOyB9OwogCQlBOEE0
NzQ2MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNG
RiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovOyB9OwpAQCAtMzQ5LDEwICszMzQsNiBAQAogCQlB
NzQ4NzQ1MTE3QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxh
dGZvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8qIEFs
aWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbm1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8q
IEFycmF5QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFy
cmF5QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTcxNTFB
ODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFycmF5QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3
MjU4MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJWaWV3LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTkxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVy
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNUExNTFBODI1QTAwNDEyM0ZG
IC8qIEFTQ0lJQ1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVNDSUlD
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzI1QjE1MUE4MjVBMDA0
MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBc3NlcnRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcy
NUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXNzZXJ0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDEzLDggKzM5NCw2IEBACiAJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9j
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYg
LyogRmFzdE1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0TWFs
bG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkEzMTUxQTgyNUEwMDQx
MjNGRiAvKiBGaXhlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
eGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQTQxNTFBODI1
QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGbG9hdDMyQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcy
QTUxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGbG9hdDY0QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRm9yd2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEE0NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MjgsMTAgKzQwNyw2IEBACiAJCUE4QTQ3MkJBMTUxQTgyNUEwMDQxMjNGRiAvKiBIYXNo
VHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQkIxNTFBODI1QTAwNDEyM0ZGIC8q
IEhleE51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZXhOdW1iZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQkMxNTFBODI1QTAwNDEyM0ZG
IC8qIElubGluZUFTTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVB
U00uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQkQxNTFBODI1QTAwNDEy
M0ZGIC8qIEludDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQ4
QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQkUxNTFBODI1QTAw
NDEyM0ZGIC8qIEludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50MTZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzJCRjE1MUE4
MjVBMDA0MTIzRkYgLyogSW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkMw
MTUxQTgyNUEwMDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVncmFsVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzExNTFBODI1QTAwNDEyM0ZGIC8qIExpc3RIYXNo
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RIYXNoU2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkMzMTUxQTgyNUEwMDQxMjNGRiAvKiBM
b2NrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9ja2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWlu
VGhyZWFkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWFp
blRocmVhZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNSwxMyArNTEw
LDggQEAKIAkJQThBNDczM0IxNTFBODI1QjAwNDEyM0ZGIC8qIEJpbmFyeVNlbWFwaG9yZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaW5hcnlTZW1hcGhvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczM0UxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVh
ZFNhZmVSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVh
ZFNhZmVSZWZDb3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzNG
MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUaHJlYWRTcGVjaWZpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBOEE0NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRBcnJheUJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNDIxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVRyYWl0cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzQzMTUxQTgyNUIwMDQxMjNGRiAv
KiBUeXBlVHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVUcmFp
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczNDQxNTFBODI1QjAwNDEy
M0ZGIC8qIFVpbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWlu
dDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM0NTE1MUE4MjVC
MDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVWludDhDbGFtcGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQThBNDczNDYxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE4QTQ3MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MzJBcnJheS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzM0OTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFt
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyTmFtZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNEExNTFBODI1QjAwNDEyM0ZGIC8q
IENvbGxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAv
KiBDb2xsYXRvckRlZmF1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sbGF0b3JEZWZhdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYy
NiwxMCArNTk2LDYgQEAKIAkJCQlBOEE0NzMzOTE1MUE4MjVCMDA0MTIzRkYgLyogdGhyZWFkcyAq
LywKIAkJCQlBOEE0NzM0ODE1MUE4MjVCMDA0MTIzRkYgLyogdW5pY29kZSAqLywKIAkJCQlBOEE0
NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi8sCi0JCQkJQThBNDcyNTYxNTFB
ODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLywKLQkJCQlBOEE0NzI1NzE1MUE4MjVB
MDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuaCAqLywKLQkJCQlBOEE0NzI1ODE1MUE4MjVBMDA0MTIz
RkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKLQkJCQlBOEE0NzI1OTE1MUE4MjVBMDA0MTIz
RkYgLyogQXJyYXlCdWZmZXJWaWV3LmggKi8sCiAJCQkJQThBNDcyNUExNTFBODI1QTAwNDEyM0ZG
IC8qIEFTQ0lJQ1R5cGUuaCAqLywKIAkJCQlBOEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyogQXNz
ZXJ0aW9ucy5jcHAgKi8sCiAJCQkJQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlv
bnMuaCAqLywKQEAgLTY4Miw4ICs2NDgsNiBAQAogCQkJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4
NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4
NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKIAkJCQlBOEE0NzJBMzE1MUE4MjVBMDA0MTIzRkYg
LyogRml4ZWRBcnJheS5oICovLAotCQkJCUE4QTQ3MkE0MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9h
dDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzJBNTE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFy
cmF5LmggKi8sCiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLywK
IAkJCQlBOEE0NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oICovLAogCQkJCTFB
MUQ4QjlEMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwICovLApAQCAt
NzAyLDEwICs2NjYsNiBAQAogCQkJCUE4QTQ3MkJCMTUxQTgyNUEwMDQxMjNGRiAvKiBIZXhOdW1i
ZXIuaCAqLywKIAkJCQlBOEE0NzJCQzE1MUE4MjVBMDA0MTIzRkYgLyogSW5saW5lQVNNLmggKi8s
CiAJCQkJQTcwREEwODIxNzk5RjA0RDAwNTI5QTlCIC8qIEluc2VydGlvbi5oICovLAotCQkJCUE4
QTQ3MkJFMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQxNkFycmF5LmggKi8sCi0JCQkJQThBNDcyQkYx
NTFBODI1QTAwNDEyM0ZGIC8qIEludDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzJCRDE1MUE4MjVB
MDA0MTIzRkYgLyogSW50OEFycmF5LmggKi8sCi0JCQkJQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZG
IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQlBNzBEQTA4MzE3OTlGMDREMDA1
MjlBOUIgLyogTGlzdER1bXAuaCAqLywKIAkJCQlBOEE0NzJDMTE1MUE4MjVBMDA0MTIzRkYgLyog
TGlzdEhhc2hTZXQuaCAqLywKIAkJCQlBNzM2QjM1ODE3OTlFMTFBMDBDNkYwNUUgLyogTExWTUhl
YWRlcnMuaCAqLywKQEAgLTgxNiwxMyArNzc2LDggQEAKIAkJCQlBOEE0NzMzRTE1MUE4MjVCMDA0
MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCAqLywKIAkJCQlBOEE0NzMzRjE1MUE4MjVC
MDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAw
QTQzMzEgLyogVHJpU3RhdGUuaCAqLywKLQkJCQlBOEE0NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyog
VHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQlBOEE0NzM0MjE1MUE4MjVCMDA0MTIzRkYgLyogVHlw
ZVRyYWl0cy5jcHAgKi8sCiAJCQkJQThBNDczNDMxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFp
dHMuaCAqLywKLQkJCQlBOEE0NzM0NjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCAq
LywKLQkJCQlBOEE0NzM0NzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCAqLywKLQkJ
CQlBOEE0NzM0NDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5oICovLAotCQkJCUE4QTQ3
MzQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJCUE4QTQ3
MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4
MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQx
MjNGRiAvKiBWZWN0b3IuaCAqLywKQEAgLTk0NSw4ICs5MDAsNiBAQAogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUE4QTQ3MzdGMTUxQTgyNUIwMDQx
MjNGRiAvKiBBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3MzgyMTUxQTgyNUIw
MDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDczODQxNTFB
ODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThB
NDczODUxNTFBODI1QjAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QTQ3NDM0MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzM4NzE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDA1LDggKzk1OCw2IEBACiAJCQkJMEY5RDMzNjExNjVEQkE3MzAwNUFEMzg3
IC8qIEZpbGVQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQjYxNTFBODI1
QjAwNDEyM0ZGIC8qIGZpeGVkLWR0b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0M1MTUx
QTgyNUIwMDQxMjNGRiAvKiBGaXhlZEFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzND
NjE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlB
OEE0NzNDNzE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNDODE1MUE4MjVCMDA0MTIzRkYgLyogRm9yd2FyZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczQzkxNTFBODI1QjAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMUQ4QjlDMTczMTg2Q0UwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTAyMiwxMSArOTczLDcgQEAKIAkJCQlBOEE0NzNEQjE1MUE4
MjVCMDA0MTIzRkYgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEQzE1
MUE4MjVCMDA0MTIzRkYgLyogSW5saW5lQVNNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4
NDE3OTlGMDREMDA1MjlBOUIgLyogSW5zZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0
NzNERTE1MUE4MjVCMDA0MTIzRkYgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QThBNDczREYxNTFBODI1QjAwNDEyM0ZGIC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAot
CQkJCUE4QTQ3M0REMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNFMDE1MUE4MjVCMDA0MTIzRkYgLyogSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwREEwODUxNzk5RjA0
RDAwNTI5QTlCIC8qIExpc3REdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFMTE1MUE4
MjVCMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Uz
MTUxQTgyNUIwMDQxMjNGRiAvKiBMb2NrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTExNywxMiAr
MTA2NCw3IEBACiAJCQkJQThBNDc0NTQxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZD
b3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NTE1MUE4MjVCMDA0MTIzRkYgLyog
VGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OUVGMTYzMTZCQkZFMEQwMDBB
NDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0NTcxNTFBODI1QjAw
NDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1OTE1
MUE4MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0
NUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlB
OEE0NzQ1RDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAot
CQkJCUE4QTQ3NDVBMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAq
LywKLQkJCQlBOEE0NzQ1QjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDY3MTUxQTgyNUIwMDQxMjNGRiAvKiBVbmljb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ2NDE1MUE4MjVCMDA0MTIzRkYgLyogVW5pY29kZUlj
dS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NjgxNTFBODI1QjAwNDEyM0ZGIC8qIFVuaWNv
ZGVNYWNyb3NGcm9tSUNVLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMDgsOCArMTE1MCw2IEBACiAJ
CQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlBOEE0NzM4MTE1MUE4MjVCMDA0MTIzRkYgLyogQXJy
YXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDczODMxNTFBODI1QjAwNDEyM0ZG
IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM4NjE1MUE4
MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQz
NTE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDViNTdmZTljNmZiY2EwNjY0ODg2ODdkY2E3MDA2YzI4MjMzMTI4NS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1
ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCi0KLSNpbmNsdWRlICJBcnJh
eUJ1ZmZlclZpZXcuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1ib29sIEFycmF5QnVmZmVyOjp0cmFuc2Zl
cihBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiA+JiBuZXV0ZXJlZFZpZXdzKQotewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2VlcEFs
aXZlKHRoaXMpOwotCi0gICAgaWYgKCFtX2NvbnRlbnRzLm1fZGF0YSkgewotICAgICAgICByZXN1
bHQubV9kYXRhID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wg
YWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gdHJ1ZTsKLSAgICBmb3IgKEFycmF5QnVmZmVyVmlldyog
aSA9IG1fZmlyc3RWaWV3OyBpOyBpID0gaS0+bV9uZXh0VmlldykgewotICAgICAgICBpZiAoIWkt
PmlzTmV1dGVyYWJsZSgpKQotICAgICAgICAgICAgYWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKGFsbFZpZXdzQXJlTmV1dGVyYWJsZSkKLSAgICAgICAgbV9j
b250ZW50cy50cmFuc2ZlcihyZXN1bHQpOwotICAgIGVsc2UgewotICAgICAgICBtX2NvbnRlbnRz
LmNvcHlUbyhyZXN1bHQpOwotICAgICAgICBpZiAoIXJlc3VsdC5tX2RhdGEpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgd2hpbGUgKG1fZmlyc3RWaWV3KSB7Ci0gICAg
ICAgIEFycmF5QnVmZmVyVmlldyogY3VycmVudCA9IG1fZmlyc3RWaWV3OwotICAgICAgICByZW1v
dmVWaWV3KGN1cnJlbnQpOwotICAgICAgICBpZiAoYWxsVmlld3NBcmVOZXV0ZXJhYmxlIHx8IGN1
cnJlbnQtPmlzTmV1dGVyYWJsZSgpKQotICAgICAgICAgICAgY3VycmVudC0+bmV1dGVyKCk7Ci0g
ICAgICAgIG5ldXRlcmVkVmlld3MuYXBwZW5kKGN1cnJlbnQpOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlcjo6YWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqIHZp
ZXcpCi17Ci0gICAgdmlldy0+bV9idWZmZXIgPSB0aGlzOwotICAgIHZpZXctPm1fcHJldlZpZXcg
PSAwOwotICAgIHZpZXctPm1fbmV4dFZpZXcgPSBtX2ZpcnN0VmlldzsKLSAgICBpZiAobV9maXJz
dFZpZXcpCi0gICAgICAgIG1fZmlyc3RWaWV3LT5tX3ByZXZWaWV3ID0gdmlldzsKLSAgICBtX2Zp
cnN0VmlldyA9IHZpZXc7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcoQXJyYXlC
dWZmZXJWaWV3KiB2aWV3KQotewotICAgIEFTU0VSVCh0aGlzID09IHZpZXctPm1fYnVmZmVyKTsK
LSAgICBpZiAodmlldy0+bV9uZXh0VmlldykKLSAgICAgICAgdmlldy0+bV9uZXh0Vmlldy0+bV9w
cmV2VmlldyA9IHZpZXctPm1fcHJldlZpZXc7Ci0gICAgaWYgKHZpZXctPm1fcHJldlZpZXcpCi0g
ICAgICAgIHZpZXctPm1fcHJldlZpZXctPm1fbmV4dFZpZXcgPSB2aWV3LT5tX25leHRWaWV3Owot
ICAgIGlmIChtX2ZpcnN0VmlldyA9PSB2aWV3KQotICAgICAgICBtX2ZpcnN0VmlldyA9IHZpZXct
Pm1fbmV4dFZpZXc7Ci0gICAgdmlldy0+bV9wcmV2VmlldyA9IHZpZXctPm1fbmV4dFZpZXcgPSAw
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oIGIvU291
cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
M2UwYTFiM2MzZTNkNjM1MTdjNjcyYWFkYWI3YTc3NzE2NDQwODg4MC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFy
cmF5QnVmZmVyX2gKLSNkZWZpbmUgQXJyYXlCdWZmZXJfaAotCi0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xh
c3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBBcnJheUJ1ZmZlclZpZXc7Ci0KLWNsYXNzIEFycmF5QnVm
ZmVyQ29udGVudHMgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVu
dHMpOwotcHVibGljOgotICAgIEFycmF5QnVmZmVyQ29udGVudHMoKSAKLSAgICAgICAgOiBtX2Rh
dGEoMCkKLSAgICAgICAgLCBtX3NpemVJbkJ5dGVzKDApCi0gICAgeyB9Ci0KLSAgICBpbmxpbmUg
fkFycmF5QnVmZmVyQ29udGVudHMoKTsKLQotICAgIHZvaWQqIGRhdGEoKSB7IHJldHVybiBtX2Rh
dGE7IH0KLSAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7
IH0KLQotcHJpdmF0ZToKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemVJbkJ5dGVzKSAKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3Np
emVJbkJ5dGVzKHNpemVJbkJ5dGVzKQotICAgIHsgfQotCi0gICAgZnJpZW5kIGNsYXNzIEFycmF5
QnVmZmVyOwotCi0gICAgZW51bSBJbml0aWFsaXphdGlvblBvbGljeSB7Ci0gICAgICAgIFplcm9J
bml0aWFsaXplLAotICAgICAgICBEb250SW5pdGlhbGl6ZQotICAgIH07Ci0KLSAgICBzdGF0aWMg
aW5saW5lIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMm
KTsKLSAgICB2b2lkIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOwotICAgICAgICBvdGhlci5tX2RhdGEgPSBt
X2RhdGE7Ci0gICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwotICAg
ICAgICBtX2RhdGEgPSAwOwotICAgICAgICBtX3NpemVJbkJ5dGVzID0gMDsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNvcHlUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCghb3RoZXIubV9kYXRhKTsKLSAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5
QWxsb2NhdGUobV9zaXplSW5CeXRlcywgc2l6ZW9mKGNoYXIpLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpEb250SW5pdGlhbGl6ZSwgb3RoZXIpOwotICAgICAgICBpZiAoIW90aGVyLm1fZGF0YSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbWVtY3B5KG90aGVyLm1fZGF0YSwgbV9kYXRhLCBt
X3NpemVJbkJ5dGVzKTsKLSAgICAgICAgb3RoZXIubV9zaXplSW5CeXRlcyA9IG1fc2l6ZUluQnl0
ZXM7Ci0gICAgfQotCi0gICAgdm9pZCogbV9kYXRhOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0
ZXM7Ci19OwotCi1jbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVm
ZmVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlC
dWZmZXIqKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMm
KTsKLQotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSk7Ci0KLSAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwotICAgIGlubGluZSBjb25zdCB2
b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25z
dDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4s
IGludCBlbmQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGlj
ZShpbnQgYmVnaW4pIGNvbnN0OwotCi0gICAgdm9pZCBhZGRWaWV3KEFycmF5QnVmZmVyVmlldyop
OwotICAgIHZvaWQgcmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKLQotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmLCBWZWN0b3I8UmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cyk7Ci0gICAgYm9vbCBpc05ldXRl
cmVkKCkgeyByZXR1cm4gIW1fY29udGVudHMubV9kYXRhOyB9Ci0KLSAgICB+QXJyYXlCdWZmZXIo
KSB7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0KLSAgICBpbmxp
bmUgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYpOwotICAgIGlubGluZSBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkg
Y29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25zdDsK
LSAgICBzdGF0aWMgaW5saW5lIGludCBjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50IHJp
Z2h0KTsKLQotICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250ZW50czsKLSAgICBBcnJheUJ1
ZmZlclZpZXcqIG1fZmlyc3RWaWV3OwotfTsKLQotaW50IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVl
KGludCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KQotewotICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0
KTsKLSAgICBpZiAoeCA8IGxlZnQpCi0gICAgICAgIHggPSBsZWZ0OwotICAgIGlmIChyaWdodCA8
IHgpCi0gICAgICAgIHggPSByaWdodDsKLSAgICByZXR1cm4geDsKLX0KLQotUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKQotewotICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMs
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwot
fQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVm
ZmVyKiBvdGhlcikKLXsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci0+ZGF0
YSgpLCBvdGhlci0+Ynl0ZUxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpCi17Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKLSAgICBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpaZXJvSW5pdGlhbGl6ZSwgY29udGVudHMpOwotICAgIGlmICghY29udGVudHMubV9kYXRhKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGFkb3B0
UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEo
KSwgc291cmNlLCBieXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2UoKTsKLX0K
LQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZl
ckNvbnRlbnRzJiBjb250ZW50cykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5QnVm
ZmVyKGNvbnRlbnRzKSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlh
bGl6YXRpb25Qb2xpY3kgcG9saWN5KQotewotICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVu
dHM7Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgcG9saWN5LCBjb250ZW50cyk7Ci0gICAgaWYgKCFjb250ZW50cy5tX2Rh
dGEpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXlCdWZm
ZXIoY29udGVudHMpKTsKLX0KLQotQXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVy
Q29udGVudHMmIGNvbnRlbnRzKQotICAgIDogbV9maXJzdFZpZXcoMCkKLXsKLSAgICBjb250ZW50
cy50cmFuc2ZlcihtX2NvbnRlbnRzKTsKLX0KLQotdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKQot
ewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKLX0KLQotY29uc3Qgdm9pZCogQXJyYXlC
dWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKLX0K
LQotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAotewotICAgIHJldHVy
biBtX2NvbnRlbnRzLm1fc2l6ZUluQnl0ZXM7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpzbGljZShpbnQgYmVnaW4sIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJbmRleChlbmQpKTsKLX0KLQot
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGludCBiZWdpbikgY29u
c3QKLXsKLSAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwotfQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBs
KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgc2l6
ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKLSAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXpl
KTsKLX0KLQotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25z
dAotewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7Ci0gICAgaWYg
KGluZGV4IDwgMCkKLSAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7Ci0gICAg
cmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwotfQotCi12b2lkIEFy
cmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9u
UG9saWN5IHBvbGljeSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVzdWx0KQotewotICAgIC8vIERv
IG5vdCBhbGxvdyAzMi1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgLy8gRklY
TUU6IFdoeSBub3Q/IFRoZSB0cnlGYXN0Q2FsbG9jIGZ1bmN0aW9uIGFscmVhZHkgY2hlY2tzIGl0
cyBhcmd1bWVudHMsCi0gICAgLy8gYW5kIHdpbGwgZmFpbCBpZiB0aGVyZSBpcyBhbnkgb3ZlcmZs
b3csIHNvIHdoeSBzaG91bGQgd2UgaW5jbHVkZSBhCi0gICAgLy8gcmVkdWRhbnQgdW5uZWNlc3Nh
cmlseSByZXN0cmljdGl2ZSBjaGVjayBoZXJlPwotICAgIGlmIChudW1FbGVtZW50cykgewotICAg
ICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsK
LSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSkg
ewotICAgICAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VlZGVkID0gZmFsc2U7Ci0g
ICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKLSAgICAgICAgYWxsb2NhdGlvblN1Y2Nl
ZWRlZCA9IFdURjo6dHJ5RmFzdENhbGxvYyhudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKS5n
ZXRWYWx1ZShyZXN1bHQubV9kYXRhKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHBvbGlj
eSA9PSBEb250SW5pdGlhbGl6ZSk7Ci0gICAgICAgIGFsbG9jYXRpb25TdWNjZWVkZWQgPSBXVEY6
OnRyeUZhc3RNYWxsb2MobnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemUpLmdldFZhbHVlKHJl
c3VsdC5tX2RhdGEpOwotICAgIH0KLQotICAgIGlmIChhbGxvY2F0aW9uU3VjY2VlZGVkKSB7Ci0g
ICAgICAgIHJlc3VsdC5tX3NpemVJbkJ5dGVzID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNp
emU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci19Ci0K
LUFycmF5QnVmZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRlbnRzKCkKLXsKLSAgICBXVEY6
OmZhc3RGcmVlKG1fZGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OkFycmF5QnVmZmVyOwotCi0jZW5kaWYgLy8gQXJyYXlCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVm
ZmVyVmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmIzYTJlNDE3ZmRk
ZjE0YmZkMjEyMDhkMDg1YTYyNTVkMzVlNDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5o
IgotCi1uYW1lc3BhY2UgV1RGIHsKLQotQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXco
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0KQotICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQot
ICAgICAgICAsIG1faXNOZXV0ZXJhYmxlKHRydWUpCi0gICAgICAgICwgbV9idWZmZXIoYnVmZmVy
KQotICAgICAgICAsIG1fcHJldlZpZXcoMCkKLSAgICAgICAgLCBtX25leHRWaWV3KDApCi17Ci0g
ICAgbV9iYXNlQWRkcmVzcyA9IG1fYnVmZmVyID8gKHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZl
ci0+ZGF0YSgpKSArIG1fYnl0ZU9mZnNldCkgOiAwOwotICAgIGlmIChtX2J1ZmZlcikgCi0gICAg
ICAgIG1fYnVmZmVyLT5hZGRWaWV3KHRoaXMpOwotfQotCi1BcnJheUJ1ZmZlclZpZXc6On5BcnJh
eUJ1ZmZlclZpZXcoKQotewotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXItPnJl
bW92ZVZpZXcodGhpcyk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKQotewot
ICAgIG1fYnVmZmVyID0gMDsKLSAgICBtX2J5dGVPZmZzZXQgPSAwOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL0Fy
cmF5QnVmZmVyVmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjcwOGZiZGZm
YWI5MWQ2ZjU2NDBiMWZkN2RlZjQxZTYzMDk2MTBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFycmF5QnVm
ZmVyVmlld19oCi0jZGVmaW5lIEFycmF5QnVmZmVyVmlld19oCi0KLSNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXIuaD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHMuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJy
YXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7Ci0gIHB1
YmxpYzoKLSAgICBlbnVtIFZpZXdUeXBlIHsKLSAgICAgICAgVHlwZUludDgsCi0gICAgICAgIFR5
cGVVaW50OCwKLSAgICAgICAgVHlwZVVpbnQ4Q2xhbXBlZCwKLSAgICAgICAgVHlwZUludDE2LAot
ICAgICAgICBUeXBlVWludDE2LAotICAgICAgICBUeXBlSW50MzIsCi0gICAgICAgIFR5cGVVaW50
MzIsCi0gICAgICAgIFR5cGVGbG9hdDMyLAotICAgICAgICBUeXBlRmxvYXQ2NCwKLSAgICAgICAg
VHlwZURhdGFWaWV3Ci0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25z
dCA9IDA7Ci0KLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyOwotICAgIH0KLQotICAgIHZvaWQqIGJhc2VBZGRy
ZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzOwotICAgIH0K
LQotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYnl0ZU9mZnNldDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgo
KSBjb25zdCA9IDA7Ci0KLSAgICB2b2lkIHNldE5ldXRlcmFibGUoYm9vbCBmbGFnKSB7IG1faXNO
ZXV0ZXJhYmxlID0gZmxhZzsgfQotICAgIGJvb2wgaXNOZXV0ZXJhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc05ldXRlcmFibGU7IH0KLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5B
cnJheUJ1ZmZlclZpZXcoKTsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCk7Ci0KLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2ln
bmVkIGJ5dGVPZmZzZXQpOwotCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0K
LSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVf
dCByYW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9m
ZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQqIG9mZnNldCwg
dW5zaWduZWQqIGxlbmd0aCk7Ci0KLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZl
biBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2Uo
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbnVtRWxlbWVudHMpCi0gICAgewotICAgICAgICBpZiAoIWJ1ZmZlcikKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHNpemVvZihUKSA+IDEgJiYgYnl0
ZU9mZnNldCAlIHNpemVvZihUKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
aWYgKGJ5dGVPZmZzZXQgPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLT5i
eXRlTGVuZ3RoKCkgLSBieXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKLSAgICAgICAgaWYgKG51bUVs
ZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBu
dW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKLSAgICAvLyBvdXRwdXQg
b2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidz
IHZpZXcuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xhbXBP
ZmZzZXRBbmROdW1FbGVtZW50cyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVP
ZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCAqb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgKm51bUVsZW1lbnRzKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0g
KFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKLSAgICAgICAgaWYgKCpv
ZmZzZXQgPiBtYXhPZmZzZXQpIHsKLSAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXItPmJ5dGVM
ZW5ndGgoKTsKLSAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZz
ZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXItPmJ5dGVM
ZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0g
KGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7Ci0gICAgICAgICpu
dW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwot
ICAgIH0KLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7Ci0K
LSAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2Us
IHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgotICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7Ci0KLSAgICB1
bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKLSAgICBib29sIG1faXNOZXV0ZXJhYmxlIDogMTsK
LQotICBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKLSAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwotICAgIEFycmF5QnVmZmVyVmlldyogbV9wcmV2VmlldzsK
LSAgICBBcnJheUJ1ZmZlclZpZXcqIG1fbmV4dFZpZXc7Ci19OwotCi1ib29sIEFycmF5QnVmZmVy
Vmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0
KQotewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVP
ZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAv
LyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgCi0gICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRk
cmVzcygpKTsKLSAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJl
c3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRh
dGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQotewotICAgIGlmIChieXRlT2Zmc2V0
ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBi
eXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNlID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOwotICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVP
ZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6
ZV90IHJhbmdlQnl0ZUxlbmd0aCkKLXsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgo
KQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7
Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGJhc2VBZGRyZXNzKCkpOwotICAgIG1lbXNldChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFu
Z2VCeXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlclZp
ZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVk
IGFycmF5U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQg
PCAwKQotICAgICAgICBzdGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAg
ICAgICAgc3RhcnQgPSAwOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlT
aXplOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXpl
OwotICAgIGlmIChlbmQgPCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNl
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11
c2luZyBXVEY6OkFycmF5QnVmZmVyVmlldzsKLQotI2VuZGlmIC8vIEFycmF5QnVmZmVyVmlld19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGM2MTM3MzZhYjVjMTVlNzljZmE5MTE1NDExNTM5NGRl
OTgxZjU4MTAuLjA4NjBlZTlhNjU1MDIwMGYyNTVhYTdjYjY3ZTRlMmJkZDNhNDgwNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0xNDUsOCArMTQ1LDYgQEAgc2V0KFdURl9IRUFERVJTCiApCiAK
IHNldChXVEZfU09VUkNFUwotICAgIEFycmF5QnVmZmVyLmNwcAotICAgIEFycmF5QnVmZmVyVmll
dy5jcHAKICAgICBBc3NlcnRpb25zLmNwcAogICAgIEF0b21pY3MuY3BwCiAgICAgQml0VmVjdG9y
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmxvYXQzMkFycmF5LmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GbG9hdDMyQXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY3
MmEwYWZmNjMyNjFhNTAzNmFhMjU3ZWUyMWE4NzU5NmE4NDQ2My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXku
aAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZsb2F0
MzJBcnJheV9oCi0jZGVmaW5lIEZsb2F0MzJBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvVHlwZWRB
cnJheUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotY2xhc3MgRmxvYXQzMkFycmF5IDogcHVibGljIFR5cGVkQXJyYXlCYXNlPGZsb2F0PiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0
MzJBcnJheT4gY3JlYXRlKGNvbnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0K
LSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBh
cnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMg
ZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpzZXQ7Ci0K
LSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6bV9sZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6ZGF0YSgpW2luZGV4
XSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSk7Ci0gICAgfQotCi0gICAgaW5saW5lIFBhc3NS
ZWZQdHI8RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGlu
ZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gVHlwZUZsb2F0MzI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBG
bG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAg
ZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGZsb2F0PjsKLX07Ci0KLVBhc3NSZWZQdHI8Rmxv
YXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAg
cmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZsb2F0MzJBcnJheT4obGVuZ3Ro
KTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlKGNv
bnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQot
Ci1QYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZsb2F0MzJB
cnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0
MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGVVbmluaXRpYWxp
emVkPEZsb2F0MzJBcnJheT4obGVuZ3RoKTsKLX0KLQotRmxvYXQzMkFycmF5OjpGbG9hdDMyQXJy
YXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBUeXBlZEFycmF5QmFzZTxmbG9hdD4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMy
QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXko
c3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBz
dWJhcnJheUltcGw8RmxvYXQzMkFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCi0KLXVzaW5nIFdURjo6RmxvYXQzMkFycmF5OwotCi0jZW5kaWYgLy8gRmxvYXQzMkFy
cmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zsb2F0NjRBcnJheS5oIGIvU291cmNl
L1dURi93dGYvRmxvYXQ2NEFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNh
OTMwY2UwMDhlOWZkODZiNDljYjNlYjk0ZjQ4MzRkMjZlMjc4ZGIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZsb2F0
NjRBcnJheV9oCi0jZGVmaW5lIEZsb2F0NjRBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvVHlwZWRB
cnJheUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotY2xhc3MgRmxvYXQ2NEFycmF5IDogcHVibGljIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4g
ewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9h
dDY0QXJyYXk+IGNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
LQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJl
IGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0
cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpzZXQ7
Ci0KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAg
ICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46Om1fbGVuZ3RoKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpkYXRhKClb
aW5kZXhdID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Ci0gICAgfQotCi0gICAgaW5saW5l
IFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAg
IGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gVHlwZUZsb2F0NjQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlu
bGluZSBGbG9hdDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAg
ZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT47Ci19OwotCi1QYXNzUmVmUHRyPEZs
b2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewotICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5PihsZW5n
dGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUo
Y29uc3QgZG91YmxlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBl
ZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5PihhcnJheSwgbGVuZ3RoKTsK
LX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8Rmxv
YXQ2NEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8
RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGVVbmlu
aXRpYWxpemVkPEZsb2F0NjRBcnJheT4obGVuZ3RoKTsKLX0KLQotRmxvYXQ2NEFycmF5OjpGbG9h
dDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBUeXBlZEFycmF5QmFzZTxkb3VibGU+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4g
RmxvYXQ2NEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1
YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBG
bG9hdDY0QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3ViYXJyYXlJbXBsPEZsb2F0NjRBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkZsb2F0NjRBcnJheTsKLQotI2VuZGlmIC8vIEZs
b2F0NjRBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggODJjMmUxODFhYzYyZTQ3NzgxMzJhMDM5MjcwMWFi
MTlhNDNjMjliYy4uMmE0NzUwM2NiYzM0MDAzZWIwN2U0OWMzYmU2ZDRjOWNjNDU5YzQ4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zv
cndhcmQuaApAQCAtMzMsMzAgKzMzLDE5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y2xhc3MgUmVmUHRyOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBjbGFzcyBWZWN0b3I7Ci0gICAgCi0gICAg
Y2xhc3MgQXJyYXlCdWZmZXI7Ci0gICAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworCiAgICAgY2xh
c3MgQXRvbWljU3RyaW5nOwogICAgIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CiAgICAgY2xhc3Mg
QmluYXJ5U2VtYXBob3JlOwogICAgIGNsYXNzIENTdHJpbmc7CiAgICAgY2xhc3MgRGVjb2RlcjsK
ICAgICBjbGFzcyBFbmNvZGVyOwotICAgIGNsYXNzIEZsb2F0MzJBcnJheTsKLSAgICBjbGFzcyBG
bG9hdDY0QXJyYXk7CiAgICAgY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyOwotICAgIGNsYXNzIElu
dDhBcnJheTsKLSAgICBjbGFzcyBJbnQxNkFycmF5OwotICAgIGNsYXNzIEludDMyQXJyYXk7CiAg
ICAgY2xhc3MgUHJpbnRTdHJlYW07CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiAgICAgY2xhc3MgU3RyaW5nQnVpbGRlcjsK
ICAgICBjbGFzcyBTdHJpbmdJbXBsOwotICAgIGNsYXNzIFVpbnQ4QXJyYXk7Ci0gICAgY2xhc3Mg
VWludDhDbGFtcGVkQXJyYXk7Ci0gICAgY2xhc3MgVWludDE2QXJyYXk7Ci0gICAgY2xhc3MgVWlu
dDMyQXJyYXk7CiB9CiAKIHVzaW5nIFdURjo6RnVuY3Rpb247CkBAIC02OCwyOCArNTcsMTcgQEAg
dXNpbmcgV1RGOjpQYXNzUmVmUHRyOwogdXNpbmcgV1RGOjpSZWZQdHI7CiB1c2luZyBXVEY6OlZl
Y3RvcjsKIAotdXNpbmcgV1RGOjpBcnJheUJ1ZmZlcjsKLXVzaW5nIFdURjo6QXJyYXlCdWZmZXJW
aWV3OwogdXNpbmcgV1RGOjpBdG9taWNTdHJpbmc7CiB1c2luZyBXVEY6OkF0b21pY1N0cmluZ0lt
cGw7CiB1c2luZyBXVEY6OkJpbmFyeVNlbWFwaG9yZTsKIHVzaW5nIFdURjo6Q1N0cmluZzsKIHVz
aW5nIFdURjo6RW5jb2RlcjsKIHVzaW5nIFdURjo6RGVjb2RlcjsKLXVzaW5nIFdURjo6RmxvYXQz
MkFycmF5OwotdXNpbmcgV1RGOjpGbG9hdDY0QXJyYXk7CiB1c2luZyBXVEY6OkZ1bmN0aW9uRGlz
cGF0Y2hlcjsKLXVzaW5nIFdURjo6SW50OEFycmF5OwotdXNpbmcgV1RGOjpJbnQxNkFycmF5Owot
dXNpbmcgV1RGOjpJbnQzMkFycmF5OwogdXNpbmcgV1RGOjpQcmludFN0cmVhbTsKIHVzaW5nIFdU
Rjo6U3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1c2luZyBXVEY6OlN0cmluZ0J1
aWxkZXI7CiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7Ci11c2luZyBXVEY6OlVpbnQ4QXJyYXk7Ci11
c2luZyBXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OwotdXNpbmcgV1RGOjpVaW50MTZBcnJheTsKLXVz
aW5nIFdURjo6VWludDMyQXJyYXk7CiAKICNlbmRpZiAvLyBXVEZfRm9yd2FyZF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxNkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQxNkFy
cmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNWE1NzlhNzI4MWJhOGZmYjNm
OTgxYTJlMDg0ZTJkZjVjNTQ4NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEludDE2QXJyYXlfaAotI2RlZmluZSBJ
bnQxNkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgSW50MTZBcnJh
eSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHNob3J0PiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGUoY29u
c3Qgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBi
ZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4g
RG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlw
dCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPElu
dDE2QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVz
aW5nIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6c2V0OwotICAgIHVzaW5nIEludGVncmFsVHlwZWRB
cnJheUJhc2U8c2hvcnQ+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDE2
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFs
IFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQx
NjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEludDE2QXJyYXkoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0g
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1
Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlC
YXNlPHNob3J0PjsKLX07Ci0KLVBhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2hvcnQ+
OjpjcmVhdGU8SW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQxNkFycmF5
PiBJbnQxNkFycmF5OjpjcmVhdGUoY29uc3Qgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
Ci17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6Y3JlYXRlPEludDE2QXJyYXk+
KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6
OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2hvcnQ+
OjpjcmVhdGU8SW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1Q
YXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaG9ydD46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQ8SW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotSW50MTZBcnJheTo6SW50
MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8c2hvcnQ+
KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPEludDE2QXJy
YXk+IEludDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJ
bnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHN1YmFycmF5SW1wbDxJbnQxNkFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6SW50MTZBcnJheTsKLQotI2VuZGlmIC8vIEludDE2QXJy
YXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50MzJBcnJheS5oIGIvU291cmNlL1dU
Ri93dGYvSW50MzJBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWE5OTc4
MDlhMjkzZWZkZmJlZDk4NzA3Nzc2NDhjZWRjNDgxYzAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludDMyQXJyYXkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEludDMyQXJyYXlf
aAotI2RlZmluZSBJbnQzMkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBJbnQzMkFycmF5IDogcHVibGlj
IEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgaW50KiBhcnJh
eSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJB
cnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0
IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90
IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxs
aW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5
QmFzZTxpbnQ+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ+Ojpz
ZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3Rh
cnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IHN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgaW5saW5lIEludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJj
bGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8aW50PjsKLX07Ci0KLVBhc3NS
ZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsK
LSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGxlbmd0
aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKGNvbnN0
IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVm
UHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJbnQzMkFycmF5PihsZW5ndGgp
OwotfQotCi1JbnQzMkFycmF5OjpJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTxpbnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQot
Ci1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFz
c1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQzMkFycmF5PihzdGFydCwg
ZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6SW50MzJBcnJheTsK
LQotI2VuZGlmIC8vIEludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50
OEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjI5ZDJkOWFhYmEzMjI1ZTY0OTY4Y2NhMDQ0MDQwMWUwOTczMzYzYS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9JbnQ4QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aWZuZGVmIEludDhBcnJheV9oCi0jZGVmaW5lIEludDhBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYv
SW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJy
YXlCdWZmZXI7Ci0KLWNsYXNzIEludDhBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlPHNpZ25lZCBjaGFyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEludDhBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlKGNvbnN0IHNpZ25lZCBjaGFyKiBhcnJheSwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBj
cmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25v
d24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJu
IHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmly
c3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8c2ln
bmVkIGNoYXI+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaWduZWQg
Y2hhcj46OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IHN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdl
dFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQ4OwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBpbmxpbmUgSW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAot
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8g
c3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+
OwotfTsKLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKHVuc2lnbmVk
IGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+OjpjcmVh
dGU8SW50OEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFy
cmF5OjpjcmVhdGUoY29uc3Qgc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17
Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPjo6Y3JlYXRlPEludDhBcnJh
eT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6
OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2lnbmVk
IGNoYXI+OjpjcmVhdGU8SW50OEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19
Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hh
cj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50OEFycmF5PihsZW5ndGgpOwotfQotCi1JbnQ4QXJy
YXk6OkludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8
c2lnbmVkIGNoYXI+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVm
UHRyPEludDhBcnJheT4gSW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50
OEFycmF5PiBJbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDhBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkludDhBcnJheTsKLQotI2VuZGlmIC8vIElu
dDhBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYWYxNGNhYjUxMzMzYjA2YjIzNWMyNzZjYWZkMmQ5MTRh
NjhjMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCi0j
ZGVmaW5lIEludGVncmFsVHlwZWRBcnJheUJhc2VfaAotCi0jaW5jbHVkZSA8d3RmL1R5cGVkQXJy
YXlCYXNlLmg+Ci0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIGFsbCBXZWJHTDxUPkFycmF5IHR5cGVzIGhvbGRpbmcgaW50
ZWdyYWwKLS8vIChub24tZmxvYXRpbmctcG9pbnQpIHZhbHVlcy4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgSW50ZWdyYWxUeXBlZEFycmF5QmFzZSA6
IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxUPiB7Ci0gIHB1YmxpYzoKLSAgICB2b2lkIHNldCh1bnNp
Z25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5
cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
aWYgKHN0ZDo6aXNuYW4odmFsdWUpKSAvLyBDbGFtcCBOYU4gdG8gMAotICAgICAgICAgICAgdmFs
dWUgPSAwOwotICAgICAgICAvLyBUaGUgZG91YmxlIGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGdldCB0
aGUgY29ycmVjdCB3cmFwcGluZwotICAgICAgICAvLyBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcyB3
aXRoIEludDMyQXJyYXkgYW5kIFVpbnQzMkFycmF5LgotICAgICAgICBUeXBlZEFycmF5QmFzZTxU
Pjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0PFQ+KHN0YXRpY19jYXN0PGludDY0X3Q+KHZh
bHVlKSk7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQotICAgICAgICA6IFR5cGVkQXJyYXlCYXNlPFQ+KGJ1ZmZlciwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKQotICAgIHsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQot
dXNpbmcgV1RGOjpJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlOwotCi0jZW5kaWYgLy8gSW50ZWdyYWxU
eXBlZEFycmF5QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFz
ZS5oIGIvU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWRlODI0ZmE4MmM3YmFiOWM3ZjJlNTEyZDdkM2I2YzU2NDE0NTJkYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9UeXBlZEFycmF5QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaWZuZGVmIFR5cGVkQXJyYXlCYXNlX2gKLSNkZWZpbmUgVHlwZWRBcnJheUJhc2VfaAot
Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Vmlldy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewotICBwdWJsaWM6Ci0g
ICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihiYXNlQWRkcmVzcygp
KTsgfQotCi0gICAgYm9vbCBzZXQoVHlwZWRBcnJheUJhc2U8VD4qIGFycmF5LCB1bnNpZ25lZCBv
ZmZzZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6
ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBib29sIHNldFJhbmdlKGNvbnN0IFQqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0
UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBkYXRhTGVuZ3Ro
ICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBzaXplb2YoVCkpOwotICAgIH0KLQotICAgIGJvb2wgemVy
b1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAqIHNpemVvZihUKSwgbGVuZ3RoICogc2l6ZW9mKFQp
KTsKLSAgICB9Ci0KLSAgICAvLyBPdmVycmlkZGVuIGZyb20gQXJyYXlCdWZmZXJWaWV3LiBUaGlz
IG11c3QgYmUgcHVibGljIGJlY2F1c2Ugb2YKLSAgICAvLyBydWxlcyBhYm91dCBpbmhlcml0YW5j
ZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRlIGNsYXNzZXMsIGFuZAotICAgIC8vIGJlY2F1c2UgaXQg
aXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJzIHRvIHN1YmNsYXNzZXMuCi0gICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlbmd0aDsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQpOwotICAgIH0KLQotICAgIC8vIEludm9rZWQgYnkgdGhl
IGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5vdCBwZXJmb3JtIHJhbmdlIGNoZWNrczsgY2FsbGVyCi0g
ICAgLy8gaXMgcmVzcG9uc2libGUgZm9yIGRvaW5nIHNvIGFuZCByZXR1cm5pbmcgdW5kZWZpbmVk
IGFzIG5lY2Vzc2FyeS4KLSAgICBUIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IFR5cGVkQXJy
YXlCYXNlPFQ+OjptX2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6
ZGF0YSgpW2luZGV4XTsKLSAgICB9Ci0KLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3MpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG9m
ZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3Ro
Ci0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsg
cG9zID49IG9mZnNldCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVHlwZWRBcnJheUJhc2Uo
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCi0gICAgICAgIDogQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNl
dCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBs
YXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAg
IGlmICghYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVy
biBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNy
ZWF0ZShjb25zdCBUKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgUmVm
UHRyPFN1YmNsYXNzPiBhID0gY3JlYXRlPFN1YmNsYXNzPihsZW5ndGgpOwotICAgICAgICBpZiAo
YSkKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgICAgICBhLT5zZXQoaSwgYXJyYXlbaV0pOwotICAgICAgICByZXR1cm4gYTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3ViY2xhc3M+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWYoYnVmZmVyKTsKLSAgICAgICAg
aWYgKCF2ZXJpZnlTdWJSYW5nZTxUPihidWYsIGJ5dGVPZmZzZXQsIGxlbmd0aCkpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKLQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1YmNsYXNzKGJ1
ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1
YmNsYXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2Yo
VCkpOwotICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0aCk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIFBhc3NSZWZQdHI8U3ViY2xh
c3M+IHN1YmFycmF5SW1wbChpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci0gICAgewotICAgICAg
ICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICAgICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVu
Z3RoKHN0YXJ0LCBlbmQsIG1fbGVuZ3RoLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICAgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxUPihidWZmZXIoKSwgbV9ieXRlT2Zmc2V0LCAmb2Zmc2V0
LCAmbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVyKCksIG9m
ZnNldCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbmV1dGVyKCkKLSAgICB7
Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKCk7Ci0gICAgICAgIG1fbGVuZ3RoID0g
MDsKLSAgICB9Ci0KLSAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBoYXZlIHRvIGFjY2VzcyB0aGlz
IHZpYSBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gc3ViY2xhc3NlcywKLSAgICAvLyB3aGljaCBpcyB3
aHkgaXQgaXMgcHJvdGVjdGVkIHJhdGhlciB0aGFuIHByaXZhdGUuCi0gICAgdW5zaWduZWQgbV9s
ZW5ndGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpUeXBlZEFycmF5
QmFzZTsKLQotI2VuZGlmIC8vIFR5cGVkQXJyYXlCYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1VpbnQxNkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50MTZBcnJheS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2Y1ZjljOTlkNGE4ZmYyOGI3YzU4NjBhNDQwOWRl
N2VhNTllMmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVaW50MTZBcnJheV9oCi0jZGVmaW5lIFVpbnQxNkFycmF5
X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFj
ZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDE2QXJyYXkgOiBwdWJs
aWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD4gewotcHVibGljOgotICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBjcmVhdGUo
Y29uc3QgdW5zaWduZWQgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8g
U2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2ls
bCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5
IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+OjpzZXQ7Ci0g
ICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OnNldDsKLQot
ICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNv
bnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3Rh
cnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlVWludDE2OwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBpbmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2UgY29uc3RydWN0b3Ig
dmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBzaG9ydD47Ci19OwotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJh
eTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8
dW5zaWduZWQgc2hvcnQ+OjpjcmVhdGU8VWludDE2QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NS
ZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUoY29uc3QgdW5zaWduZWQgc2hv
cnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVuc2lnbmVkIHNob3J0Pjo6Y3JlYXRlPFVpbnQxNkFycmF5PihhcnJheSwgbGVuZ3RoKTsKLX0K
LQotUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+OjpjcmVhdGU8
VWludDE2QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0
cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDE2QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVVpbnQxNkFycmF5
OjpVaW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8
dW5zaWduZWQgc2hvcnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNz
UmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25z
dAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVm
UHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5k
KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDE2QXJyYXk+KHN0YXJ0LCBl
bmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpVaW50MTZBcnJheTsK
LQotI2VuZGlmIC8vIFVpbnQxNkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Vp
bnQzMkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50MzJBcnJheS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxYmFkZjZiZmMxOTUxMDZhOGI4NzcxNDAzZjc5MGQ4MmNjMTNlZGI3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VpbnQzMkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2lmbmRlZiBVaW50MzJBcnJheV9oCi0jZGVmaW5lIFVpbnQzMkFycmF5X2gKLQotI2lu
Y2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewot
Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDMyQXJyYXkgOiBwdWJsaWMgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKGNvbnN0IHVuc2ln
bmVkIGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBi
ZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4g
RG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlw
dCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVp
bnQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1
c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZD46OnNldDsKLSAgICB1c2luZyBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlPHVuc2lnbmVkPjo6c2V0OwotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8VWlu
dDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQ
dHI8VWludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAg
ICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IFR5cGVVaW50MzI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBVaW50MzJBcnJheShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBm
cmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50PjsKLX07Ci0KLVBhc3NSZWZQ
dHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewot
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGU8VWludDMyQXJy
YXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5Ojpj
cmVhdGUoY29uc3QgdW5zaWduZWQgaW50KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGU8VWludDMyQXJyYXk+
KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJh
eTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNp
Z25lZCBpbnQ+OjpjcmVhdGU8VWludDMyQXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBpbnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQzMkFycmF5PihsZW5ndGgpOwot
fQotCi1VaW50MzJBcnJheTo6VWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
Ci17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpzdWJhcnJheShp
bnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7
Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50MzJB
cnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OlVpbnQzMkFycmF5OwotCi0jZW5kaWYgLy8gVWludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVWludDhBcnJheS5oIGIvU291cmNlL1dURi93dGYvVWludDhBcnJheS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2FmMDU0NzY2NWI0ODg4N2E4OWQzYTRkMmU4
NzRlZmJhOTNjOGI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVpbnQ4QXJyYXlfaAotI2RlZmluZSBVaW50OEFycmF5
X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFj
ZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDhBcnJheSA6IHB1Ymxp
YyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZShjb25z
dCB1bnNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBm
aWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEph
dmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0K
LSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6c2V0OwotICAgIHVzaW5n
IEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OnNldDsKLQotICAgIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAg
aW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5k
KSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gVHlwZVVpbnQ4OwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIGlubGlu
ZSBVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1
cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+
OwotfTsKLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6
Y3JlYXRlPFVpbnQ4QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4g
VWludDhBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBs
ZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVh
dGU8VWludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJh
eT4gVWludDhBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4QXJyYXk+KGJ1ZmZlciwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRB
cnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDhBcnJheT4o
bGVuZ3RoKTsKLX0KLQotVWludDhBcnJheTo6VWludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLTogSW50
ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxl
bmd0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgo
KSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6c3ViYXJyYXkoaW50
IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDhB
cnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OlVpbnQ4QXJyYXk7Ci0KLSNlbmRpZiAvLyBVaW50OEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1w
ZWRBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWNjMmQ4MmIyOTE0MmJk
MzEyODM2YTUwNzk3Njg1MDhhZGIzMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBV
aW50OENsYW1wZWRBcnJheV9oCi0jZGVmaW5lIFVpbnQ4Q2xhbXBlZEFycmF5X2gKLQotI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotCi0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KLSNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgVWludDhD
bGFtcGVkQXJyYXkgOiBwdWJsaWMgVWludDhBcnJheSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0
ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLQot
ICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFy
cmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBk
aXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0aWMg
aW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIEl0J3Mgb25seSBuZWVkZWQgdG8gcG90ZW50aWFs
bHkgY2FsbCB0aGlzIG1ldGhvZCBpZiB0aGUgYXJyYXkKLSAgICAvLyB3YXMgY3JlYXRlZCB1bmlu
aXRpYWxpemVkIC0tIHRoZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uIHBhdGhzCi0gICAgLy8gemVy
byB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KLSAgICBpbmxpbmUgdm9pZCB6ZXJvRmlsbCgpOwotCi0g
ICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OnNldDsKLSAgICBpbmxpbmUg
dm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSk7Ci0KLSAgICBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAg
ICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0
LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQ4Q2xhbXBlZDsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgaW5saW5lIFVpbnQ4Q2xhbXBlZEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1ha2Ug
Y29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBUeXBl
ZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjsKLX07Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewotICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4Q2xhbXBl
ZEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50
OENsYW1wZWRBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+Ojpj
cmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVp
bnQ4Q2xhbXBlZEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5z
aWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDhDbGFtcGVkQXJyYXk+KGxlbmd0
aCk7Ci19Ci0KLXZvaWQgVWludDhDbGFtcGVkQXJyYXk6Onplcm9GaWxsKCkKLXsKLSAgICB6ZXJv
UmFuZ2UoMCwgbGVuZ3RoKCkpOwotfQotCi12b2lkIFVpbnQ4Q2xhbXBlZEFycmF5OjpzZXQodW5z
aWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKLXsKLSAgICBpZiAoaW5kZXggPj0gbV9sZW5ndGgp
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkgfHwgdmFsdWUgPCAw
KQotICAgICAgICB2YWx1ZSA9IDA7Ci0gICAgZWxzZSBpZiAodmFsdWUgPiAyNTUpCi0gICAgICAg
IHZhbHVlID0gMjU1OwotICAgIGRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihscmludCh2YWx1ZSkpOwotfQotCi1VaW50OENsYW1wZWRBcnJheTo6VWludDhDbGFtcGVk
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCi06IFVpbnQ4QXJyYXkoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFy
cmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0
YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4
Q2xhbXBlZEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OENsYW1wZWRBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OwotCi0j
ZW5kaWYgLy8gVWludDhDbGFtcGVkQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4N2Q5
OGM4YWVlOGU5NDc3MjVhMWU3ZjI0MTg1Mjc0MDE3OWE3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAg
LTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0FycmF5QnVmZmVyX2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfQXJyYXlCdWZmZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlMzk1MjY2
OTdjZDEwZGIzZjQ4ZjhiOTZkZDAwNGQ4YjNmOTQ4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBA
IC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZlclZpZXdfaAorI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZlclZpZXdfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDMyQXJyYXkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MjQ1M2RkMjE2MDhkM2NjYzljZTQ4YzEwNTA2NGE3NzZmZWIzZDBlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDMyQXJyYXku
aApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRmxvYXQzMkFycmF5X2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfRmxvYXQzMkFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GbG9hdDMyQXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdlMzVh
YWRjODhhZWJjOTU1MGFlNWY1ODFkMWI4ZDg5YzgzYTZlMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5LmgKQEAg
LTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0Zsb2F0NjRBcnJheV9oCisjZGVmaW5l
IFdlYkNvcmVfRldEX0Zsb2F0NjRBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxv
YXQ2NEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9JbnQxNkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkMDAzOTlkYTM1NDk3
OTNjZGI5YzFiN2VhMmUxNGE0ODdjODEyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oCkBAIC0wLDAgKzEsNCBA
QAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnQxNkFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
SW50MTZBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50MTZBcnJheS5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L0ludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNjU3NDFkNzY5YmNlNjkwOTFmZGYyMGYxOGFhMGJl
ZGM2ZWEwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29y
ZV9GV0RfSW50MzJBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0ludDMyQXJyYXlfaAorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDMyQXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50OEFycmF5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmI2YWQ1Mjc0MGI1MWYxZmRmYjg4YWFlYWMzMWNjYTk1Yjg5MTQ2YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50OEFy
cmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0ludDhBcnJheV9oCisj
ZGVmaW5lIFdlYkNvcmVfRldEX0ludDhBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW50OEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzY3OWI1Njg0YzY2MDcxMzdjYzU4Yjc2N2FlNmZmYTE2YmFmOGE2MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZX
RF9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW50ZWdyYWxU
eXBlZEFycmF5QmFzZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY0MWE1N2Mz
YTY1OGJiYzVmMDAyZGYwMTY3OTcwZTYyZjVmMTQwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApAQCAt
MCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVHlwZWRBcnJheUJhc2VfaAorI2RlZmlu
ZSBXZWJDb3JlX0ZXRF9UeXBlZEFycmF5QmFzZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
VHlwZWRBcnJheUJhc2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjY2VhMmMx
YjBjMDczN2VjNmM4MGY0M2I2YTVlMWIwMzVkOTYyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQxNkFycmF5LmgKQEAgLTAs
MCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1VpbnQxNkFycmF5X2gKKyNkZWZpbmUgV2Vi
Q29yZV9GV0RfVWludDE2QXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQxNkFy
cmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjAyNmYxNWMwNjM2MThjYzZi
MmQ0MTYyZDhjYmVjOGFhN2IwYjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9VaW50MzJBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1Vp
bnQzMkFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1VpbnQ4QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
VWludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOGRlNGVhNzhjY2FkZTQ5MjNhODY5NjAxYjE1MGRk
NTg1N2Q3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29y
ZV9GV0RfVWludDhBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1VpbnQ4QXJyYXlfaAorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENsYW1wZWRBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OENsYW1w
ZWRBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZDJlMDFkMWE4ZTU3MGQ4YWE1Mjk1ODRlMTFhOTg2NTUz
YzY5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdl
YkNvcmVfRldEX1VpbnQ4Q2xhbXBlZEFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVWludDhD
bGFtcGVkQXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5o
CmluZGV4IDNiNzUzZGM1MzdhNzgxODY1ZTliNmUxM2FmZmQ2M2Q2ZGZlZGNhYWIuLjNjNDBmOWNk
NWI0YjM3YWExZGIxZjhiNjFhM2EwZWNiNTZlMDQxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwCmluZGV4
IDRhOWM4NDNhNjUyMWY5YjFjN2YyZDliYmJmMjAzNmM0M2U3YWNhNzkuLjJiMzFiNDc5Yzc3ZDU2
ZjI2Njg3Zjk1YjM3NWEyYTgxNDNlYjI5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3Bw
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKIAog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlO
ZWVkZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5TmVlZGVkRXZlbnQuY3BwCmluZGV4IDVlMDZmOGQ1MDYzMTdlYTNmYjlhODM3ODc5ZmY4
MDFjOGY5NjdhMjUuLmRiMDYxNzM4YTAxMmIwYjk2NzJkMjcyZmJhZGQ1M2NjMTc2M2MzZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlO
ZWVkZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIk1l
ZGlhS2V5TmVlZGVkRXZlbnQuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
IDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDgzZDFmYmVlYWMzNzY2NGVk
MGZkNGYyZWM1MDljZDYzMmY5ZmJkODYuLjA3NjY4NDQ3OTNmOGFhMDg1NjhjNTU2MzNmZWYwYWI2
MDA5ZWYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggNGZmM2UwNjllYTEyOTU1
MjQ4YjA3MWFkYzEzMzM3Njg0YTJhNDg2Ni4uZjE2MmY5NjFiZjBkNWMxYTVkOTEyYTkxZDQ5MTEw
ZWM2YzUxZWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5oCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJDRE0uaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGVlNjMyNjljNmU4YjgwNjRhYjY0
MTNhMjIyODY2YTdiMTc3MDE5YTQuLjcwN2E4MzNmOTJkOTA0OTVlOGJlMDI2MmQ0MWQ3ODlhYjY3
NDI0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlICJUaW1lUmFu
Z2VzLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1Vp
bnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZmY4MGRmNTQ3
NDRhNGEzMTM0ODljMjU2NzBhNzJkNjUxNDkzZWUyMS4uMjJlYjZhZGExYmJhZWI0YWNhNWY2Yjdk
MGMwNGU1NDQ5ODgxOTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIk1l
ZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5k
ZXggZjIwMTg4M2NiNjBjZDYxYmQyYjQ2OGY1ZjAzODJlOGUwYzc2YWQxZC4uMDQ1YzVkNzJkMDdh
YTU2NDcxOGE1N2EzMjc5MzZiNTk1MmJkYmFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTM1LDggKzM1LDgg
QEAKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Vmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24u
Y3BwCmluZGV4IDk2ZTk3YTkxNWY1MjcxNmE2MGNlYmM5OWIzNjRlNjgyZmU2MDMyZjguLjgzYjYw
MjhiZDA4MDQzZjBiNGJlNjc1OTM1M2FhM2VkNWM5NGUyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJWaWJyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYvVWludDMyQXJyYXkuaD4KKyNp
bmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKaW5kZXgg
OWYyZjBiODczMjA5MjM3NmVkZDc5ZGM3YzFhZWE1ZWE5N2NkODM0NC4uYzNhYTVjNzc4MmMwNzdj
NGQxNGJjMDBjMTVhN2I1MDFkYzMyMGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBAIC01OSw5ICs1OSw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFNtb290aGluZ1RpbWVDb25zdGFudChmbG9hdCBrLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgZmxvYXQgc21vb3RoaW5nVGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9hbmFseXNl
ci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQoKTsgfQogCi0gICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5j
eURhdGEoRmxvYXQzMkFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEZsb2F0RnJlcXVlbmN5
RGF0YShhcnJheSk7IH0KLSAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkq
IGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9Ci0gICAg
dm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNl
ci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkpOyB9CisgICAgdm9pZCBnZXRGbG9hdEZyZXF1
ZW5jeURhdGEoSlNDOjpGbG9hdDMyQXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0RmxvYXRG
cmVxdWVuY3lEYXRhKGFycmF5KTsgfQorICAgIHZvaWQgZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoSlND
OjpVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKGFy
cmF5KTsgfQorICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKEpTQzo6VWludDhBcnJheSog
YXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkpOyB9CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fz
eW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5
bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IGYwMGJkMWFkY2YyMTA0Y2ZkMmU5N2ZhMzUwMWI2MDNk
YzdkYTI4OGEuLjA5MzgzZWY1ZjQ3OWYzNTQwN2ZmMTEzMDA4MGQzZTE2MjQ2YmJlMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNB
dWRpb0RlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuaAppbmRleCBjZWQ4MDU4YzBmNjAxNDNkMzMzNTFkNGVjYTU2NWFiZDhkNzg0OGE3
Li45Y2ZhODhlNWVjMGNiM2U2ZjcwNmJkYTI2NGYwZTkyNzVkMzJmYjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC0z
Miw2ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7CkBAIC00NywyMCArNTEsMjAg
QEAgcHVibGljOgogICAgIH5Bc3luY0F1ZGlvRGVjb2RlcigpOwogCiAgICAgLy8gTXVzdCBiZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGVjb2RlQXN5bmMoQXJyYXlCdWZm
ZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBkZWNvZGVBc3luYyhKU0M6OkFycmF5QnVmZmVyKiBh
dWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spOwogCiBwcml2YXRlOgogICAgIGNsYXNzIERlY29kaW5nVGFzayB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERlY29kaW5nVGFzayk7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUGFzc093blB0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0ZShBcnJheUJ1ZmZlciogYXVk
aW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKTsKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8RGVjb2RpbmdUYXNrPiBjcmVhdGUo
SlNDOjpBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRy
PEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1
ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKIAogICAgICAgICB2b2lkIGRlY29kZSgpOwog
ICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBEZWNvZGluZ1Rhc2soQXJyYXlCdWZmZXIq
IGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayk7CisgICAgICAgIERlY29kaW5nVGFzayhKU0M6OkFycmF5QnVmZmVyKiBhdWRp
b0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spOwogCi0gICAgICAgIEFycmF5QnVmZmVyKiBhdWRpb0RhdGEoKSB7IHJldHVybiBtX2F1
ZGlvRGF0YS5nZXQoKTsgfQorICAgICAgICBKU0M6OkFycmF5QnVmZmVyKiBhdWRpb0RhdGEoKSB7
IHJldHVybiBtX2F1ZGlvRGF0YS5nZXQoKTsgfQogICAgICAgICBmbG9hdCBzYW1wbGVSYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgICAgIEF1ZGlvQnVmZmVyQ2FsbGJh
Y2sqIHN1Y2Nlc3NDYWxsYmFjaygpIHsgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrLmdldCgpOyB9
CiAgICAgICAgIEF1ZGlvQnVmZmVyQ2FsbGJhY2sqIGVycm9yQ2FsbGJhY2soKSB7IHJldHVybiBt
X2Vycm9yQ2FsbGJhY2suZ2V0KCk7IH0KQEAgLTY5LDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgc3RhdGljIHZvaWQgbm90aWZ5Q29tcGxldGVEaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7CiAg
ICAgICAgIHZvaWQgbm90aWZ5Q29tcGxldGUoKTsKIAotICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IG1fYXVkaW9EYXRhOworICAgICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9hdWRp
b0RhdGE7CiAgICAgICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICAgICAgUmVmUHRyPEF1ZGlv
QnVmZmVyQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogICAgICAgICBSZWZQdHI8QXVkaW9C
dWZmZXJDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCmluZGV4IDgyN2RmOWViYjg0ZTZlMGEyN2JkZTJjZDgw
MTUwMzE2ZWIwNjdkYWYuLjFjYTY3NjZiYzk5ZTJhMmFmMzk5OGUyZmRlOTg3YTA5NGIxZWUwOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmgKQEAg
LTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgQXVkaW9CdWZmZXJfaAogI2RlZmluZSBBdWRpb0J1ZmZl
cl9oCiAKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9G
bG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDJiNGQxNzk4OGEy
YWYxNjIyMTQ3NDQ4NTU2OWNmYWI5ZWZmZjM1MjUuLjhhMGU4ZDViMmI2MTUwZWRjZDI0YzRkZmNj
MDViM2ZmZmM5YjdlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAKICNpbmNsdWRlICJHU3RyZWFtZXJV
dGlsaXRpZXMuaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCmluZGV4IDUyNGY5OGYw
N2Y4YzJhYWU2MzkwMzE5NmM3NDFmYzJiOTRjNDg5OTEuLjFlNDA3YmEwYmE0ODUxM2VhODY0NTNh
NzEyM2M2NDdiZjU0MDE2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5oCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5lLmgiCiAjaW5jbHVkZSAiQXVkaW9TdW1taW5n
SnVuY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAppbmRleCBjMGE5NjA4NzA0OTEzMDhlNzEwNDQw
OWRhZDc5NDg2MDM1ZGMxYjExLi5lMGU1YTVkY2NiNTAyYmIzNzNlZGJkMDcyMDFiNTRkZWZiYTQ2
Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbVRpbWVsaW5lLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZpbmUgQXVkaW9QYXJhbVRpbWVs
aW5lX2gKIAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMy
QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1BlcmlvZGljV2F2ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJp
b2RpY1dhdmUuaAppbmRleCAzYjZkZTY4ZmUwZTBmYjMyOTA2YjBmNzI4NDI2YWI5ODFiMDc5MGY2
Li4xMjQzZDkwODBkMmRjZWU2NmMwNjNiZDg3MTc4OTZjNDJhMWJkZmYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmgKQEAgLTMwLDcgKzMwLDcg
QEAKICNkZWZpbmUgUGVyaW9kaWNXYXZlX2gKIAogI2luY2x1ZGUgIkF1ZGlvQXJyYXkuaCIKLSNp
bmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNjgxNjNjZTU1N2Ex
ZmUxODAxOTEyZWEyOWZkYTdlZDBjNTgyMjk3Ni4uNjRhM2NmM2I5NDk3MzEwM2NlMDhiYTBiOTFk
YTI3YjJiNjFkZjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJW
ZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNvbXBsZXg+Ci0j
aW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFy
cmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9V
aW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaAppbmRleCAwMmVhMDVmNWVl
ZWE1Y2ZhZWYyMDY1MzM1MGRmNDIzZjM5YTljMDBiLi4xZmJiNjhhNTY2N2Q3MWFlY2QzOWY5NTM1
OTE5NzA5YTNmYjFhMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaApAQCAtMzAsNiArMzAsMTEgQEAKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKK25hbWVzcGFjZSBKU0Mg
eworY2xhc3MgRmxvYXQzMkFycmF5OworY2xhc3MgVWludDhBcnJheTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKQEAgLTU3LDkgKzYyLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGZsb2F0IGspIHsgbV9zbW9vdGhpbmdU
aW1lQ29uc3RhbnQgPSBrOyB9CiAgICAgZmxvYXQgc21vb3RoaW5nVGltZUNvbnN0YW50KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc21vb3RoaW5nVGltZUNvbnN0YW50KTsg
fQogCi0gICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoRmxvYXQzMkFycmF5Kik7Ci0gICAg
dm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5Kik7Ci0gICAgdm9pZCBnZXRCeXRl
VGltZURvbWFpbkRhdGEoVWludDhBcnJheSopOworICAgIHZvaWQgZ2V0RmxvYXRGcmVxdWVuY3lE
YXRhKEpTQzo6RmxvYXQzMkFycmF5Kik7CisgICAgdm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShK
U0M6OlVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0YShKU0M6OlVp
bnQ4QXJyYXkqKTsKIAogICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgd3JpdGVzIGlucHV0IGRhdGEg
aGVyZS4KICAgICB2b2lkIHdyaXRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0
UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDRlMzZlODc5N2E2ZWRkOTJmNzExOTFjMDM5MDQwYTll
MWU4M2M4OTYuLmFiMWQyZWUwZmIyODQ1Zjk2YjFhOWRmOTUxNGQ1MGMzYTIzNDA3NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5o
IgogI2luY2x1ZGUgIkF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9h
dDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlclByb2Nlc3Nvci5oCmluZGV4IDU1OTdhOTRjMWU3Mjc0M2FkZjdmODRhYmYyOGYyNzRkY2Yz
OTA5NzcuLjYzNWFjNzVkOTRiMjNkMzFmOGE5ZDY5Y2E5NzU0N2RiMWE5MzJjMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nv
ci5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQXVkaW9EU1BLZXJuZWwuaCIKICNpbmNs
dWRlICJBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgot
I2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMThkOTlhOWYwYWFmMDJkNWU5
NGY1ZDVlOGVhNGU4M2Y1MzI4NGJhYS4uZmY3MjgzZDg1N2Y4ZTJjZGUzOGNmMDIzMzU4NDliYjdi
ZTQxZWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTM3LDYgKzM3LDExIEBA
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNzIEFycmF5QnVm
ZmVyVmlldzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwpAQCAtNjAs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7
IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZv
a2VkLgogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSA9IDA7IC8vIFdpbGwgYmUgYXZh
aWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1
YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwotICAgIHZpcnR1
YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5k
KGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYp
ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcAppbmRleCBiNGI0OWMxMGU5NDk0ZGQ1MjZkYWI4MWE1OWYwN2Q5YTk5MWFlZTVlLi41ZmEz
ZDlmNmEwZDFjOGRmMTgxZjBkMjQyOTBkNTgxMjNmMjkzNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNTQsOCArNTQsOCBAQAog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCi0jaW5jbHVkZSA8d3Rm
L0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggZTY0NzkwMzE1NTY3MGVjOWM5MDdhNWE5YTI0
MTMxNWQ3Y2VmNmE4My4uOWE1ODIzNzBmZmQ4NjQwYzQwMWYyZDM3ZTFiOWNkOWFiZGYzYmQzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAt
NzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCBzZW5kKEFycmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2VuZChB
cnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKEpTQzo6QXJy
YXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKEpTQzo6QXJyYXlCdWZm
ZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChCbG9iKiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24s
IEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA1YmU5OWE5MTJlNTk3ZWI4OGU1OTk1
YjNlYTk3NmNhMTk3ZDA5MWEwLi4zNGY0YWJlNjIwZjhlMmVhM2ZjMGQwMTBiMDEwOWJiZGFhYjE1
NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0
Q2hhbm5lbENsaWVudC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgogCi0jaW5j
bHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5o
PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDE3MGFiMTgzYWQ0ODNlOTk0MzQ5
MTlmZTI5ZGVhMTAzYTY2MDg1OTIuLmYxNDhjZDkxYjA4MTAwOGY4YmFmNTAwNWZlMDlhNDk3NDgz
NzE1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNp
b25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFy
cmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3Vs
dCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIE9WRVJS
SURFOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU2N2I5Nzk1MjI1MmY0M2ZkN2M1MTlkYTNmNDdjMjMy
NGEyNjY2MzUuLjc4YjViMTAzYTI0MjVlOWY2NTI1YTdjMTE4NjY1NWNmNGU2YTljZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDUsNyArNDUsNyBA
QAogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9v
cC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZl
ci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmlu
ZGV4IDI0MjEzNDM1ZDEzZDZiNTUwZmE2NGRmYjIyYzc4ZmU2YjY0NjMwMzMuLjQxOWFjNDJkNmJj
MzlkODZmYjZjYzJmYjc3OWZjMWM2OWVmMmRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lv
bnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJy
YXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJ
REU7CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lkIGNvbm5lY3QoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICB2b2lkIHNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEFycmF5QnVmZmVy
Jik7CisgICAgICAgIHZvaWQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJik7CiAgICAgICAg
IHZvaWQgc2VuZChjb25zdCBCbG9iJik7CiAgICAgICAgIHZvaWQgYnVmZmVyZWRBbW91bnQoKTsK
ICAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwpAQCAt
MTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAg
ICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwog
ICAgICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwogICAgICAgICB1bnNpZ25lZCBs
b25nIGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNGYyYzcwNzMxOTJmYWM0
MWRjMzU1YzJmOTM5YTA3NmM4NzY1YzkzYS4uYjFmZjIxNjk3ZDY1ZmE3ZDdkNzYxNTFkMjI0OTNl
OGQ0YmVkZWI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTcyMCw3ICs3MjAsNyBAQCBfX1pO
N1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlckQyRXYKIF9fWk43V2ViQ29yZTIxU2VyaWFs
aXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFx
dWVKU1ZhbHVlCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxp
emVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklO
UzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0RUVFTG0xRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VF
RU5TXzIyU2VyaWFsaXphdGlvbkVycm9yTW9kZUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNj
cmlwdFZhbHVlNmNyZWF0ZUVQSzE1T3BhcXVlSlNDb250ZXh0UEsxM09wYXF1ZUpTVmFsdWVQUzZf
Ci1fX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUE4zSlNDOUV4ZWNT
dGF0ZUVOUzFfN0pTVmFsdWVFUE4zV1RGNlZlY3RvcklOUzVfNlJlZlB0cklOU18xMU1lc3NhZ2VQ
b3J0RUVFTG0xRU5TNV8xNUNyYXNoT25PdmVyZmxvd0VFRVBOUzZfSU5TN19JTlM1XzExQXJyYXlC
dWZmZXJFRUVMbTFFU0FfRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVFCitfX1pON1dlYkNv
cmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzFfN0pT
VmFsdWVFUE4zV1RGNlZlY3RvcklOUzVfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0RUVFTG0xRU5T
NV8xNUNyYXNoT25PdmVyZmxvd0VFRVBOUzZfSU5TN19JTlMxXzExQXJyYXlCdWZmZXJFRUVMbTFF
U0FfRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUMxRVJOM1dURjZWZWN0b3JJaExtMEVOUzFfMTVDcmFzaE9uT3ZlcmZs
b3dFRUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlRDFFdgpAQCAtOTA3LDcg
KzkwNyw3IEBAIF9fWk43V2ViQ29yZTRQYXRoQzFFdgogX19aTjdXZWJDb3JlNFBhdGhEMUV2CiBf
X1pON1dlYkNvcmU0Y29yZUVQMjBOU1VSTFByb3RlY3Rpb25TcGFjZQogX19aTjdXZWJDb3JlNGNv
cmVFUDI4TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQotX19aTjdXZWJDb3JlNHRvSlNFUE4z
SlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNXVEYxMUFycmF5QnVmZmVy
RQorX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9i
amVjdEVQTlMwXzExQXJyYXlCdWZmZXJFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0
YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVudFJlY3RFCiBfX1pON1dlYkNv
cmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xM0RP
TVN0cmluZ0xpc3RFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOU18xNENsaWVudFJlY3RMaXN0RQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAppbmRleCAyZmEzMDZhOWQz
OGMyYzM5YjM3MmU1OTRhNmY4MjgyOWE0NjM1ODllLi5kZmQ1MmFiNzhmY2M2N2U3ZDJiNDYzYTA1
ZjY1YjZmNDA3ZjYwYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0FycmF5QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0FycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIkpTQXJy
YXlCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCmluZGV4
IDlhZjNmOGFkZDdkNjk1N2I1ZWQwYjk1MDY1NzVhM2E0YWE5Yjc1MjYuLjg3YjZlNGM5MTdkYzQ1
NDg3OTk4MmUyNzg4ODljY2EwNzFlZmEwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaApAQCAtMzIsMTIgKzMyLDEyIEBA
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZp
ZXcuaD4KLSNpbmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4KKyNpbmNsdWRlIDxydW50aW1l
L1R5cGVkQXJyYXlCYXNlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGQ3
MzAzNmZmOTFiMTBlZTY2ZTcwM2Q3YWMzZjY1MDk1NDczMmM2ZWQuLmFiNjg1MjZlYzYyNTRkMjZl
MWMyZmRiMzNmMGYxMmRiZjliYzcxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNs
dWRlICJKU0F1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTT2ZmbGluZUF1ZGlvQ29udGV4dC5o
IgogI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Fy
cmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHd0Zi9B
cnJheUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKaW5kZXggYTk2M2E3NDY4NzY1NGEyZWM4
MDA4ZDRmYzM3MjIxODMxYTliNWJhNS4uZDllOTI5ODFhNmEzOTFjNjk5ODQzNWU2NjY4NDlhMWVk
YjBiZTM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9D
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9t
LmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogCisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5
QnVmZmVyVmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4IDFmODY4NGZmMGMxMzc1MWNiMWI3ZmYwMjhl
YTgwNDllZjYwODRmMDYuLjA1MTlmZTI2NWRmZTA5NDQ1MmNkNmEyM2E5MWZhMjIzNDEwYWNiNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC0xMTksNyAr
MTE5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiByZXN1
bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgQXJyYXlWYWx1ZSYgcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxVaW50OEFycmF5PiYgcmVz
dWx0KTsKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiByZXN1bHQpOwogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8TWVkaWFLZXlFcnJvcj4mIHJlc3VsdCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20u
Y3BwCmluZGV4IDhiNDkzY2ExNzY5ZjJlZDk5N2E5ZTUwNTU3ZjBjNTRkNTQwMzJjMzcuLmU4NTEy
MTlhZmE3NDg4YjMzNTkxZjQ2Y2JhNjRkODAzYTUwOTE3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogCiAjaW5jbHVkZSAiRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIK
LSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVm
ZmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApp
bmRleCA1ZWQ1M2U3YjUzZDI5MzA0ZGIzM2FlZGMyNzkyMTBlMjAxMTNlMTBjLi4yMmJmMWFhYzdj
MTIwNjk0MmY1N2VmMmFlMmVkZWZiNmQ0NWFkMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CkBAIC04NSwxMSArODUsMTEgQEAKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9JbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAKICNpZiBFTkFCTEUoVklERU8pCiAj
aW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAyYjc5OWM1MGVlYmMw
YjFjNDkzMjRkNTZlYzE5YWE5YWVmZDAwZTZiLi44ZGQ4YmY1NTkyMmY2NTQ0NzU5NDViMDRhYzE0
MmM4NTk0MmE2YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtNDgsOCArNDgsOCBAQAogI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8
aW50ZXJwcmV0ZXIvU3RhY2tJdGVyYXRvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVm
ZmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDEyNmEwNGJmYmEx
MTk0NDU4NDE1ODc5ODVhMzU4NTJmNGE3MGU5OGUuLjM4MmNiMjdlYjNlZDRiMmIwNTNkMmU1YTY4
NzFjZDU3MTRhYzBkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgPGxp
bWl0cz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQVBJU2hpbXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9Cb29sZWFuT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9E
YXRlSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC02Nyw5ICs2OCw4
IEBACiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvUmVnRXhwLmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHBPYmplY3QuaD4KLSNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhD
bGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CkBAIC05NzgsNyArOTc4LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVT
ZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICByZXR1cm4gU3VjY2Vzc2Z1bGx5
Q29tcGxldGVkOwogfQogCi10eXBlZGVmIFZlY3RvcjxXVEY6OkFycmF5QnVmZmVyQ29udGVudHM+
IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsKK3R5cGVkZWYgVmVjdG9yPEpTQzo6QXJyYXlCdWZm
ZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogCiBjbGFzcyBDbG9uZURlc2Vy
aWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6CkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBQYXNz
T3duUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBT
ZXJpYWxpemVkU2NyaXB0VmFsdQogICAgIFZlY3RvcjxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiA+
IHdvcmxkczsKICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4oZXhlYy0+dm0o
KS5jbGllbnREYXRhKS0+Z2V0QWxsV29ybGRzKHdvcmxkcyk7CiAKLSAgICBIYXNoU2V0PFdURjo6
QXJyYXlCdWZmZXIqPiB2aXNpdGVkOworICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZp
c2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRleCA9IDA7IGFycmF5QnVmZmVy
SW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZlckluZGV4KyspIHsKICAgICAg
ICAgVmVjdG9yPFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4gbmV1dGVyZWRWaWV3czsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApp
bmRleCBkM2NkODgwOGQ4NDZiM2U3N2M4MDAzNTA2NmRlNWY1NGM3YTA3N2M5Li42MTExMmU3YzY4
NTAwOWU2NzRmNjM3MDQzNzgyNGI2YjMyYTQ0NzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMjksOCArMjksOCBAQAog
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFs
dWUuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQ
b3J0QXJyYXk7Ci10eXBlZGVmIFZlY3RvcjxSZWZQdHI8V1RGOjpBcnJheUJ1ZmZlcj4sIDE+IEFy
cmF5QnVmZmVyQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4s
IDE+IEFycmF5QnVmZmVyQXJyYXk7CiAgCiBlbnVtIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHsK
ICAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgog
ICAgIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZl
Y3RvcjxXVEY6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsK
KyAgICB0eXBlZGVmIFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVmZmVy
Q29udGVudHNBcnJheTsKICAgICBzdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJp
YWxpemF0aW9uRmFpbGVkKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUp
OwogICAgIHN0YXRpYyBib29sIHNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5PiB0cmFuc2ZlckFycmF5QnVmZmVycyhKU0M6OkV4ZWNTdGF0ZSosIEFy
cmF5QnVmZmVyQXJyYXkmLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwZjI4
ZjZlZTUyOTJiNDIyZTQwYzVkZjYxZmFhM2JjZjYxZTBkNTcyLi42ZDU4OTJkNzk1NjdmMzlmYjg5
NjM5MDU4ZTI2ZmFlMDI4ZmNkNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjI2LDcgKzIyNiw3IEBAIHN1YiBBZGRJ
bmNsdWRlc0ZvclR5cGUKICAgICB9IGVsc2lmICgkaXNDYWxsYmFjayAmJiAkY29kZUdlbmVyYXRv
ci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkpIHsKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IkpTJHt0
eXBlfS5oIn0gPSAxOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlU
eXBlKCR0eXBlKSkgewotICAgICAgICAkaW5jbHVkZXNSZWYtPnsiPHd0Zi8ke3R5cGV9Lmg+In0g
PSAxOworICAgICAgICAkaW5jbHVkZXNSZWYtPnsiPHJ1bnRpbWUvJHt0eXBlfS5oPiJ9ID0gMTsK
ICAgICB9IGVsc2UgewogICAgICAgICAjIGRlZmF1bHQsIGluY2x1ZGUgdGhlIHNhbWUgbmFtZWQg
ZmlsZQogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiJHt0eXBlfS5oIn0gPSAxOwpAQCAtNjgzLDcg
KzY4Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYgKCRoYXNQYXJlbnQgJiYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCJ9
KSB7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkaW50ZXJm
YWNlTmFtZSkpIHsKLSAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPHd0Zi8kaW50ZXJmYWNl
TmFtZS5oPiJ9ID0gMTsKKyAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPHJ1bnRpbWUvJGlu
dGVyZmFjZU5hbWUuaD4ifSA9IDE7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkaGVh
ZGVySW5jbHVkZXN7IiRpbnRlcmZhY2VOYW1lLmgifSA9IDE7CiAgICAgICAgIH0KQEAgLTM2MTIs
NyArMzYxMiw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgIyBEZWZhdWx0LCBpbmNs
dWRlIGhlYWRlciB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
JHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNU
eXBlZEFycmF5VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8
d3RmLyR0eXBlLmg+IiwgJGNvbmRpdGlvbmFsKSBpZiBub3QgJGNvZGVHZW5lcmF0b3ItPlNraXBJ
bmNsdWRlSGVhZGVyKCR0eXBlKTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8cnVu
dGltZS8kdHlwZS5oPiIsICRjb25kaXRpb25hbCkgaWYgbm90ICRjb2RlR2VuZXJhdG9yLT5Ta2lw
SW5jbHVkZUhlYWRlcigkdHlwZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiJHR5cGUuaCIsICRjb25kaXRpb25hbCkgaWYgbm90ICRjb2RlR2VuZXJh
dG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXku
Y3BwCmluZGV4IDgyN2I2YmFkZWI3M2JlNGJmZWZjOWIwMzE5Mzg2Y2Q0M2ZiMGUzODguLjAxNTJm
OGJkMzU0YjBhOGQwMjQyN2FkYjRhNzdmY2FmOWVlZjA0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNw
cApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiSlNGbG9hdDMyQXJyYXkuaCIKICNpbmNs
dWRlICJKU0ludDMyQXJyYXkuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9GbG9hdDY0QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXku
aD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+Ci0jaW5jbHVkZSA8d3Rm
L0Zsb2F0NjRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
SW50MzJBcnJheS5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCmlu
ZGV4IDFkN2RmZDczZTMwNDI0NWJiNjZmMTFmNDUxMmZlNzdhZmQxMTdkNGEuLmYzNDljNGQ4MjBk
ZWNmMjA1MzI2YWIyNTMxOTdjYzNlYWU4MzBmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCkBAIC0yMyw4
ICsyMyw4IEBACiAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQ2NEFycmF5Lmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDY0QXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGRjYTZhNTkxZjQyNjllOGQ3YTUw
OGY3NGQyODRhNWQ5ZjhjYWY5YzguLjliMDZiYWE4YzE0Yzg4NWZkZjJlNTE4Y2Q4ZWRjZDBjMTQx
NjRhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCkBAIC01NCw5ICs1NCw5IEBACiAjaW5jbHVkZSAiVGVzdE9iai5o
IgogI2luY2x1ZGUgImJvb2wuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJh
eS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IGQzODI0NjJhYzMyMDc3
MGEzYWQ1MDU0Y2MwZTlmZmI4MDg2MGRmMDMuLmE0ODE1MWY2NGJkYjFjMDMxNzFhODhhOWFiNzVi
OTA0MGE5YWE0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50
aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAg
LTQ5NCw3ICs0OTQsNyBAQCBRVmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBRTWV0YVR5cAogCiAgICAgICAgIGNhc2Ug
UU1ldGFUeXBlOjpRQnl0ZUFycmF5OiB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBSVFVpbnQ4
QXJyYXkpIHsKLSAgICAgICAgICAgICAgICBXVEY6OlVpbnQ4QXJyYXkqIGFyciA9IHRvVWludDhB
cnJheSh0b0pTKHRvSlMoY29udGV4dCksIHZhbHVlKSk7CisgICAgICAgICAgICAgICAgSlNDOjpV
aW50OEFycmF5KiBhcnIgPSB0b1VpbnQ4QXJyYXkodG9KUyh0b0pTKGNvbnRleHQpLCB2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIHJldCA9IFFWYXJpYW50KFFCeXRlQXJyYXkocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oYXJyLT5kYXRhKCkpLCBhcnItPmxlbmd0aCgpKSk7CiAgICAgICAg
ICAgICAgICAgZGlzdCA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNzI5LDcgKzcyOSw3
IEBAIEpTVmFsdWVSZWYgY29udmVydFFWYXJpYW50VG9WYWx1ZShKU0NvbnRleHRSZWYgY29udGV4
dCwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByCiAKICAgICBpZiAodHlwZSA9PSBRTWV0YVR5cGU6
OlFCeXRlQXJyYXkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBxdEJ5dGVBcnJheSA9IHZhcmlhbnQu
dmFsdWU8UUJ5dGVBcnJheT4oKTsKLSAgICAgICAgV1RGOjpSZWZQdHI8V1RGOjpVaW50OENsYW1w
ZWRBcnJheT4gd3RmQnl0ZUFycmF5ID0gV1RGOjpVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZChxdEJ5dGVBcnJheS5sZW5ndGgoKSk7CisgICAgICAgIFdURjo6UmVmUHRyPEpT
Qzo6VWludDhDbGFtcGVkQXJyYXk+IHd0ZkJ5dGVBcnJheSA9IEpTQzo6VWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocXRCeXRlQXJyYXkubGVuZ3RoKCkpOwogICAgICAgICBt
ZW1jcHkod3RmQnl0ZUFycmF5LT5kYXRhKCksIHF0Qnl0ZUFycmF5LmNvbnN0RGF0YSgpLCBxdEJ5
dGVBcnJheS5sZW5ndGgoKSk7CiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4
dCk7CiAgICAgICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmgKaW5kZXggNjU5OGVmYjdmYjYwZTNkMDYzN2UyZDEyNzM2YmI5YWJhMjExMGYx
Mi4uZjA0ZmJiMmQzMzg4ODA4NmI1ZGZkODgyNGM0ZTBmYWVmMmE5YWNkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5jcHAKaW5kZXggYmY4YzMzZDk2ZDM4NmE5MTU5OWUzNjBkMWEwYTA3Y2I1
MDY2NzE3Zi4uZjY5Njc3NWIzYjhkNWRjMDI2ZDNmMTIwNTBkNmIzOWE3Mjk5MDhiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXIuaAppbmRleCA3ZjIxMzNkZTA4YTFlMTQ3MWNiYTljM2RmZTBlNzk5NDA0MDNlM2ExLi5j
MjBmOTdhOWZiZjNkZjkzYTI1NGM1M2IwYzNlYTU5MDMxY2JjOTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEJsb2I7CkBAIC03Myw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBSZWFkeVN0YXRlIHJlYWR5U3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAgICAgUGFzc1JlZlB0cjxGaWxlRXJyb3I+
IGVycm9yKCkgeyByZXR1cm4gbV9lcnJvcjsgfQogICAgIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRU
eXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkVHlwZTsgfQotICAgIFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0OwogICAgIFN0cmlu
ZyBzdHJpbmdSZXN1bHQoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA3N2MwNWZlODEzYjc4NzA0ZGE0M2Y5
M2NhMmE5NTAyZTQyYTM1NWQ0Li4yNDQ3YzMwZWE1MTRhZmM4YWYyMjViNGVhNmVmMDRjMjJkYTU3
Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIu
aCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5
QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaAppbmRleCBlYzFiZGZkYjJkNTEyOTU3YTM4M2JlNjVhZGYxYTVmZmE5
ODY5ZDc4Li4yNGYxZTdmMWJkYTg2YTM0Nzc3MThmMTcxYWYwNzJjYmVjOWY5NTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNDAsNiArNDAsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC03Miw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBTdHJpbmcg
c3RyaW5nUmVzdWx0KCk7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXJS
ZXN1bHQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyUmVzdWx0KCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNUUkVBTSkKICAgICBQYXNzUmVmUHRyPEJs
b2I+IGJsb2JSZXN1bHQoKTsKICNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNKQpAQCAtMTA1LDcgKzEw
OSw3IEBAIHByaXZhdGU6CiAgICAgS1VSTCBtX3VybEZvclJlYWRpbmc7CiAgICAgUmVmUHRyPFRo
cmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3Jh
d0RhdGE7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmF3RGF0YTsKICAgICBib29s
IG1faXNSYXdEYXRhQ29udmVydGVkOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nUmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcAppbmRleCA3OWU1MjAwZWE3YWZi
ZGNjZTk3MjJhOGYxZmYyNjUxYzA4YjRiNTc0Li4yZDUzYWZkMWI5ZTcyMThiNTJkMzM1MjgwOTYw
MTYyZGI2NDNiMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNw
cApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxl
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgotI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmggYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgKaW5kZXggOWZlNWMzMDAzYjVkZTc4YjMzMTJjOGIw
M2ZjOGU3NzJjOTRjNDlkZC4uNTAxNDBlZmNkZDYwZDY1OTg1NDNmZmM3ZWNiYjNiZDc4MDZhMDE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaApAQCAtMzcsNiArMzcs
MTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC01NCw3ICs1OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgfkZpbGVSZWFkZXJTeW5jKCkgeyB9CiAKLSAgICBQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
QmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
IHJlYWRBc0FycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIFN0cmluZyByZWFkQXNCaW5hcnlTdHJpbmcoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIHJlYWRBc1RleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxv
YiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dl
YktpdEJsb2JCdWlsZGVyLmNwcAppbmRleCAxNjIyZTJmZTQyYjBiOTNhYjkwZDgzZjFkZjFhNDc0
MWZlNDNjMWJmLi40YjNhMmVhN2FhZjE2Mjk3YjU1OTlkYjhmZjA3NjZiM2NiOTliNThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcApAQCAtNDAsOCAr
NDAsOCBAQAogI2luY2x1ZGUgIkxpbmVFbmRpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2suaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZm
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dl
YktpdEJsb2JCdWlsZGVyLmgKaW5kZXggMzM1YmM3NjZkZWE1ZDYyYjllNzA0Njc1YjFmYThkMDBm
NTcyZTQ3Yy4uYmNjYzI3ODAyMDEyZGUzMDkyYzk1MTVjMmZhZWZlZWRmOWM0ZGJiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaApAQCAtMzQsNiArMzQsMTEg
QEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IE1vdmUgdGhpcyBmaWxlIHRv
IEJsb2JCdWlsZGVyLmgKQEAgLTUwLDggKzU1LDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5k
KEJsb2IqKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyYgZW5kaW5nKTsKICNpZiBFTkFCTEUoQkxPQikKLSAgICB2b2lkIGFwcGVuZChBcnJheUJ1ZmZl
ciopOwotICAgIHZvaWQgYXBwZW5kKEFycmF5QnVmZmVyVmlldyopOworICAgIHZvaWQgYXBwZW5k
KEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFwcGVuZChKU0M6OkFycmF5QnVmZmVyVmll
dyopOwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPEJsb2I+IGdldEJsb2IoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCAzYTlhNmQ5MzJjNmY2MDI3YjNiYjI0YjQwNWVkODRiNWZlZGFhYWY2Li45NjMyNDkzYmI1
M2QxZWI3NjNhMmViY2FmNmNlMTEwZjQ4Mzc1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQAogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1
ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05vbkNvcHlpbmdTb3J0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuaAppbmRleCA3NjE2ODcwNjNhNTVlNTQ1ZmJjZGRjNjhmYjA4OTJmNDllNDljYTlhLi44
MGIzZWIwY2RmYjZmODkwYWMyMDNkNDM2ZmI1NjhhZmE2MDI1YWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmgKQEAgLTMwLDkgKzMwLDkgQEAKICNkZWZpbmUgSW1hZ2VEYXRhX2gKIAogI2luY2x1
ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5jcHAKaW5kZXggMmY2MmRiYzQ5MDllYjIzZTMx
YzljNzU3N2Y4YzI0M2UyMjIyYjdjNy4uMDNiMjUxMmRlOTkxOTA3ODlhYjEwNzU3ZmYyYTgwMzA2
MjY0ZGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlFdmVudC5oIgogCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50
OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQXJyYXlCdWZmZXIuaWRsCmluZGV4IDBmNzBhZjY0ZGExN2NmMzBkMDBmNGRiYWFkNWYw
OWI2OTVmZjY2ZjQuLjgzNjMxMzdhOGE2MWQ2NjFmYTk5ZjQ0OWFlMTBiZTA3OGFiNjE1ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwKQEAgLTI4LDcgKzI4
LDcgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgQ3VzdG9tQ29uc3RydWN0
b3IodW5zaWduZWQgbG9uZyBsZW5ndGgpLAogICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAgSW1w
bGVtZW50YXRpb25OYW1lc3BhY2U9V1RGLAorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpT
QywKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBBcnJheUJ1ZmZl
ciB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYnl0ZUxlbmd0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRsCmluZGV4IDNk
NmZhZTJhNDBlOGI1Mzk5ZGExZTU3YThhNDQ2MzVhMzAyNmU0NGMuLmZjNjFhNWU4MjdmMDg2YmRl
MmQzZTljZWUyZjUzYTAzOTBmMTdmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0FycmF5QnVmZmVyVmlldy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXJWaWV3LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIEN1c3RvbVRv
SlNPYmplY3QsCiAgICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVz
cGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEFy
cmF5QnVmZmVyVmlldyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFycmF5QnVmZmVyIGJ1ZmZl
cjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggY2FhZTBiYTI1NjhlNTBlM2Y2YjA2ZGRiMWNkNWY5ZDYyZTI5ZGZkMy4u
ODUxYzAzNGNkNzEwODBhYTRjYjQ1Y2M0M2U0NWMxZDVkZDI0MTQzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC02MiwxMCArNjIsMTEgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2VuZGlmCiAK
KyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisKICNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaAppbmRleCAwMGQ1NmQ4ZjE4N2Y5Zjk2ZTdmZDBiNzQ1
OGI3ZDI0ODQwYmQ1MDQyLi4wMGRkNmU0Y2EwODhkMWU4OTc1Yzc2OWVmY2RhODcxMmExYzA0Mjkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmgKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpZm5kZWYgRGF0YVZpZXdfaAogI2RlZmluZSBEYXRhVmlld19oCiAKLSNpbmNsdWRlIDx3dGYv
QXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbAppbmRleCBhYzI1OGQ1NTU2
MWM1YzU5YzBmZGYzZTY0MzYxOWFiMzc1MmQ2MWFlLi44MzNkMDExMWFhZWE5ODcyNWE2MzBlOThl
YTBiMGM0NDk2NWNkODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9G
bG9hdDMyQXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJB
cnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1mbG9hdCwKLSAgICBJbXBsZW1lbnRh
dGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50
ZXJmYWNlIEZsb2F0MzJBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWdu
ZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9GbG9hdDY0QXJyYXkuaWRsCmluZGV4IGRlZTQ0ZjZjNDBhYTUwMmRhNzFmNzkxMjA4ZDYy
YmRiYjViZTU0YWYuLmM5OGMwMzJjYzBiZmZjYzhlNTc4MTIzNDg3YTIxM2Y2MjYzMGJhMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmlkbApAQCAtMzMsNyAr
MzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywK
ICAgICBUeXBlZEFycmF5PWRvdWJsZSwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYK
KyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEZsb2F0NjRBcnJh
eSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJf
RUxFTUVOVCA9IDg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0lu
dDE2QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwK
aW5kZXggMDU3NjQ2MGRiNjAyZGJmNDY4YjFmYzRiOWU2ZDI3YTkyNmU5MjFiNC4uNDMzZjM2Zjcy
OWRhNjJjNTNlYzY3N2VkZjk3ZTg3Mjg5NzMzNjMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvSW50MTZBcnJheS5pZGwKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBDdXN0b21Ub0pTT2Jq
ZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1zaG9ydCwKLSAg
ICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFj
ZT1KU0MKIF0gaW50ZXJmYWNlIEludDE2QXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSAyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCmluZGV4IGQ4NjdlNjVkZDI5ZDAwZDQxZTRiYTdh
Yjk2ZmQ0ZDMxYTcyZTdmMGMuLjUzYTcwYjcyNjFkZDUxZjU1NmYwNWJjZmQ2MTZlM2RjN2EzOTFj
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCkBAIC0zMyw3
ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRz
LAogICAgIFR5cGVkQXJyYXk9aW50LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgor
ICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgSW50MzJBcnJheSA6
IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxF
TUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhB
cnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsCmluZGV4
IDZjYjIwYTE0NmUzNjkyNDAxMWQ5ZDg3NGFjZmM3YTUwNmUzOWMzYjYuLjVkYjAyYWQzMjk4OTA0
YTA3NTY4NGZkMzIxMzhlYWViNDkxZmUzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0ludDhBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
SW50OEFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAg
ICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PXNpZ25lZCBjaGFyLAotICAg
IEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNl
PUpTQwogXSBpbnRlcmZhY2UgSW50OEFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25z
dCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gMTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCmluZGV4IDcwOGNkYjMwMTViNzM2YmY5MGU4MTY1
Mzc3M2YwZmMxOWY3OGRjOGYuLjgyOTJiM2I5ZDQyMmNlN2ZlZjUwY2RjMmNiY2MyZGNiN2MxYmZm
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwKQEAgLTMz
LDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFu
dHMsCiAgICAgVHlwZWRBcnJheT11bnNpZ25lZCBzaG9ydCwKLSAgICBJbXBsZW1lbnRhdGlvbk5h
bWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNl
IFVpbnQxNkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25n
IEJZVEVTX1BFUl9FTEVNRU5UID0gMjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvVWludDMyQXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWlu
dDMyQXJyYXkuaWRsCmluZGV4IDY0M2MwOTJkZTNhYjE4YTk1ODZiNjc1OGU2NDQ2Y2MzYzNhYzk4
NmMuLmI1YzA1NWQ0MzEyZDkzN2QzY2I2MzM5NTE1ZTIzNzFiNWFjNTI3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAg
ICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRB
cnJheT11bnNpZ25lZCBpbnQsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisgICAg
SW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBVaW50MzJBcnJheSA6IEFy
cmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVO
VCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJy
YXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKaW5kZXgg
ZGFmM2Y4MDU3MzAzMGUyZjg2ZjFhNDU3NWIzMjk1ODljZTA0MTcxYi4uMjQxNmE0N2RmNjQ4YjM3
ODcyMDFlOTM4ZDZjNDkwOTBjNmZhMmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvVWludDhBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
VWludDhBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAog
ICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT11bnNpZ25lZCBjaGFyLAot
ICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNw
YWNlPUpTQwogXSBpbnRlcmZhY2UgVWludDhBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAg
Y29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDE7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbAppbmRleCBiMTdmMTM1
NzJjZWI5NTBmNTU2N2JmODJjYzA3N2JlNGZlYmQwZjhmLi41YTk5OTVlODA4MzQ4ODZlY2M0M2Q3
MzA2OWU5YThkMDg2MmZhN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9VaW50OENsYW1wZWRBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
VWludDhDbGFtcGVkQXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09i
amVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9dW5zaWduZWQg
Y2hhciwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlv
bk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIFVpbnQ4Q2xhbXBlZEFycmF5IDogVWludDhBcnJh
eSB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDE7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDA1MTI0NTBkNzYyZGNh
YTRlMTI5YmE5Yjc2MzFjZjM5ZjkyM2E2ZDAuLjk0NjViNjc0YWQ4NjgwNDllMDU0NTNkYjg0ZTE3
MWYzMjQyMmNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApA
QCAtMzAsNiArMzAsMTEgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFj
ZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xCdWZmZXIgOiBwdWJsaWMgV2ViR0xT
aGFyZWRPYmplY3QgewpAQCAtMzksMTMgKzQ0LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogCiAg
ICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEdDM0RzaXplaXB0ciBzaXplKTsKLSAgICBib29s
IGFzc29jaWF0ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXIqKTsKLSAgICBib29sIGFzc29jaWF0ZUJ1
ZmZlckRhdGEoQXJyYXlCdWZmZXJWaWV3Kik7Ci0gICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJTdWJE
YXRhKEdDM0RpbnRwdHIgb2Zmc2V0LCBBcnJheUJ1ZmZlciopOwotICAgIGJvb2wgYXNzb2NpYXRl
QnVmZmVyU3ViRGF0YShHQzNEaW50cHRyIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3Kik7CisgICAg
Ym9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICBib29sIGFz
c29jaWF0ZUJ1ZmZlckRhdGEoSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBib29sIGFzc29j
aWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGludHB0ciBvZmZzZXQsIEpTQzo6QXJyYXlCdWZmZXIqKTsK
KyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGludHB0ciBvZmZzZXQsIEpTQzo6
QXJyYXlCdWZmZXJWaWV3Kik7CiAKICAgICBHQzNEc2l6ZWlwdHIgYnl0ZUxlbmd0aCgpIGNvbnN0
OwotICAgIGNvbnN0IEFycmF5QnVmZmVyKiBlbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2VsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IEpTQzo6QXJyYXlC
dWZmZXIqIGVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5
QnVmZmVyLmdldCgpOyB9CiAKICAgICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZvciB0
aGUgZ2l2ZW4gdHlwZS4gUmV0dXJucyAtMSBpZgogICAgIC8vIG5vbmUgaGFzIGJlZW4gc2V0LgpA
QCAtNjgsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgR0MzRGVudW0gbV90YXJnZXQ7CiAKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fZWxlbWVudEFycmF5QnVmZmVyOworICAgIFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBtX2VsZW1lbnRBcnJheUJ1ZmZlcjsKICAgICBHQzNEc2l6ZWlwdHIg
bV9ieXRlTGVuZ3RoOwogCiAgICAgLy8gT3B0aW1pemF0aW9uIGZvciBpbmRleCB2YWxpZGF0aW9u
LiBGb3IgZWFjaCB0eXBlIG9mIGluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEdldEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmNwcAppbmRleCBmNzE2NmM0MTkzMmRjMzQ3NmQ4YjVjMmUxMWEzZWM0MmU0NDI1
YjFkLi44ZTI3ZDNiOWExMTIwYTc2ZjdjMzBhYzAxZTFiODA0YmQwNjYyNmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKQEAgLTM2LDEwICszNiwxMCBA
QAogI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJl
LmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgotI2luY2x1ZGUgPHd0
Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgotI2luY2x1ZGUg
PHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXku
aD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9V
aW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEdldEluZm8uaAppbmRleCA3ZjliMDQyNjZhMGVhNjY3ODViMGJjOTFiNjBm
YmE4ZTFiZjQ0NWU0Li4wODI2MTJhYzllMWM4NzI4MTBhODk2MTI4NjlhNTU1N2U3OTVmYWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaApAQCAtMzMsMTIgKzMz
LDEyIEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFRl
eHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCi0jaW5jbHVk
ZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJy
YXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOGZmMDkxYmM5MmEyYjRkYmQ1NDY0MjVkMjkzZjkx
ODE4NjA4NGNkOC4uZDFlMjEyMTc3YWQwNzg0M2M0M2IzMmRkNTc2MTczZjk3OTRjZGFjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC03NCw5ICs3NCw5IEBACiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCiAjaW5j
bHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMy
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093bkFycmF5UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaAppbmRleCA5NzIzY2E3NzZiMDg0ODlhOWRkNjQwYTM2NWI0YWNjNmNhZmVkNDhjLi44YjVj
YjY5Y2E5NjBlZmUwMzA3NWYxOWNmNjc1NjQwZmFkMDJmM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzQsOCArMzQs
OCBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgiCiAKLSNp
bmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50
MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA4OGYzZDYwZTE2NzZlMjMxN2NmMTM3YWRhOWQyNDZk
NmVlYWU3YmY3Li4xZGMzZTEyZWNhNDcwZmU2NGIxNTQwMjhkZGE4OGY3NmRjMDE1NWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRHQ0V2ZW50LmgiCiAjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCi0jaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1Nv
cnQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKaW5kZXgg
YWU0MTZlZTE3NzdlZTg2MzliZmFmZTA4Y2I0NzQ2YzU3YmZmMzVjYS4uZjBlNGI1ZGE4YmNmMjg4
OWZlMTM4MmE2NzI0MWMwYzI2NDFiNjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcApAQCAtMzIs
NyArMzIsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q3J5cHRvLmgKaW5kZXggMTcyNWFmODZlYjIxYTQ4MTY0ZDcwZDhhZmUyYmFiNjFmY2MzMDIzMC4u
ODY1NTJiYzYxMDViZWNhYTZjYzI2YjVjNWM4Yzc2MjNjNDc1YTI2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0
by5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1
ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKQEAgLTQyLDcgKzQ2LDcgQEAgY2xhc3MgQ3J5cHRvIDogcHVibGljIFNjcmlwdFdy
YXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8Q3J5cHRvPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q3J5cHRvPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRv
KCkpOyB9CiAKLSAgICB2b2lkIGdldFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcqLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMoSlNDOjpBcnJheUJ1ZmZlclZp
ZXcqLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5j
cHAKaW5kZXggNWEyNDhkMGE1YzczMTJlZWUxYmM3MWI0MjdmNGY4NWIwMDQ2ZGU2OC4uNjExMDU2
ZGQ3OTczNjRjN2IxNjQyMjI0YmRmNzViYmMwZWE4N2Q4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtNDAs
NyArNDAsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNETkVPTi5oIgogI2VuZGlmCiAK
LSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093bkFycmF5UHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDg3MWQ3YzA1NTUwZTk4NTlkMGMxYWZhNzYzNDhiMTUw
NTU2NzE4YjQuLmRjOGM2NDM3YWQ4MzMyMTBhZDExZDVhMjU5ZTQwNGVhZmNkYTA4YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMzks
MTEgKzM5LDExIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
VWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCA1M2QxMmFjMzlhZWI3MjFlMWE3OGYyNjc3MzU4Y2E5NWZhYmFmYzk1Li42
MDFjZjAzM2RjZTRjNjliY2E5NGNlMGE2NjM1MTZiMDhjNTcwZjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTQ3LDEwICs0NywxMCBAQAogI2ltcG9ydCAiV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvVWludDE2QXJyYXkuaD4KKyNpbXBvcnQg
PHJ1bnRpbWUvVWludDMyQXJyYXkuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvVWludDhBcnJheS5oPgog
I2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW1wb3J0IDx3dGYvVWludDE2QXJyYXkuaD4K
LSNpbXBvcnQgPHd0Zi9VaW50MzJBcnJheS5oPgotI2ltcG9ydCA8d3RmL1VpbnQ4QXJyYXkuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FW
Rm91bmRhdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9JbWFnZUJ1ZmZlckRhdGFCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyRGF0YUJsYWNrQmVycnku
aAppbmRleCA4ZGEzMzBlOTMwMjA3NGU2M2QzYWY4NGEyNGYxM2FkNWRlNTA0MjI4Li44YTg1YWZk
YTljZmExNjk5NzBkNDA2ZWRjMTRiZGM2NGEzZWY3NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyRGF0YUJsYWNrQmVy
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0lt
YWdlQnVmZmVyRGF0YUJsYWNrQmVycnkuaApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVkZSA8
QmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3MuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZv
cm1HdWFyZGVkUG9pbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCA4ZTYxZWRmZjljODZjZmNmYTQxYWI3MzMxOGQ5Njk5
M2RhYzIxOWQyLi43OTNlYjdiYzg5YTBjM2I4OGEzYWJkYzlmYjc4MTA4ZDg4MTQyMjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRh
dGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyRGF0YUNHLmgKQEAgLTI1LDEwICsyNSwxMCBAQAogICovCiAKICNpbmNsdWRlICJJbWFnZS5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiAj
aWYgKFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzApKQogI2RlZmluZSBXVEZfVVNFX0lPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBiZjUyN2ZmNTNiNjMxNjdj
MmI4NWExNWVmNDNkMjQwZTY2NzQ2ZjZhLi44MTQ1MzkwYjgxNDNmODdkNzkyMzI3MmRjZThlNjZk
ZWI1YTFiMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJU
cmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5o
PgogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgKCpCbGVuZFR5cGUpKHVuc2lnbmVkIGNoYXIgY29s
b3JBLCB1bnNpZ25lZCBjaGFyIGNvbG9yQiwgdW5zaWduZWQgY2hhciBhbHBoYUEsIHVuc2lnbmVk
IGNoYXIgYWxwaGFCKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggYmRmNTU1MmFlMTg5ODEw
NDNmNTI2MmI4NGI5MjBjMjI3MWNmYzJmYS4uNGQ1MmY4ZjU3Yzc4YTY3MjJmYzRmYTY0MWY2ZmM2
ZGI2YmViNzQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5j
bHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2lu
Y2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCmluZGV4IDIyOTQ0MjZk
ZWY5Y2UxNWE2NDEzNTkyMGY2NjNmMWFhNGNlZTJkMmQuLmU0OTRiMDhiZDFmMDY2Y2YwMmQ5OTEw
Mjc1NmUxMDc5YzI1YmY5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcApAQCAt
MzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAyN2U3M2FhOWNmNTc1MTBlNDMyYjQ0ODU5N2FlNGZi
OTFjNjE5M2EwLi4wNjI5MWU3OWIyN2EzODczNDQ3NGZjZDEzMTRlZmJkMWE1YWU3YzllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1Rl
eHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFt
cGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXggZmFkOTJj
OTVhMWY1MGU0MGNmMTUzMDc4NmNiY2VmNjU1ZDhiZDc0YS4uNzM5NjhkODhiOWY2YzZiZmM4OGUz
ZWI3MjY0Nzg0YmFjYzJhODk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCkBAIC0zMCw4
ICszMCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRT
dHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAppbmRleCBj
MjJmNTBlZjkwMTA5YzI4MGFiY2RmYmE0Njc0YTg4NDhmNzc0N2NkLi5jNDMwNmMwZmExNGE4MjQ0
M2EzOTQyZDg1YzM3YmFiMDJmZjMwY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApAQCAtNDEs
NyArNDEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRl
IDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
c3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRleCAwMjVmZjY1YWMzYTg2YzM3MjljZDdlMDVl
YzM0MTkwYmIwODdiYmE1Li44ZWI1NjQwZTI4YmM2ZWFiMmU1YmIxYWE4ZDliMmU2NWFmYTUxNjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNs
dWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xh
bXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmlu
ZGV4IGMxZWZhMmFkZWFmNjUwMmY2NjgxMDEwNjFhZjhlNTU2OWQyMzRkYzguLjA5NzdkZDJlZjc1
ZWJiNmI0NjlmOWM0ZDI0MmQwMmIwNTlkMzlkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTI5
LDggKzI5LDggQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlIDxydW50aW1lL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRl
IDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmNwcAppbmRleCA0NDZlMjVhMTBjNWU2MzQ3NWE1ZTQwYTQ3NGVkZGU0YTIz
YjZjODRlLi42MWJhMzAyYTRhY2VkODE3ZTk0Mzg5NjU1OGJiNTNjOGM4ZWIyYzkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVB
c1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggYjQwYmIxMzA5MGFiZjMx
Mjc2NDg5MTM3Njk2Nzc4NjNlYjBkZWI4ZS4uZWI3OWJiZGJjYjU0YjA1YzM4YTE5ODQyYjA1MDc1
NzQ3MDI0MDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJMaWdo
dFNvdXJjZS5oIgogI2luY2x1ZGUgIlBvaW50TGlnaHRTb3VyY2UuaCIKICNpbmNsdWRlICJTcG90
TGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNs
dWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIC8vIENvbW1vbiBiYXNlIGNsYXNz
IGZvciBGRURpZmZ1c2VMaWdodGluZyBhbmQgRkVTcGVjdWxhckxpZ2h0aW5nCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcAppbmRleCA5ZTcyMGY3NGFjZWI5Nzg5NzFmNDJmMWU5NTE1MzczOGQyZjVjZDI4Li42
YjAyOGVlMzkzNzY5MjlkZGVlYjdmMzRhYzE0Mjc4MjZmZDJlNmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
Y3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4
Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2luZyBzdGQ6Om1p
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAxNzY4ODc0NmY2ZjllNDQ2MjcxYTQxZmNiMWUyNTEx
MWVhZDFjNWE1Li5jNGJkOTc5NWQ2Y2VkODMzZDRlN2ZiNjlmZTNiMWM1YWM5NzRmZjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVs
ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFz
VGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWlu
dDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9QYXJhbGxlbEpvYnMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggNWRkMDY1ZDk4
ZGE3Yzc5ZjVjOWI3YjE3OThmZDAwMTE3YjNhN2NiNS4uZjFiNDVkNjk3MTEzMmJjOGRlZDQ0OWQx
MDhlMWI1ZTRhNjBiZDQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAog
I2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogI2lmIEhBVkUoQVJNX05FT05fSU5U
UklOU0lDUykKICNpbmNsdWRlIDxhcm1fbmVvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMjk2NDYx
ZjlmMTk3NGI4ODljMjNmZDgyMzZhZjg2N2FkNTJlY2FjZS4uY2RjN2E1MDEyZWY3OGNmYWMxYjVl
ZGJkMTVhMThjOTgyODVjYjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yNywxMCArMjcsMTEgQEAK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKKyNpbmNsdWRl
IDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisKICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogI2lmIEVOQUJMRShPUEVOQ0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KaW5kZXgg
MjYxM2FhYWE4NjQyZTk4NWE2YjkzNzZjYzI0NDY5NTkwNzg0NzAzMS4uYzJjNDNlOTQ2MDE4MTcy
YzNiZjY5NGNlNjM5NjZlZGFjZjQ5ODlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQpAQCAt
NDMsMTEgKzQzLDExIEBACiAjaW5jbHVkZSA8T3BlbkdML2dsLmg+CiAjaW5jbHVkZSAiV2ViR0xM
YXllci5oIgogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVm
ZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUgPHd0Zi9J
bnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0
Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFy
cmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21t
b24uY3BwCmluZGV4IDlkNDZhNGMzZGUwYTA4M2UxODg5MDFhYjVlMjZhMDQ0MGU3ZWUwNDkuLjY5
MDJiNjEzNWVmYjFhNWY2ZTA1OGQwMzkzZmRiM2NhYzg3NzllOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBACiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYv
QXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1
ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9G
bG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRl
IDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgVVNFKE9QRU5HTF9FU18yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjViYTQ0OThlYjZkYmJmMzg3YTM5YjA3Mzgw
YjNkY2E1ZGFjNWFmNS4uZDAyNDllZGFkZDJjYjg0Y2ZkZGMxM2ExNjUxODc3MzI1NDA0NzA5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVk
ZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmNw
cAppbmRleCAzZTZiZjhhMTRjYjU0OGM5MzlhMzZhYzc5MGY0NmI3MmU1NDU2OTJiLi4yYTcwOTVk
YjUxYjFkMTdiYTgwMGJjNDIxNjYyN2IwMzE5MjA2M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNETS5oIgogI2luY2x1ZGUg
Ik1lZGlhS2V5RXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDA5ZTdmZTU4MjUyZjkxOWI4NjcwZGUxZDhh
ZmRhZTE5ZmI2NzNjZmYuLjRiYzA1OTZlNzhjZTAwMWM5NmU5NDA3YWMwNzAyOTJkNDU1MWJhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNTgsMTAgKzU4LDEwIEBA
CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIK
ICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaAppbmRleCAxY2Q3NmJjZGQ0OTA1MmI4ODA1OGQ4YWUzZjAzYWM1YTM2YTkz
NmRhLi42YWZmZjM3ZWE2Y2I0ZDA1MTAwMWNhZmNmOWFiMmFlZDA1MmE5YTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMzUsNiArMzUsMTEgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworY2xhc3MgQXJyYXlC
dWZmZXJWaWV3OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC05
MSw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgc2VuZChET01Gb3JtRGF0YSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoQXJy
YXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZW5kKEFycmF5QnVmZmVyVmll
dyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlciosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcqLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogICAgIHZvaWQgc2V0UmVxdWVzdEhlYWRl
cihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIG92ZXJyaWRlTWltZVR5cGUoY29uc3QgU3RyaW5nJiBvdmVycmlk
ZSk7CkBAIC0xMjAsOCArMTI1LDggQEAgcHVibGljOgogICAgIFJlc3BvbnNlVHlwZUNvZGUgcmVz
cG9uc2VUeXBlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUeXBlQ29kZTsgfQogICAg
IAogICAgIC8vIHJlc3BvbnNlIGF0dHJpYnV0ZSBoYXMgY3VzdG9tIGdldHRlci4KLSAgICBBcnJh
eUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlcihFeGNlcHRpb25Db2RlJik7Ci0gICAgQXJyYXlC
dWZmZXIqIG9wdGlvbmFsUmVzcG9uc2VBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2VBcnJheUJ1ZmZlci5nZXQoKTsgfQorICAgIEpTQzo6QXJyYXlCdWZmZXIqIHJlc3BvbnNl
QXJyYXlCdWZmZXIoRXhjZXB0aW9uQ29kZSYpOworICAgIEpTQzo6QXJyYXlCdWZmZXIqIG9wdGlv
bmFsUmVzcG9uc2VBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VBcnJheUJ1
ZmZlci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRMYXN0U2VuZExpbmVOdW1iZXIodW5zaWduZWQg
bGluZU51bWJlcikgeyBtX2xhc3RTZW5kTGluZU51bWJlciA9IGxpbmVOdW1iZXI7IH0KICAgICB2
b2lkIHNldExhc3RTZW5kVVJMKGNvbnN0IFN0cmluZyYgdXJsKSB7IG1fbGFzdFNlbmRVUkwgPSB1
cmw7IH0KQEAgLTIyMiw3ICsyMjcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPERv
Y3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAgICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7Ci0gICAgbXV0YWJsZSBSZWZQdHI8QXJyYXlCdWZm
ZXI+IG1fcmVzcG9uc2VBcnJheUJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPiBtX3Jlc3BvbnNlQXJyYXlCdWZmZXI7CiAKICAgICBib29sIG1fZXJyb3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208148</attachid>
            <date>2013-08-05 14:31:23 -0700</date>
            <delta_ts>2013-08-05 14:48:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119489-20130805143436.patch</filename>
            <type>text/plain</type>
            <size>273188</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTU5YjIyZjlhNTk2NTRiOWU3NDFhYTE5MmIyNjIwM2M1N2VkMzA4Li5iZDEwYmEyNjU5MDViNjU4
NmIwODMxODM3NjI0Yjc0YTc3OGU0MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQyBpbiBhZHZhbmNlIG9mIHJlLWltcGxlbWVudGF0aW9u
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEpTQ1R5cGVkQXJy
YXlTdHVicy5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Ojp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjphZGRWaWV3KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmguCisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpkYXRhKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM6OmNvcHlUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjppc05ldXRlcmVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6On5BcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZSk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpzbGljZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp+
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaC4KKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJhc2VBZGRyZXNz
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXROZXV0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojppc05ldXRlcmFibGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeVN1YlJhbmdlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojpz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6CisgICAgICAg
ICogcnVudGltZS9GbG9hdDMyQXJyYXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0Zs
b2F0MzJBcnJheS5oLgorICAgICAgICAoSlNDOjpGbG9hdDMyQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OkZsb2F0MzJBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OkZsb2F0MzJBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpGbG9hdDMyQXJyYXkpOgorICAgICAg
ICAoSlNDOjpGbG9hdDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0Zsb2F0
NjRBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmguCisg
ICAgICAgIChKU0M6OkZsb2F0NjRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFycmF5OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheSk6CisgICAgICAgIChKU0M6OkZsb2F0NjRB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSW50MTZBcnJheS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oLgorICAgICAgICAoSlNDOjpJbnQxNkFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkludDE2QXJyYXk6OkludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpJbnQxNkFycmF5OjpzdWJh
cnJheSk6CisgICAgICAgICogcnVudGltZS9JbnQzMkFycmF5Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9JbnQzMkFycmF5LmguCisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OmdldFR5
cGUpOgorICAgICAgICAoSlNDOjpJbnQzMkFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJ
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50MzJBcnJh
eTo6SW50MzJBcnJheSk6CisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OnN1YmFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL0ludDhBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYv
SW50OEFycmF5LmguCisgICAgICAgIChKU0M6OkludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAg
IChKU0M6OkludDhBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpJbnQ4QXJyYXkpOgor
ICAgICAgICAoSlNDOjpJbnQ4QXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTo6SW50ZWdyYWxU
eXBlZEFycmF5QmFzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QmFzZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6
VHlwZWRBcnJheUJhc2U6OmRhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c2V0
KToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OnNldFJhbmdlKToKKyAgICAgICAgKEpT
Qzo6VHlwZWRBcnJheUJhc2U6Onplcm9SYW5nZSk6CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlC
YXNlOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlCYXNlOjppdGVtKToKKyAgICAgICAgKEpTQzo6VHlw
ZWRBcnJheUJhc2U6OmNoZWNrSW5ib3VuZERhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5
QmFzZTo6VHlwZWRBcnJheUJhc2UpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c3ViYXJyYXlJbXBsKToKKyAgICAgICAg
KEpTQzo6VHlwZWRBcnJheUJhc2U6Om5ldXRlcik6CisgICAgICAgICogcnVudGltZS9VaW50MTZB
cnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaC4KKyAgICAg
ICAgKEpTQzo6VWludDE2QXJyYXk6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJheTo6VWludDE2QXJyYXkpOgorICAgICAgICAo
SlNDOjpVaW50MTZBcnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDMyQXJy
YXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQzMkFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6OlVpbnQzMkFycmF5KToKKyAgICAgICAgKEpT
Qzo6VWludDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL1VpbnQ4QXJyYXku
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaC4KKyAgICAgICAgKEpT
Qzo6VWludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpVaW50OEFycmF5OjpVaW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6VWludDhB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6Onpl
cm9GaWxsKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheSk6CisgICAgICAgIChK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDEzLTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29waWVkIHNwYWNlIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBtb3JlIHRoYW4gb25lIGNv
cGllZCBiYWNraW5nIHN0b3JlIHBlciBKU0NlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYmY4MzIwMzYxMWRjMzhlZjAzMWQ0
ZDAxZDAzY2NhMTM3M2VlNDBhZi4uZWRhMDIxYjc3YzE4NTc0MjAzMWY0NWUwZDhmMDA0ZjgwN2Zk
N2IyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wOC0wNSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJheSBpbXBsZW1lbnRhdGlvbiBp
bnRvIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE5NDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gZnJvbSBXVEYKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKwogMjAxMy0wOC0wMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGEgYnVuY2ggb2Yg
cmVkdW5kYW50IGNoZWNrcyBmb3IgZW1wdHkgc3RyaW5nIGluIFN0cmluZ0ltcGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlMzFmNTkxOTc4ZjRmZDgyZGYzMWFjZGY0YmE2Y2Q0NmZjMWFiNzNkLi42ZWJhZTlhMzdj
M2RjZTNkMDlkOGE2MTczNjQxZjUxMzY4OWZlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIy
IEBACisyMDEzLTA4LTA1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBUeXBlZEFycmF5IGltcGxlbWVudGF0aW9uIGludG8gSlNDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk0ODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV2ViQ29yZSBmb3IgbmV3
IGxvY2F0aW9uIG9mIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IEFkZGVkLgorICAgICAg
ICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQzMkFycmF5Lmg6IEFkZGVkLgorICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5Lmg6IEFkZGVkLgor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oOiBBZGRlZC4K
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlwZWRB
cnJheUJhc2UuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9V
aW50MTZBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1VpbnQzMkFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvVWludDhBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQW5hbHlzZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEZs
b2F0RnJlcXVlbmN5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEJ5
dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0Qnl0
ZVRpbWVEb21haW5EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjph
dWRpb0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtVGltZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0
b0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkSW5jbHVkZXNGb3JUeXBlKToKKyAgICAg
ICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoK
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJTeW5jLmg6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5j
cHA6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXJWaWV3LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0RhdGFWaWV3Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9GbG9hdDY0QXJyYXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0ludDE2QXJyYXku
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0ludDhBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWludDE2QXJy
YXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50
OENsYW1wZWRBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjplbGVtZW50QXJyYXlCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAg
ICAqIHBhZ2UvQ3J5cHRvLmNwcDoKKyAgICAgICAgKiBwYWdlL0NyeXB0by5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpvcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIpOgorCiAyMDEzLTA4LTA1
ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFhNTFRy
ZWVWaWV3ZXIgc2hvdWxkIGJlIGNyZWF0ZWQgb25seSBpbiB0aGUgWE1MIHZpZXdlciBtb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDgxMTM3YWFlZjkw
MDRmODQ4MTIyYmRkMGIwMzA2MTM3ZDg0ZGFjNGEuLmQwYmI3ZDY0YmVhNDY5MGVkMjZhZTZiOTc2
OGQzYWVjZmFmODAwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zMiw3ICszMiw3IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAKIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAotICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJU2hpbXMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaCBcCkBAIC02NDQsNiArNjQ0LDEwIEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29udmVudGlvbnMuaCBcCkBAIC03MDUsNiArNzA5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmxvYXQ2NEFycmF5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIFwKQEAgLTcyMyw2ICs3MjksMTAgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
ZXhpbmdUeXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXku
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCkBAIC04ODIsOCAr
ODkyLDEzIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHJh
Y2luZy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5RGVzY3JpcHRvci5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZBcnJheS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJhY3Rpb24uaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VaW50OENsYW1wZWRBcnJheS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTVN0YWNrQm91bmRzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNo
ZG9nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKaW5kZXggZDdhYzFlZjcy
ZWNhYzZhMmU2ZGM3MjgzYTc4MWU1YWJlNTViZjcyMS4uMzkzZTEyMWIyYmZmNzAwOGQ4N2IyMzA5
YzdkZTkzZTcxYjhmNjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5
cGVkQXJyYXlTdHVicy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5
U3R1YnMuaApAQCAtMjYsMTkgKzI2LDIwIEBACiAjaWZuZGVmIEpTQ1R5cGVkQXJyYXlTdHVic19o
CiAjZGVmaW5lIEpTQ1R5cGVkQXJyYXlTdHVic19oCiAKKyNpbmNsdWRlICJGbG9hdDMyQXJyYXku
aCIKKyNpbmNsdWRlICJGbG9hdDY0QXJyYXkuaCIKKyNpbmNsdWRlICJJbnQxNkFycmF5LmgiCisj
aW5jbHVkZSAiSW50MzJBcnJheS5oIgorI2luY2x1ZGUgIkludDhBcnJheS5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNp
bmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+CisjaW5jbHVkZSAiVWludDE2QXJyYXkuaCIKKyNp
bmNsdWRlICJVaW50MzJBcnJheS5oIgorI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRl
ICJVaW50OENsYW1wZWRBcnJheS5oIgorCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvSW50MTZBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5j
bHVkZSA8d3RmL0ludDhBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MTZBcnJheS5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+Ci0j
aW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMDFiYTA3OWQ4MDM5NTg1YTc2YmRk
ZjgxODI4Yzc3MTAxODU2MDA2Li40YzczNzY1YjczMGExMjhhODA4NmIwNDQzYjdhZDliNmYwYjA2
NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODE1LDYgKzgxNSwyMSBAQAog
CQlBN0E0QUUwRDE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1YnNNSVBTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwOTE3OTczQjREMDA1NjEy
QjEgLyogSklUU3R1YnNNSVBTLmggKi87IH07CiAJCUE3QTRBRTBGMTc5NzNCNEQwMDU2MTJCMSAv
KiBKSVRTdHVic1NINC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdBNEFFMEIxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzU0g0LmggKi87IH07CiAJ
CUE3QTRBRTEwMTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic1g4NkNvbW1vbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBNEFFMEMxNzk3M0I0RDAw
NTYxMkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggKi87IH07CisJCUE3QThBRjM0MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIu
Y3BwICovOyB9OworCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI2MTdB
REI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjM2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJh
eUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdBOEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi87
IH07CisJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI4MTdBREI1
RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxv
YXQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGMzkxN0FEQjVGMzAw
NUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThB
RjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4
QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkMxN0FEQjVGMzAwNUFCMTc0
IC8qIEludDE2QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkQxN0FEQjVG
MzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzRDE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdyYWxU
eXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdBOEFGMkUxN0FEQjVGMzAwNUFCMTc0IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4
QUYzRTE3QURCNUYzMDA1QUIxNzQgLyogVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAv
KiBUeXBlZEFycmF5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMDE3QURC
NUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjQwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENs
YW1wZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGNDExN0FE
QjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
N0E4QUY0MjE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAv
KiBVaW50MzJBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3QjQ4RjQ5MEVFODkzNkYwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4
REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJ
QTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0QUNBRTE0ODRDOUNFMDBCMzhB
MzYgLyogSlNFeHBvcnRNYWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2Rl
QmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
OUU3ODFGMTVFRUNCQTgwMDQ3Qzg1NSAvKiBVbmxpbmtlZENvZGVCbG9jay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTAzLDYgKzE5MTgsMjEg
QEAKIAkJQTdBNEFFMEMxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJzWDg2Q29tbW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QTdFRTc0MTFCOThCOEQwMDY1QTE0RiAvKiBBU1RC
dWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFTVEJ1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdBN0VFNzcxMUI5OEI4RDAwNjVBMTRGIC8q
IFN5bnRheENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ludGF4
Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNTE3QURCNUYy
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXJyYXlCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0E4QUYyNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdBOEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5
QnVmZmVyVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyOTE3QURC
NUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZsb2F0MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4
QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZsb2F0NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDMyQXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkUxN0FEQjVGMzAwNUFCMTc0IC8qIEludGVncmFsVHlw
ZWRBcnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZWdyYWxU
eXBlZEFycmF5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyRjE3
QURCNUYzMDA1QUIxNzQgLyogVHlwZWRBcnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhDbGFtcGVkQXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVp
bnQxNkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQxNkFycmF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50
MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0I0OERCNTBFRTc0Q0ZD
MDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3QjQ4REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0I0QUNBRTE0ODRDOUNFMDBC
MzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFeHBvcnRNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDks
OSArMjIzOSw5IEBACiAJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZGOTIyQ0YxNEY0
NkIxMzAwNDFBMjRFIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCQk5MzJGNUJE
OTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovLAogCQkJCTkz
MkY1QkUxMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCi0JCQkJMEZGOTIyQ0YxNEY0NkIxMzAw
NDFBMjRFIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCQkxNDEyMTEyMDBBNDg3
OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMg
LyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4
cCAqLywKQEAgLTI3OTgsMTIgKzI4MjgsMTQgQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFG
IC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTY1NTNBMzJGMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25z
LmNwcCAqLywKLQkJCQk2NTUzQTMzMDE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhz
RXhjZXB0aW9ucy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0
LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAog
CQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLAogCQkJCUJD
MjU3REU2MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuaCAqLywKKwkJCQlBN0E4QUYyNTE3
QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICovLAorCQkJCUE3QThBRjI2MTdBREI1
RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovLAorCQkJCUE3QThBRjI3MTdBREI1RjMwMDVB
QjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwICovLAorCQkJCUE3QThBRjI4MTdBREI1RjMwMDVB
QjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQlCQzc5NTIwNjBFMTVFOEE4MDBBODk4
QUIgLyogQXJyYXlDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkM3OTUyMDcwRTE1RThBODAwQTg5
OEFCIC8qIEFycmF5Q29uc3RydWN0b3IuaCAqLywKIAkJCQkwRkI3RjM4OTE1RUQ4RTM4MDBGMTY3
QjIgLyogQXJyYXlDb252ZW50aW9ucy5oICovLApAQCAtMjgzMiw2ICsyODY0LDggQEAKIAkJCQk2
NUVBNzM2MzBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuaCAqLywKIAkJCQlB
NzA5RjJGMTE3QTBBQzJBMDA1MTJFOTggLyogQ29tbW9uU2xvd1BhdGhzLmNwcCAqLywKIAkJCQkw
RjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8sCisJCQkJNjU1
M0EzMkYxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwICov
LAorCQkJCTY1NTNBMzMwMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRp
b25zLmggKi8sCiAJCQkJQTdFNUEzQTUxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVz
dWx0LmNwcCAqLywKIAkJCQlBN0U1QTNBNjE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25S
ZXN1bHQuaCAqLywKIAkJCQk5NjlBMDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5j
cHAgKi8sCkBAIC0yODYzLDYgKzI4OTcsOCBAQAogCQkJCTg2Q0EwMzJEMTAzOEU4NDQwMDI4QTYw
OSAvKiBFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQk4NkNBRkVFMjEwMzVEREU2MDAyOEE2MDkgLyog
RXhlY3V0YWJsZS5oICovLAogCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRp
b25IYXJuZXNzLmggKi8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJB
cnJheS5oICovLAorCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXku
aCAqLywKIAkJCQlCQzI2ODBDMDBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgKi8sCiAJCQkJQkMyNjgwQzEwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLywKIAkJCQkwRkI0QjUyMTE2QjYyNzhEMDAzRjY5NkIgLyogRnVuY3Rpb25FeGVj
dXRhYmxlRHVtcC5jcHAgKi8sCkBAIC0yODgxLDYgKzI5MTcsMTAgQEAKIAkJCQkwRkI3RjM4RjE1
RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggKi8sCiAJCQkJRTE3ODYzNkMwRDlCRUVD
MzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovLAogCQkJCUUxNzg2MzNGMEQ5
QkVDMDAwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggKi8sCisJCQkJQTdBOEFGMkMx
N0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyRDE3QURCNUYz
MDA1QUIxNzQgLyogSW50MzJBcnJheS5oICovLAorCQkJCUE3QThBRjJCMTdBREI1RjMwMDVBQjE3
NCAvKiBJbnQ4QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyRTE3QURCNUYzMDA1QUIxNzQgLyogSW50
ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovLAogCQkJCUE3ODg1M0Y3MTc5NzI2MjkwMDE0NDBFNCAv
KiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLywKIAkJCQlBNzg4NTNGODE3OTcyNjI5MDAx
NDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4
MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKQEAgLTMwMzgsOCArMzA3OCwx
MyBAQAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovLAog
CQkJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8sCiAJCQkJNUQ1Mzcy
NkUwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLywKKwkJCQlBN0E4QUYyRjE3QURCNUYz
MDA1QUIxNzQgLyogVHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQkwRkVCM0VDQjE2MjM3RjQ3MDBB
QjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0b3IuaCAqLywKKwkJCQlBN0E4QUYzMjE3QURCNUYz
MDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLywKIAkJCQk4NjY3MzlEMTEzQkZERTcxMDAyM0Q4
N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggKi8sCisJCQkJQTdBOEFGMzMxN0FEQjVGMzAwNUFC
MTc0IC8qIFVpbnQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8q
IFVpbnQ4QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhD
bGFtcGVkQXJyYXkuaCAqLywKIAkJCQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3Bw
ICovLAogCQkJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovLAogCQkJCUZFNjYx
NzI3MTc3NEUwMzUwMDQ5NUIwMCAvKiBWTVN0YWNrQm91bmRzLmggKi8sCkBAIC0zNDg0LDYgKzM1
MjksOCBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9w
Y29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjM1MTdBREI1
RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGMzcx
N0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQjdGMzk1MTVFRDhFNDYwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9m
aWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MjIsNiArMzU2OSw3IEBACiAJCQkJMEYwQjgzQTcx
NEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNG
MzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTY1NTNBMzMyMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNF
eGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkUzOTE0MUFCMTREMDAxNzlDOTQg
LyogQ29tcGFjdEpJVENvZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTVBM0E4MTc5NzQz
MkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEMzRjQwRTE2RjVDRDAwQjM0NDYwIC8qIENvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MzUzNCw2ICszNTgyLDcgQEAKIAkJCQlDMkZDOUJEMzE2NjQ0REZCMDA4MTBEMzMgLyogQ29waWVk
QmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0Ux
MTIgLyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDJEMTRBM0M2RTAw
MDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUE1
MkQwMTdBREQ3MTcwMDhFQ0IyRCAvKiBDb3B5VG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
MjM5RDE4MTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzIyMzlEMTkxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNpdG9ySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzIxOEQxNDAxNjU1Q0ZENTAwNjJCQjgxIC8qIENvcHlXb3JrTGlzdC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNjc4LDYgKzM3MjcsOCBAQAogCQkJCTBGMjFDMjdDMTRCRTcy
NzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIx
MDU4NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRCMkNDOTE3M0RBNTIwMDA3QjNDMUIgLyogRlRMQWJi
cmV2aWF0ZWRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMDgxNzA1MTNEQjAwQkI3
MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTFEMTcw
OEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4
Nyw3ICszNzM4LDYgQEAKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9u
VmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcyMkMgLyog
RlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1QTUyRDAxN0FERDcx
NzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjM1QkQ3MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRo
dW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3NDEsNiArMzc5MSwxMCBAQAogCQkJ
CTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDEwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQx
NkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyog
SW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0
IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0QxN0FEQjVGMzAwNUFC
MTc0IC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODg1
M0ZBMTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzExNjY3QjBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyOUQ3N0MwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJl
dGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM5NzUsNyArNDAyOSw2IEBACiAJCQkJRTQ5REMxNkQx
MkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxp
emVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLAotCQkJCTY1NTNBMzMyMTdBMUYxRUUwMDhDRjZG
MyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1
NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdDMUVBRjIxNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrSXRlcmF0b3IuaCBp
biBIZWFkZXJzICovLApAQCAtNDAwNSw2ICs0MDU4LDcgQEAKIAkJCQlBNzM4NjU1NjExODY5N0I0
MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0NDhD
RDEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdBOEFGM0UxN0FEQjVGMzAwNUFCMTc0IC8qIFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVCM0VDRDE2MjM3RjREMDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzRCMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlz
ODYuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzQxMTU4RUJFOEQwMDRDQjlGRiAvKiB1ZGlz
ODZfZGVjb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTQwMTMsNyArNDA2NywxMSBAQAogCQkJCTBG
RjQyNzQ4MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkY0Mjc0OTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3R5cGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0U1QUIzOTE3OTlFNEIyMDBEMjgzM0QgLyogVURpczg2RGlzYXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NjczOUQzMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50
MTZXaXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjQyMTdBREI1RjMwMDVB
QjE3NCAvKiBVaW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0YxN0FEQjVG
MzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjQwMTdB
REI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVC
bG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5MkMxNkQwMjhBRDAwOUU0RkQyIC8qIFVu
dXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDM5Myw2ICs0NDUxLDggQEAKIAkJCQk2
NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0E4QUYzNDE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdBOEFGMzYxN0FE
QjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDdGMzlCRjEwN0VDMzc2MDA0MjdBNDggLyogQXJyYXlDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjYzOTQ1NDE1RDA3MDU1MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMwMTA3RUMzNzYwMDQyN0E0OCAvKiBBcnJheVByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ0MTYsNiArNDQ3Niw3IEBACiAJCQkJMEY4Rjk0
NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzA5RjJGMjE3QTBBQzJBMDA1MTJFOTggLyogQ29tbW9uU2xvd1BhdGhzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTY1NTNBMzMxMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25T
bG93UGF0aHNFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RTVBM0E3MTc5NzQz
MkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC00Njg4LDcgKzQ3NDksNiBAQAogCQkJCTBGRjcyOUFGMTY2QUQzNUMw
MDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjcyOUIwMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkY3MjlCMTE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJDb21w
aWxlZEJ5dGVjb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTY1NTNBMzMxMTdBMUYxRUUwMDhD
RjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjcyOUIyMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckRhdGFiYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjcyOUIzMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY3MjlCNDE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmls
ZXJPcmlnaW5TdGFjay5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmViNmJlNjY1NzhmOGE0NDRl
MjJmYTRjNmUxM2ExMGQ0MjBkYmMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKworI2luY2x1
ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Jvb2wgQXJyYXlCdWZmZXI6
OnRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCwgVmVjdG9yPFJlZlB0cjxBcnJh
eUJ1ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpCit7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBrZWVwQWxpdmUodGhpcyk7CisKKyAgICBpZiAoIW1fY29udGVudHMubV9kYXRhKSB7CisgICAg
ICAgIHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgYm9vbCBhbGxWaWV3c0FyZU5ldXRlcmFibGUgPSB0cnVlOworICAgIGZvciAoQXJyYXlCdWZm
ZXJWaWV3KiBpID0gbV9maXJzdFZpZXc7IGk7IGkgPSBpLT5tX25leHRWaWV3KSB7CisgICAgICAg
IGlmICghaS0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAgICAgICBhbGxWaWV3c0FyZU5ldXRlcmFi
bGUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYWxsVmlld3NBcmVOZXV0ZXJhYmxlKQorICAg
ICAgICBtX2NvbnRlbnRzLnRyYW5zZmVyKHJlc3VsdCk7CisgICAgZWxzZSB7CisgICAgICAgIG1f
Y29udGVudHMuY29weVRvKHJlc3VsdCk7CisgICAgICAgIGlmICghcmVzdWx0Lm1fZGF0YSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB3aGlsZSAobV9maXJzdFZpZXcp
IHsKKyAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBjdXJyZW50ID0gbV9maXJzdFZpZXc7CisgICAg
ICAgIHJlbW92ZVZpZXcoY3VycmVudCk7CisgICAgICAgIGlmIChhbGxWaWV3c0FyZU5ldXRlcmFi
bGUgfHwgY3VycmVudC0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAgICAgICBjdXJyZW50LT5uZXV0
ZXIoKTsKKyAgICAgICAgbmV1dGVyZWRWaWV3cy5hcHBlbmQoY3VycmVudCk7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIEFycmF5QnVmZmVyOjphZGRWaWV3KEFycmF5QnVmZmVy
VmlldyogdmlldykKK3sKKyAgICB2aWV3LT5tX2J1ZmZlciA9IHRoaXM7CisgICAgdmlldy0+bV9w
cmV2VmlldyA9IDA7CisgICAgdmlldy0+bV9uZXh0VmlldyA9IG1fZmlyc3RWaWV3OworICAgIGlm
IChtX2ZpcnN0VmlldykKKyAgICAgICAgbV9maXJzdFZpZXctPm1fcHJldlZpZXcgPSB2aWV3Owor
ICAgIG1fZmlyc3RWaWV3ID0gdmlldzsKK30KKwordm9pZCBBcnJheUJ1ZmZlcjo6cmVtb3ZlVmll
dyhBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gdmlldy0+bV9i
dWZmZXIpOworICAgIGlmICh2aWV3LT5tX25leHRWaWV3KQorICAgICAgICB2aWV3LT5tX25leHRW
aWV3LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9wcmV2VmlldzsKKyAgICBpZiAodmlldy0+bV9wcmV2
VmlldykKKyAgICAgICAgdmlldy0+bV9wcmV2Vmlldy0+bV9uZXh0VmlldyA9IHZpZXctPm1fbmV4
dFZpZXc7CisgICAgaWYgKG1fZmlyc3RWaWV3ID09IHZpZXcpCisgICAgICAgIG1fZmlyc3RWaWV3
ID0gdmlldy0+bV9uZXh0VmlldzsKKyAgICB2aWV3LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9uZXh0
VmlldyA9IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI3YzczNGM2NzM0ODEwOTdjODE3NmRkNjRhOGRhMGJkYjM0YzZl
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5oCkBAIC0wLDAgKzEsMjU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBcnJheUJ1ZmZl
cl9oCisjZGVmaW5lIEFycmF5QnVmZmVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5
QnVmZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworCitjbGFzcyBBcnJheUJ1ZmZlckNvbnRl
bnRzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKK3B1
YmxpYzoKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKCkgCisgICAgICAgIDogbV9kYXRhKDApCisg
ICAgICAgICwgbV9zaXplSW5CeXRlcygwKQorICAgIHsgfQorCisgICAgaW5saW5lIH5BcnJheUJ1
ZmZlckNvbnRlbnRzKCk7CisKKyAgICB2b2lkKiBkYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9Cisg
ICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisKK3By
aXZhdGU6CisgICAgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXpl
SW5CeXRlcykgCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAgICwgbV9zaXplSW5CeXRl
cyhzaXplSW5CeXRlcykKKyAgICB7IH0KKworICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsK
KworICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kgeworICAgICAgICBaZXJvSW5pdGlhbGl6
ZSwKKyAgICAgICAgRG9udEluaXRpYWxpemUKKyAgICB9OworCisgICAgc3RhdGljIGlubGluZSB2
b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5LCBBcnJheUJ1ZmZlckNvbnRlbnRzJik7CisgICAg
dm9pZCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKKyAgICB7CisgICAgICAg
IEFTU0VSVCghb3RoZXIubV9kYXRhKTsKKyAgICAgICAgb3RoZXIubV9kYXRhID0gbV9kYXRhOwor
ICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRlczsKKyAgICAgICAgbV9k
YXRhID0gMDsKKyAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7CisgICAgfQorCisgICAgdm9pZCBj
b3B5VG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBBU1NFUlQo
IW90aGVyLm1fZGF0YSk7CisgICAgICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRl
KG1fc2l6ZUluQnl0ZXMsIHNpemVvZihjaGFyKSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udElu
aXRpYWxpemUsIG90aGVyKTsKKyAgICAgICAgaWYgKCFvdGhlci5tX2RhdGEpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1lbWNweShvdGhlci5tX2RhdGEsIG1fZGF0YSwgbV9zaXplSW5C
eXRlcyk7CisgICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOworICAg
IH0KKworICAgIHZvaWQqIG1fZGF0YTsKKyAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworfTsK
KworY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewor
cHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyKik7
CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qg
dm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJik7CisKKyAg
ICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUp
OworCisgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKKyAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0
YSgpIGNvbnN0OworICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisKKyAg
ICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoaW50IGJlZ2luLCBpbnQgZW5k
KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoaW50IGJl
Z2luKSBjb25zdDsKKworICAgIHZvaWQgYWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICB2
b2lkIHJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3Kik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiwgVmVjdG9yPFJlZlB0cjxBcnJh
eUJ1ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpOworICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsg
cmV0dXJuICFtX2NvbnRlbnRzLm1fZGF0YTsgfQorCisgICAgfkFycmF5QnVmZmVyKCkgeyB9CisK
K3ByaXZhdGU6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworCisgICAgaW5saW5lIEFycmF5
QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmKTsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Owor
ICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGludCBpbmRleCkgY29uc3Q7CisgICAgc3Rh
dGljIGlubGluZSBpbnQgY2xhbXBWYWx1ZShpbnQgeCwgaW50IGxlZnQsIGludCByaWdodCk7CisK
KyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVudHM7CisgICAgQXJyYXlCdWZmZXJWaWV3
KiBtX2ZpcnN0VmlldzsKK307CisKK2ludCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShpbnQgeCwg
aW50IGxlZnQsIGludCByaWdodCkKK3sKKyAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CisgICAg
aWYgKHggPCBsZWZ0KQorICAgICAgICB4ID0gbGVmdDsKKyAgICBpZiAocmlnaHQgPCB4KQorICAg
ICAgICB4ID0gcmlnaHQ7CisgICAgcmV0dXJuIHg7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKK30KKworUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlciogb3Ro
ZXIpCit7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUob3RoZXItPmRhdGEoKSwgb3Ro
ZXItPmJ5dGVMZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorewor
ICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CisgICAgQXJyYXlCdWZmZXJDb250ZW50
czo6dHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0lu
aXRpYWxpemUsIGNvbnRlbnRzKTsKKyAgICBpZiAoIWNvbnRlbnRzLm1fZGF0YSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBhZG9wdFJlZihuZXcg
QXJyYXlCdWZmZXIoY29udGVudHMpKTsKKyAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJj
ZSwgYnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Cit9CisKK1Bhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50
cyYgY29udGVudHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250
ZW50cykpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKQoreworICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOworfQorCitQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9u
UG9saWN5IHBvbGljeSkKK3sKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOworICAg
IEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIHBvbGljeSwgY29udGVudHMpOworICAgIGlmICghY29udGVudHMubV9kYXRhKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRl
bnRzKSk7Cit9CisKK0FycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRz
JiBjb250ZW50cykKKyAgICA6IG1fZmlyc3RWaWV3KDApCit7CisgICAgY29udGVudHMudHJhbnNm
ZXIobV9jb250ZW50cyk7Cit9CisKK3ZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZW50cy5tX2RhdGE7Cit9CisKK2NvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpk
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cy5tX2RhdGE7Cit9CisKK3Vuc2ln
bmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250
ZW50cy5tX3NpemVJbkJ5dGVzOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6c2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBzbGlj
ZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7Cit9CisKK1Bhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShpbnQgYmVnaW4pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKK30K
KworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25l
ZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAoreworICAgIHVuc2lnbmVkIHNpemUgPSBiZWdp
biA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7Cit9CisK
K3Vuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGludCBpbmRleCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIGlmIChpbmRleCA8
IDApCisgICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0aCArIGluZGV4OworICAgIHJldHVybiBj
bGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKK30KKwordm9pZCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCkKK3sKKyAgICAvLyBEbyBub3QgYWxs
b3cgMzItYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgorICAgIC8vIEZJWE1FOiBXaHkg
bm90PyBUaGUgdHJ5RmFzdENhbGxvYyBmdW5jdGlvbiBhbHJlYWR5IGNoZWNrcyBpdHMgYXJndW1l
bnRzLAorICAgIC8vIGFuZCB3aWxsIGZhaWwgaWYgdGhlcmUgaXMgYW55IG92ZXJmbG93LCBzbyB3
aHkgc2hvdWxkIHdlIGluY2x1ZGUgYQorICAgIC8vIHJlZHVkYW50IHVubmVjZXNzYXJpbHkgcmVz
dHJpY3RpdmUgY2hlY2sgaGVyZT8KKyAgICBpZiAobnVtRWxlbWVudHMpIHsKKyAgICAgICAgdW5z
aWduZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7CisgICAgICAg
IGlmICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUpIHsKKyAgICAg
ICAgICAgIHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorICAgIGJvb2wgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IGZhbHNlOworICAgIGlmIChw
b2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCisgICAgICAgIGFsbG9jYXRpb25TdWNjZWVkZWQgPSBX
VEY6OnRyeUZhc3RDYWxsb2MobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSkuZ2V0VmFsdWUo
cmVzdWx0Lm1fZGF0YSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChwb2xpY3kgPT0gRG9u
dEluaXRpYWxpemUpOworICAgICAgICBhbGxvY2F0aW9uU3VjY2VlZGVkID0gV1RGOjp0cnlGYXN0
TWFsbG9jKG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1bHQubV9k
YXRhKTsKKyAgICB9CisKKyAgICBpZiAoYWxsb2NhdGlvblN1Y2NlZWRlZCkgeworICAgICAgICBy
ZXN1bHQubV9zaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC5tX2RhdGEgPSAwOworfQorCitBcnJheUJ1
ZmZlckNvbnRlbnRzOjp+QXJyYXlCdWZmZXJDb250ZW50cygpCit7CisgICAgV1RGOjpmYXN0RnJl
ZShtX2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpBcnJheUJ1
ZmZlcjsKK3VzaW5nIEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czsKKworI2VuZGlmIC8vIEFycmF5
QnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkODZhZjk4ZWQwMmVjNDBmM2YzYzc3Njc0OTY4M2M1YzIy
YjZmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisKKyNpbmNsdWRlICJBcnJh
eUJ1ZmZlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1
ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0KQorICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCisgICAgLCBtX2lzTmV1dGVyYWJs
ZSh0cnVlKQorICAgICwgbV9idWZmZXIoYnVmZmVyKQorICAgICwgbV9wcmV2VmlldygwKQorICAg
ICwgbV9uZXh0VmlldygwKQoreworICAgIG1fYmFzZUFkZHJlc3MgPSBtX2J1ZmZlciA/IChzdGF0
aWNfY2FzdDxjaGFyKj4obV9idWZmZXItPmRhdGEoKSkgKyBtX2J5dGVPZmZzZXQpIDogMDsKKyAg
ICBpZiAobV9idWZmZXIpIAorICAgICAgICBtX2J1ZmZlci0+YWRkVmlldyh0aGlzKTsKK30KKwor
QXJyYXlCdWZmZXJWaWV3Ojp+QXJyYXlCdWZmZXJWaWV3KCkKK3sKKyAgICBpZiAobV9idWZmZXIp
CisgICAgICAgIG1fYnVmZmVyLT5yZW1vdmVWaWV3KHRoaXMpOworfQorCit2b2lkIEFycmF5QnVm
ZmVyVmlldzo6bmV1dGVyKCkKK3sKKyAgICBtX2J1ZmZlciA9IDA7CisgICAgbV9ieXRlT2Zmc2V0
ID0gMDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlclZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTFhYzNhMzE0NzI0N2I1ODljNGUyYzU3MWJlN2M5YjRh
NTU3OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmgKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFy
cmF5QnVmZmVyVmlld19oCisjZGVmaW5lIEFycmF5QnVmZmVyVmlld19oCisKKyNpbmNsdWRlICJB
cnJheUJ1ZmZlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGxpbWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBB
cnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKK3B1
YmxpYzoKKyAgICBlbnVtIFZpZXdUeXBlIHsKKyAgICAgICAgVHlwZUludDgsCisgICAgICAgIFR5
cGVVaW50OCwKKyAgICAgICAgVHlwZVVpbnQ4Q2xhbXBlZCwKKyAgICAgICAgVHlwZUludDE2LAor
ICAgICAgICBUeXBlVWludDE2LAorICAgICAgICBUeXBlSW50MzIsCisgICAgICAgIFR5cGVVaW50
MzIsCisgICAgICAgIFR5cGVGbG9hdDMyLAorICAgICAgICBUeXBlRmxvYXQ2NCwKKyAgICAgICAg
VHlwZURhdGFWaWV3CisgICAgfTsKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25z
dCA9IDA7CisKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyOworICAgIH0KKworICAgIHZvaWQqIGJhc2VBZGRy
ZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzOworICAgIH0K
KworICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYnl0ZU9mZnNldDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgo
KSBjb25zdCA9IDA7CisKKyAgICB2b2lkIHNldE5ldXRlcmFibGUoYm9vbCBmbGFnKSB7IG1faXNO
ZXV0ZXJhYmxlID0gZmxhZzsgfQorICAgIGJvb2wgaXNOZXV0ZXJhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc05ldXRlcmFibGU7IH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5B
cnJheUJ1ZmZlclZpZXcoKTsKKworcHJvdGVjdGVkOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQpOworCisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KTsKKworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworCisg
ICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3Qg
cmFuZ2VCeXRlTGVuZ3RoKTsKKworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZz
ZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2ln
bmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOworCisgICAgLy8gSGVscGVyIHRvIHZlcmlm
eSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCisgICAgLy8gd2l0
aGluIHJhbmdlLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBib29sIHZl
cmlmeVN1YlJhbmdlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMpCisgICAgeworICAgICAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHNpemVvZihUKSA+IDEg
JiYgYnl0ZU9mZnNldCAlIHNpemVvZihUKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVm
ZmVyLT5ieXRlTGVuZ3RoKCkgLSBieXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgaWYg
KG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIElucHV0IG9mZnNldCBp
cyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKKyAgICAvLyBv
dXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1
ZmZlcidzIHZpZXcuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQg
Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwgdW5zaWduZWQgKm9mZnNldCwgdW5zaWduZWQgKm51
bUVsZW1lbnRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFY
IC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgaWYgKCpvZmZzZXQgPiBt
YXhPZmZzZXQpIHsKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXpl
b2YoVCk7CisgICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXItPmJ5dGVMZW5ndGgoKSwg
Km9mZnNldCk7CisgICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgICpudW1FbGVtZW50
cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOworICAgIH0KKwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7CisKKyAgICAvLyBU
aGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhl
IGJ5dGUgb2Zmc2V0LgorICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7CisKKyAgICB1bnNpZ25lZCBt
X2J5dGVPZmZzZXQgOiAzMTsKKyAgICBib29sIG1faXNOZXV0ZXJhYmxlIDogMTsKKworcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBBcnJheUJ1ZmZlclZpZXcqIG1fcHJldlZpZXc7CisgICAgQXJyYXlC
dWZmZXJWaWV3KiBtX25leHRWaWV3OworfTsKKworYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldElt
cGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJy
YXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsg
YXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgLy8gT3V0IG9mIHJh
bmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAorICAgIGNoYXIqIGJhc2UgPSBzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZUFkZHJlc3MoKSk7Cisg
ICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VBZGRyZXNzKCksIGFycmF5
LT5ieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFycmF5QnVmZmVy
Vmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0
aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5n
dGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3Ro
KCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkg
eworICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNo
YXIqPihiYXNlQWRkcmVzcygpKTsKKyAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRh
LCBkYXRhQnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXJyYXlCdWZm
ZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5
dGVMZW5ndGgpCit7CisgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKKyAgICAgICAg
fHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgeworICAgICAgICAv
LyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRk
cmVzcygpKTsKKyAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0
aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxh
dGVPZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUs
IHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCit7CisgICAgaWYgKHN0YXJ0IDwg
MCkKKyAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOworICAgIGlmIChzdGFydCA8IDApCisgICAg
ICAgIHN0YXJ0ID0gMDsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kICs9IGFycmF5U2l6
ZTsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kID0gMDsKKyAgICBpZiAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCisgICAgICAgIGVuZCA9IGFycmF5U2l6ZTsK
KyAgICBpZiAoZW5kIDwgc3RhcnQpCisgICAgICAgIGVuZCA9IHN0YXJ0OworICAgICpvZmZzZXQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOworICAgICpsZW5ndGggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNp
bmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CisKKyNlbmRpZiAvLyBBcnJheUJ1ZmZlclZpZXdfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQzMkFycmF5Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42YzUyNTc0MTdjYTI3NTJlNjYyODg5MzhmYmY2OTdlNzMzYjhlZDRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQzMkFycmF5LmgKQEAgLTAs
MCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRmxvYXQzMkFycmF5X2gKKyNkZWZpbmUgRmxv
YXQzMkFycmF5X2gKKworI2luY2x1ZGUgIlR5cGVkQXJyYXlCYXNlLmgiCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZsb2F0MzJBcnJheSA6
IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxmbG9hdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZShjb25zdCBmbG9h
dCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEZsb2F0MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNl
ZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisg
ICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0
aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMy
QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5n
IFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6c2V0OworCisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBUeXBlZEFycmF5
QmFzZTxmbG9hdD46Om1fbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBUeXBl
ZEFycmF5QmFzZTxmbG9hdD46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxmbG9hdD4odmFs
dWUpOworICAgIH0KKworICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJy
YXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+
IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdU
eXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVGbG9hdDMyOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgRmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIC8v
IE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFz
cyBUeXBlZEFycmF5QmFzZTxmbG9hdD47Cit9OworCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4g
RmxvYXQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBl
ZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK1Bh
c3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb25zdCBmbG9hdCog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8Zmxv
YXQ+OjpjcmVhdGU8RmxvYXQzMkFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0
cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZs
b2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxGbG9hdDMy
QXJyYXk+KGxlbmd0aCk7Cit9CisKK0Zsb2F0MzJBcnJheTo6RmxvYXQzMkFycmF5KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIDogVHlwZWRBcnJheUJhc2U8ZmxvYXQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVu
Z3RoKQoreworfQorCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpzdWJh
cnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5n
dGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OnN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBs
PEZsb2F0MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1
c2luZyBKU0M6OkZsb2F0MzJBcnJheTsKKworI2VuZGlmIC8vIEZsb2F0MzJBcnJheV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0QXJyYXkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zsb2F0NjRBcnJheS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3
N2VkYmQzYjhlNTljNTI4MTgzNzQxMTlmOGE5ZDk3YzIyNzFhNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0QXJyYXkuaApAQCAtMCwwICsx
LDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZsb2F0NjRBcnJheV9oCisjZGVmaW5lIEZsb2F0NjRB
cnJheV9oCisKKyNpbmNsdWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGbG9hdDY0QXJyYXkgOiBwdWJs
aWMgVHlwZWRBcnJheUJhc2U8ZG91YmxlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKGNvbnN0IGRvdWJsZSog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZs
b2F0NjRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3
aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAg
Ly8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91
dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJy
YXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIHVzaW5nIFR5
cGVkQXJyYXlCYXNlPGRvdWJsZT46OnNldDsKKworICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4
LCBkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJheUJh
c2U8ZG91YmxlPjo6bV9sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFR5cGVk
QXJyYXlCYXNlPGRvdWJsZT46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KHZh
bHVlKTsKKyAgICB9CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IHN1YmFy
cmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3
VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlRmxvYXQ2NDsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIEZsb2F0NjRBcnJheShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAK
KyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmll
bmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8ZG91YmxlPjsKK307CisKK1Bhc3NSZWZQdHI8RmxvYXQ2
NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGxlbmd0aCk7
Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZShjb25z
dCBkb3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQor
CitQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0
QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxGbG9h
dDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQ8RmxvYXQ2NEFycmF5PihsZW5ndGgpOworfQorCitGbG9hdDY0QXJyYXk6OkZsb2F0NjRB
cnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4oYnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9h
dDY0QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJy
YXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0
NjRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVy
biBzdWJhcnJheUltcGw8RmxvYXQ2NEFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6RmxvYXQ2NEFycmF5OworCisjZW5kaWYgLy8gRmxvYXQ2
NEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2
QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDE2QXJyYXkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNDY2YWU0ZGE3ZTIzMmI1NjdmOWEyNGVmM2Y5YmM4ZjFmYmEzMDAxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MTZBcnJheS5oCkBA
IC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQxNkFycmF5X2gKKyNkZWZpbmUg
SW50MTZBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xhc3MgSW50MTZBcnJheSA6
IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZShjb25z
dCBpbnQxNl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkg
YmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQu
IERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3Jp
cHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJ
bnQxNkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1
c2luZyBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6c2V0OworICAgIHVzaW5nIEludGVncmFsVHlw
ZWRBcnJheUJhc2U8aW50MTZfdD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPEludDE2
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8
SW50MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKKworICAgIHZp
cnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVHlw
ZUludDE2OworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgSW50MTZBcnJheShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
KworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZy
aWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQxNl90PjsKK307CisKK1Bhc3NSZWZQdHI8SW50
MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1
cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJbnQxNkFycmF5PihsZW5ndGgpOwor
fQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShjb25zdCBpbnQx
Nl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTxpbnQxNl90Pjo6Y3JlYXRlPEludDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNz
UmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJbnQxNkFycmF5PihidWZm
ZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50
MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDE2QXJy
YXk+KGxlbmd0aCk7Cit9CisKK0ludDE2QXJyYXk6OkludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisg
ICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwg
bGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OnN1YmFy
cmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0
aCgpKTsKK30KKworUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpzdWJhcnJheShp
bnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQx
NkFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpT
Qzo6SW50MTZBcnJheTsKKworI2VuZGlmIC8vIEludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNjU5Mjc4ODI2YjNmMjZi
MzExOTRkMDIyYThlOGM2YTI2YzU3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnQzMkFycmF5LmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgSW50MzJBcnJheV9oCisjZGVmaW5lIEludDMyQXJyYXlfaAorCisjaW5jbHVkZSAi
SW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50
MzJBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD4geworcHVibGljOgor
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRl
KGNvbnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5
IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVk
LiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2Ny
aXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
SW50MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAg
dXNpbmcgVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0OworICAgIHVzaW5nIEludGVncmFsVHlwZWRB
cnJheUJhc2U8aW50Pjo6c2V0OworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4g
c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFy
cmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBW
aWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlSW50MzI7
CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIC8v
IE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFz
cyBUeXBlZEFycmF5QmFzZTxpbnQ+OworfTsKKworUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQz
MkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJ
bnQzMkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoY29uc3QgaW50KiBhcnJheSwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJB
cnJheT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJB
cnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxp
bnQ+OjpjcmVhdGU8SW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQor
CitQYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVh
dGVVbmluaXRpYWxpemVkPEludDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDMyQXJyYXk6Oklu
dDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD4o
YnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8SW50MzJBcnJh
eT4gSW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBz
dWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPEludDMyQXJyYXk+IElu
dDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1
cm4gc3ViYXJyYXlJbXBsPEludDMyQXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwordXNpbmcgSlNDOjpJbnQzMkFycmF5OworCisjZW5kaWYgLy8gSW50MzJBcnJh
eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDhBcnJheS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkwZjIyODY2NjU5NDZiM2QzOThjOTkyYWU4NTgwYmM1N2NiNGNlYzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaApAQCAtMCwwICsx
LDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQ4QXJyYXlfaAorI2RlZmluZSBJbnQ4QXJyYXlf
aAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIEludDhBcnJheSA6IHB1YmxpYyBJbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlPGludDhfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShjb25zdCBpbnQ4X3QqIGFycmF5
LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJy
YXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBp
cyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCBy
ZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGlu
ZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFz
ZTxpbnQ4X3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+
OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IHN1YmFycmF5KGludCBz
dGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBzdWJhcnJheShp
bnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlSW50ODsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgaW5saW5lIEludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIE1ha2UgY29uc3RydWN0
b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFz
ZTxpbnQ4X3Q+OworfTsKKworUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6
Y3JlYXRlPEludDhBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IElu
dDhBcnJheTo6Y3JlYXRlKGNvbnN0IGludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRlPEludDhBcnJheT4oYXJy
YXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3Jl
YXRlPEludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVm
UHRyPEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRlVW5pbml0
aWFsaXplZDxJbnQ4QXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDhBcnJheTo6SW50OEFycmF5KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+KGJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFy
cmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0
YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OnN1
YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJ
bXBsPEludDhBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1
c2luZyBKU0M6OkludDhBcnJheTsKKworI2VuZGlmIC8vIEludDhBcnJheV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTljOTg5ZWM3ZjIzMDdkODc4ZmExMmViNWJlMGNkNDk2OWUxZmIxZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVncmFsVHlw
ZWRBcnJheUJhc2UuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCisKKyNp
bmNsdWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgorCisvLyBCYXNlIGNsYXNzIGZvciBhbGwgV2ViR0w8VD5BcnJheSB0
eXBlcyBob2xkaW5nIGludGVncmFsCisvLyAobm9uLWZsb2F0aW5nLXBvaW50KSB2YWx1ZXMuCisK
K25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEludGVncmFs
VHlwZWRBcnJheUJhc2UgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8VD4geworcHVibGljOgorICAg
IHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8VD46Om1fbGVuZ3RoKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpIC8vIENsYW1wIE5hTiB0byAwCisg
ICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgIC8vIFRoZSBkb3VibGUgY2FzdCBpcyBuZWNl
c3NhcnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHdyYXBwaW5nCisgICAgICAgIC8vIGZvciBvdXQtb2Yt
cmFuZ2UgdmFsdWVzIHdpdGggSW50MzJBcnJheSBhbmQgVWludDMyQXJyYXkuCisgICAgICAgIFR5
cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8VD4oc3RhdGljX2Nh
c3Q8aW50NjRfdD4odmFsdWUpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IFR5cGVkQXJyYXlCYXNlPFQ+KGJ1
ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQorICAgIHsKKyAgICB9CisKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZmU3YTZjMWE1NjY5NTc4ZWUxZDVhNjA2Y2NkZDhkNjQwZGMxMTg3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApAQCAtMCww
ICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVHlwZWRBcnJheUJhc2VfaAorI2RlZmluZSBU
eXBlZEFycmF5QmFzZV9oCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkFy
cmF5QnVmZmVyVmlldy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitjbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgeworcHVi
bGljOgorICAgIFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4oYmFzZUFk
ZHJlc3MoKSk7IH0KKworICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPFQ+KiBhcnJheSwgdW5z
aWduZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXksIG9mZnNl
dCAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgYm9vbCBzZXRSYW5nZShjb25zdCBUKiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNldFJhbmdlSW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgZGF0
YUxlbmd0aCAqIHNpemVvZihUKSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBi
b29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCisgICAgeworICAg
ICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQgKiBzaXplb2YoVCksIGxlbmd0aCAqIHNp
emVvZihUKSk7CisgICAgfQorCisgICAgLy8gT3ZlcnJpZGRlbiBmcm9tIEFycmF5QnVmZmVyVmll
dy4gVGhpcyBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIG9mCisgICAgLy8gcnVsZXMgYWJvdXQgaW5o
ZXJpdGFuY2Ugb2YgbWVtYmVycyBpbiB0ZW1wbGF0ZSBjbGFzc2VzLCBhbmQKKyAgICAvLyBiZWNh
dXNlIGl0IGlzIGFjY2Vzc2VkIHZpYSBwb2ludGVycyB0byBzdWJjbGFzc2VzLgorICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGg7CisgICAg
fQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2xlbmd0aCAqIHNpemVvZihUKTsKKyAgICB9CisKKyAgICAvLyBJbnZva2Vk
IGJ5IHRoZSBpbmRleGVkIGdldHRlci4gRG9lcyBub3QgcGVyZm9ybSByYW5nZSBjaGVja3M7IGNh
bGxlcgorICAgIC8vIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBzbyBhbmQgcmV0dXJuaW5nIHVu
ZGVmaW5lZCBhcyBuZWNlc3NhcnkuCisgICAgVCBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBU
eXBlZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpOworICAgICAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8VD46OmRhdGEoKVtpbmRleF07CisgICAgfQorCisgICAgYm9vbCBjaGVja0luYm91bmREYXRh
KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgcG9zKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIChvZmZzZXQgPD0gbV9sZW5ndGgKKyAgICAgICAgICAgICYmIG9mZnNldCArIHBvcyA8PSBt
X2xlbmd0aAorICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKKyAgICAgICAgICAgICYmIG9m
ZnNldCArIHBvcyA+PSBvZmZzZXQpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFR5cGVkQXJy
YXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5
dGVPZmZzZXQpCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xh
c3M+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobGVuZ3RoLCBzaXplb2YoVCkpOwor
ICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0aCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNs
YXNzPiBjcmVhdGUoY29uc3QgVCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAg
ICAgIFJlZlB0cjxTdWJjbGFzcz4gYSA9IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsKKyAgICAg
ICAgaWYgKGEpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICAgICAgYS0+c2V0KGksIGFycmF5W2ldKTsKKyAgICAgICAgcmV0dXJu
IGE7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZihidWZmZXIpOworICAgICAgICBpZiAoIXZlcmlmeVN1YlJh
bmdlPFQ+KGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7CisgICAgICAgIGlm
ICghYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBj
cmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgUGFzc1JlZlB0cjxTdWJjbGFzcz4gc3ViYXJyYXlJbXBs
KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCwgbGVuZ3RoOworICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwg
bV9sZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOworICAgICAgICBjbGFtcE9mZnNldEFuZE51bUVs
ZW1lbnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgpOworICAg
ICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5ndGgpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQorICAgIHsKKyAgICAgICAgQXJyYXlC
dWZmZXJWaWV3OjpuZXV0ZXIoKTsKKyAgICAgICAgbV9sZW5ndGggPSAwOworICAgIH0KKworICAg
IC8vIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmlydHVhbCBm
dW5jdGlvbiBpbiBzdWJjbGFzc2VzLAorICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBwcm90ZWN0
ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZS4KKyAgICB1bnNpZ25lZCBtX2xlbmd0aDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlR5cGVkQXJyYXlCYXNlOworCisjZW5kaWYg
Ly8gVHlwZWRBcnJheUJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVWludDE2QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQx
NkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYyZmFiMWIyN2I4NjJhOWEwOGQ5MTkxYzhiNDI4MzQ1NGNi
ZGRlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Vp
bnQxNkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVWludDE2QXJy
YXlfaAorI2RlZmluZSBVaW50MTZBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xh
c3MgVWludDE2QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD4g
eworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQx
NkFycmF5PiBjcmVhdGUoY29uc3QgdWludDE2X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwor
CisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUg
YXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRz
IGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OjpzZXQ7
CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46OnNldDsKKworICAg
IGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0
OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQs
IGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDE2OworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBpbmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNp
YmxlIHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVpbnQx
Nl90PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUo
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46
OmNyZWF0ZTxVaW50MTZBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50MTZBcnJh
eT4gVWludDE2QXJyYXk6OmNyZWF0ZShjb25zdCB1aW50MTZfdCogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDE2X3Q+OjpjcmVhdGU8VWlu
dDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBV
aW50MTZBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTx1aW50MTZfdD46OmNyZWF0ZTxVaW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlC
YXNlPHVpbnQxNl90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MTZBcnJheT4obGVuZ3RoKTsK
K30KKworVWludDE2QXJyYXk6OlVpbnQxNkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdy
YWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7
Cit9CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpzdWJhcnJheShpbnQg
c3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9
CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3Rh
cnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50MTZBcnJh
eT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlVp
bnQxNkFycmF5OworCisjZW5kaWYgLy8gVWludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWViMDFlMDFhMWNhZDRlYmRl
NDk5ZGExMzJmMzk3MGE1OTEyODNlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgVWludDMyQXJyYXlfaAorI2RlZmluZSBVaW50MzJBcnJheV9oCisKKyNpbmNsdWRl
ICJJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBB
cnJheUJ1ZmZlcjsKKworY2xhc3MgVWludDMyQXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZTx1aW50MzJfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxVaW50MzJBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgdWludDMyX3QqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJh
eT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlz
IGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJl
dHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5n
IGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJh
c2U8dWludDMyX3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50
MzJfdD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJhcnJh
eShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlw
ZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDMyOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgVWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFr
ZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5
cGVkQXJyYXlCYXNlPHVpbnQzMl90PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVp
bnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJBcnJheT4obGVuZ3RoKTsKK30KKworUGFz
c1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZShjb25zdCB1aW50MzJfdCog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWlu
dDMyX3Q+OjpjcmVhdGU8VWludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVm
UHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJBcnJheT4oYnVm
ZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBV
aW50MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50
MzJBcnJheT4obGVuZ3RoKTsKK30KKworVWludDMyQXJyYXk6OlVpbnQzMkFycmF5KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJfdD4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFy
cmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0
YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5
OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFy
cmF5SW1wbDxVaW50MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCit1c2luZyBKU0M6OlVpbnQzMkFycmF5OworCisjZW5kaWYgLy8gVWludDMyQXJyYXlfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2
NWY5ZTE3MDUzOGRjMGMyNmFmODE1NGU2OWRkZTBhZjZiMDJiY2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OEFycmF5LmgKQEAgLTAsMCArMSwx
MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgVWludDhBcnJheV9oCisjZGVmaW5lIFVpbnQ4QXJyYXlf
aAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIFVpbnQ4QXJyYXkgOiBwdWJsaWMgSW50
ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50OF90PiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGUoY29uc3QgdWludDhfdCog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVp
bnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hl
biBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8v
IG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQg
ZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4g
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRB
cnJheUJhc2U8dWludDhfdD46OnNldDsKKyAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
PHVpbnQ4X3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBzdWJh
cnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+
IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdU
eXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVVaW50ODsKKyAg
ICB9CisKK3Byb3RlY3RlZDoKKyAgICBpbmxpbmUgVWludDhBcnJheShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAvLyBN
YWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3Mg
VHlwZWRBcnJheUJhc2U8dWludDhfdD47Cit9OworCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVp
bnQ4QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoY29uc3QgdWludDhfdCogYXJyYXks
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46
OmNyZWF0ZTxVaW50OEFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50
OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5
cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zm
c2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50OEFycmF5PihsZW5ndGgp
OworfQorCitVaW50OEFycmF5OjpVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorOiBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQor
CitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OEFycmF5PihzdGFydCwg
ZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6VWludDhBcnJheTsK
KworI2VuZGlmIC8vIFVpbnQ4QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZmZmFlNzQ3Y2FlZThhZTNi
MGQ1ZTE0MTEwYWUxMThjOGQ5ZmQyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTAsMCArMSwxMjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVWludDhDbGFtcGVkQXJyYXlfaAorI2RlZmluZSBV
aW50OENsYW1wZWRBcnJheV9oCisKKyNpbmNsdWRlICJVaW50OEFycmF5LmgiCisjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFVpbnQ4Q2xhbXBl
ZEFycmF5IDogcHVibGljIFVpbnQ4QXJyYXkgeworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoY29u
c3QgdWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBTaG91
bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJl
IGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8g
SmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCk7CisKKyAgICAvLyBJdCdzIG9ubHkgbmVlZGVkIHRvIHBvdGVudGlhbGx5IGNhbGwgdGhp
cyBtZXRob2QgaWYgdGhlIGFycmF5CisgICAgLy8gd2FzIGNyZWF0ZWQgdW5pbml0aWFsaXplZCAt
LSB0aGUgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBwYXRocworICAgIC8vIHplcm8gdGhlIGFsbG9j
YXRlZCBtZW1vcnkuCisgICAgaW5saW5lIHZvaWQgemVyb0ZpbGwoKTsKKworICAgIHVzaW5nIFR5
cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpzZXQ7CisgICAgaW5saW5lIHZvaWQgc2V0KHVuc2lnbmVk
IGluZGV4LCBkb3VibGUgdmFsdWUpOworCisgICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7
CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBV
aW50OENsYW1wZWRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUg
dG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dWludDhfdD47
Cit9OworCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWlu
dDhfdD46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShjb25zdCB1aW50
OF90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTx1aW50OF90Pjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30K
KworUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDhfdD46OmNy
ZWF0ZTxVaW50OENsYW1wZWRBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQor
CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlC
YXNlPHVpbnQ4X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQ4Q2xhbXBlZEFycmF5PihsZW5n
dGgpOworfQorCit2b2lkIFVpbnQ4Q2xhbXBlZEFycmF5Ojp6ZXJvRmlsbCgpCit7CisgICAgemVy
b1JhbmdlKDAsIGxlbmd0aCgpKTsKK30KKwordm9pZCBVaW50OENsYW1wZWRBcnJheTo6c2V0KHVu
c2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCit7CisgICAgaWYgKGluZGV4ID49IG1fbGVuZ3Ro
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpIHx8IHZhbHVlIDwg
MCkKKyAgICAgICAgdmFsdWUgPSAwOworICAgIGVsc2UgaWYgKHZhbHVlID4gMjU1KQorICAgICAg
ICB2YWx1ZSA9IDI1NTsKKyAgICBkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
bHJpbnQodmFsdWUpKTsKK30KKworVWludDhDbGFtcGVkQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQorOiBVaW50OEFycmF5KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQor
eworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6
c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBzdWJhcnJheShzdGFydCwg
bGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1w
ZWRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAoreworICAgIHJldHVy
biBzdWJhcnJheUltcGw8VWludDhDbGFtcGVkQXJyYXk+KHN0YXJ0LCBlbmQpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpVaW50OENsYW1wZWRBcnJheTsKKworI2VuZGlm
IC8vIFVpbnQ4Q2xhbXBlZEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IGU0ODQzYjE5YzJlOGYzOWQ3MDYyZTY3Mzg0MmM3ZTViODMwZWRhYTQuLmUyMjdlMjRmOWFlY2Y0
YzBjYzgyZDY5YWQ1MzVhNzdkMjU2YWRiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtNjksOCArNjksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUNhY2hl
OwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAg
ICBjbGFzcyBGbG9hdDMyQXJyYXk7CisgICAgY2xhc3MgRmxvYXQ2NEFycmF5OwogICAgIGNsYXNz
IEhhbmRsZVN0YWNrOwogICAgIGNsYXNzIElkZW50aWZpZXJUYWJsZTsKKyAgICBjbGFzcyBJbnQ4
QXJyYXk7CisgICAgY2xhc3MgSW50MTZBcnJheTsKKyAgICBjbGFzcyBJbnQzMkFycmF5OwogICAg
IGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNz
IEpTT2JqZWN0OwpAQCAtODgsNiArOTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxF
KFJFR0VYUF9UUkFDSU5HKQogICAgIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgorICAgIGNsYXNzIFVp
bnQ4QXJyYXk7CisgICAgY2xhc3MgVWludDhDbGFtcGVkQXJyYXk7CisgICAgY2xhc3MgVWludDE2
QXJyYXk7CisgICAgY2xhc3MgVWludDMyQXJyYXk7CiAgICAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2s7CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDY3NDljNmFjMDZk
YmUxZThjODlkOWM3NThjODZmN2Q0Yjg0ZWU2NDQuLmY2YTM4MGJmYTNmZmE5ZDViZTkyNzU5OTY2
NjViNDU5ODgyYTc3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQsMTAgKzQsNiBAQCB3
dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9BVkxUcmVlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0FsaWdubWVudC5o
IFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAgXAotICAgIFNvdXJjZS9XVEYv
d3RmL0FycmF5QnVmZmVyLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5j
cHAgXAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oIFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5o
IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmNwcCBcCkBAIC01Niw4ICs1Miw2IEBAIHd0
Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgU291cmNlL1dURi93
dGYvRml4ZWRBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaCBcCi0g
ICAgU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zv
cndhcmQuaCBcCiAgICAgU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCBcCiAg
ICAgU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmggXApAQCAtNzYsMTAgKzcwLDYg
QEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCBcCiAgICAgU291cmNlL1dURi93dGYvSW5zZXJ0
aW9uLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0ludDE2QXJyYXkuaCBcCi0gICAgU291cmNlL1dU
Ri93dGYvSW50MzJBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaCBcCi0g
ICAgU291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9MaXN0RHVtcC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9MTFZNSGVhZGVycy5oIFwKQEAgLTE4OSwxMSArMTc5LDYgQEAg
d3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL1R5cGVUcmFpdHMuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9UeXBlVHJh
aXRzLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmggXAotICAgIFNvdXJj
ZS9XVEYvd3RmL1VpbnQxNkFycmF5LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5
LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93
dGYvVWludDhDbGFtcGVkQXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvVW5pb25GaW5kLmgg
XAogICAgIFNvdXJjZS9XVEYvd3RmL1VuaVN0ZEV4dHJhcy5oIFwKICAgICBTb3VyY2UvV1RGL3d0
Zi9WTVRhZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBhMmFmNjhmNWQwZjg1NDNhMTAyY2U4Mzk1YzhmNzA4M2NkODczY2Q4Li43NDkxZmZhMWZjOTg0
NTE3OWRlODRlMTY4OTVjZTgxMzg1MTg0YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTY3LDEwICs2Nyw2IEBACiAJCUE3NDg3NDU0MTdBMEJEQUUwMEZB
MDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NDg3NDUxMTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdI
YXNoRHVtcENvbnRleHQuaCAqLzsgfTsKIAkJQTg3NkRCRDgxNTE4MTZFNTAwREFEQjk1IC8qIFBs
YXRmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
ODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLzsgfTsKIAkJQThBNDczN0Yx
NTFBODI1QjAwNDEyM0ZGIC8qIEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8qIEFsaWdubWVu
dC5oICovOyB9OwotCQlBOEE0NzM4MTE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTYx
NTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLzsgfTsKLQkJQThBNDczODIxNTFB
ODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1NzE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZm
ZXIuaCAqLzsgfTsKLQkJQThBNDczODMxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmll
dy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0
NzI1ODE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLzsgfTsKLQkJQThB
NDczODQxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTkxNTFBODI1QTAwNDEyM0ZG
IC8qIEFycmF5QnVmZmVyVmlldy5oICovOyB9OwogCQlBOEE0NzM4NTE1MUE4MjVCMDA0MTIzRkYg
LyogQVNDSUlDVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThBNDcyNUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCAqLzsgfTsKIAkJ
QThBNDczODYxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNUIxNTFBODI1QTAwNDEyM0ZG
IC8qIEFzc2VydGlvbnMuY3BwICovOyB9OwogCQlBOEE0NzM4NzE1MUE4MjVCMDA0MTIzRkYgLyog
QXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLzsgfTsKQEAgLTEy
OCw4ICsxMjQsNiBAQAogCQlBOEE0NzNDMzE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJB
MTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi87IH07CiAJCUE4QTQ3M0M0MTUx
QTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxv
Yy5oICovOyB9OwogCQlBOEE0NzNDNTE1MUE4MjVCMDA0MTIzRkYgLyogRml4ZWRBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTMxNTFB
ODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAqLzsgfTsKLQkJQThBNDczQzYxNTFBODI1QjAw
NDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDcyQTQxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5o
ICovOyB9OwotCQlBOEE0NzNDNzE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNTE1MUE4
MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCUE4QTQ3M0M4MTUxQTgyNUIw
MDQxMjNGRiAvKiBGb3J3YXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEE0NzJBNjE1MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICovOyB9Owog
CQlBOEE0NzNDOTE1MUE4MjVCMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZG
IC8qIEZ1bmN0aW9uYWwuaCAqLzsgfTsKIAkJQThBNDczQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIEdl
dFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThB
NDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdldFB0ci5oICovOyB9OwpAQCAtMTQzLDEwICsxMzcs
NiBAQAogCQlBOEE0NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQkExNTFBODI1QTAw
NDEyM0ZGIC8qIEhhc2hUcmFpdHMuaCAqLzsgfTsKIAkJQThBNDczREIxNTFBODI1QjAwNDEyM0ZG
IC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThBNDcyQkIxNTFBODI1QTAwNDEyM0ZGIC8qIEhleE51bWJlci5oICovOyB9OwogCQlB
OEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyogSW5saW5lQVNNLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCQzE1MUE4MjVBMDA0MTIzRkYgLyog
SW5saW5lQVNNLmggKi87IH07Ci0JCUE4QTQ3M0REMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQ4QXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MkJEMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCAqLzsgfTsKLQkJQThBNDczREUxNTFB
ODI1QjAwNDEyM0ZGIC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkJFMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQxNkFycmF5
LmggKi87IH07Ci0JCUE4QTQ3M0RGMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQzMkFycmF5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCRjE1MUE4
MjVBMDA0MTIzRkYgLyogSW50MzJBcnJheS5oICovOyB9OwotCQlBOEE0NzNFMDE1MUE4MjVCMDA0
MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZGIC8qIEludGVn
cmFsVHlwZWRBcnJheUJhc2UuaCAqLzsgfTsKIAkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZGIC8q
IExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEE0NzJDMTE1MUE4MjVBMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCAqLzsgfTsKIAkJ
QThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQzMxNTFBODI1QTAwNDEyM0ZGIC8qIExv
Y2tlci5oICovOyB9OwogCQlBOEE0NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZE1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tICovOyB9OwpAQCAtMjUwLDEz
ICsyNDAsOCBAQAogCQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMz
QjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggKi87IH07CiAJCUE4QTQ3NDU0
MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczM0UxNTFBODI1QjAwNDEyM0ZG
IC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi87IH07CiAJCUE4QTQ3NDU1MTUxQTgyNUIwMDQx
MjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmlj
LmggKi87IH07Ci0JCUE4QTQ3NDU3MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlZEFycmF5QmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczNDEx
NTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggKi87IH07CiAJCUE4QTQ3NDU4MTUx
QTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQyMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJh
aXRzLmNwcCAqLzsgfTsKIAkJQThBNDc0NTkxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQz
MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmggKi87IH07Ci0JCUE4QTQ3NDVBMTUxQTgy
NUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0NDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5o
ICovOyB9OwotCQlBOEE0NzQ1QjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ1
MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1
QzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ2MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50
MTZBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1RDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5oICovOyB9OwogCQlBOEE0NzQ1RTE1
MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ5MTUxQTgyNUIwMDQxMjNGRiAvKiBDaGFy
YWN0ZXJOYW1lcy5oICovOyB9OwogCQlBOEE0NzQ1RjE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MzRBMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvci5oICovOyB9OwogCQlBOEE0NzQ2MDE1MUE4
MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xs
YXRvckRlZmF1bHQuY3BwICovOyB9OwpAQCAtMzQ5LDEwICszMzQsNiBAQAogCQlBNzQ4NzQ1MTE3
QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8qIEFsaWdubWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbm1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVm
ZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVmZmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTcxNTFBODI1QTAwNDEy
M0ZGIC8qIEFycmF5QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFy
cmF5QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MjU4MTUxQTgy
NUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQThBNDcyNTkxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJ
Q1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVNDSUlDVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyog
QXNzZXJ0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3Nl
cnRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNUMxNTFBODI1
QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXNzZXJ0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDEzLDggKzM5
NCw2IEBACiAJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1h
bGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0TWFsbG9jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkEzMTUxQTgyNUEwMDQxMjNGRiAvKiBG
aXhlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpeGVkQXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQTQxNTFBODI1QTAwNDEyM0ZG
IC8qIEZsb2F0MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9h
dDMyQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQTUxNTFBODI1
QTAwNDEyM0ZGIC8qIEZsb2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGbG9hdDY0QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcy
QTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9yd2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJB
NzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGdW5jdGlvbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2V0UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mjgs
MTAgKzQwNyw2IEBACiAJCUE4QTQ3MkJBMTUxQTgyNUEwMDQxMjNGRiAvKiBIYXNoVHJhaXRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hUcmFpdHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQkIxNTFBODI1QTAwNDEyM0ZGIC8qIEhleE51bWJl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZXhOdW1iZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQkMxNTFBODI1QTAwNDEyM0ZGIC8qIElubGlu
ZUFTTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVBU00uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQkQxNTFBODI1QTAwNDEyM0ZGIC8qIElu
dDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQ4QXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQkUxNTFBODI1QTAwNDEyM0ZGIC8q
IEludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50MTZBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzJCRjE1MUE4MjVBMDA0MTIz
RkYgLyogSW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQz
MkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkMwMTUxQTgyNUEw
MDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludGVncmFsVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThBNDcyQzExNTFBODI1QTAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RIYXNoU2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkMzMTUxQTgyNUEwMDQxMjNGRiAvKiBMb2NrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9ja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWFpblRocmVhZE1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNSwxMyArNTEwLDggQEAKIAkJ
QThBNDczM0IxNTFBODI1QjAwNDEyM0ZGIC8qIEJpbmFyeVNlbWFwaG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCaW5hcnlTZW1hcGhvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDczM0UxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZD
b3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNhZmVSZWZD
b3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzNGMTUxQTgyNUIw
MDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUaHJlYWRTcGVjaWZpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0
NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRBcnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThBNDczNDIxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVRyYWl0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzQzMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJh
aXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVUcmFpdHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczNDQxNTFBODI1QjAwNDEyM0ZGIC8qIFVp
bnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhBcnJheS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM0NTE1MUE4MjVCMDA0MTIzRkYg
LyogVWludDhDbGFtcGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VWludDhDbGFtcGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcz
NDYxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVpbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE4QTQ3MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MzJBcnJheS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEE0NzM0OTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFtZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyTmFtZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNEExNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRv
ckRlZmF1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sbGF0
b3JEZWZhdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyNiwxMCArNTk2
LDYgQEAKIAkJCQlBOEE0NzMzOTE1MUE4MjVCMDA0MTIzRkYgLyogdGhyZWFkcyAqLywKIAkJCQlB
OEE0NzM0ODE1MUE4MjVCMDA0MTIzRkYgLyogdW5pY29kZSAqLywKIAkJCQlBOEE0NzI1NDE1MUE4
MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi8sCi0JCQkJQThBNDcyNTYxNTFBODI1QTAwNDEy
M0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLywKLQkJCQlBOEE0NzI1NzE1MUE4MjVBMDA0MTIzRkYg
LyogQXJyYXlCdWZmZXIuaCAqLywKLQkJCQlBOEE0NzI1ODE1MUE4MjVBMDA0MTIzRkYgLyogQXJy
YXlCdWZmZXJWaWV3LmNwcCAqLywKLQkJCQlBOEE0NzI1OTE1MUE4MjVBMDA0MTIzRkYgLyogQXJy
YXlCdWZmZXJWaWV3LmggKi8sCiAJCQkJQThBNDcyNUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJ
Q1R5cGUuaCAqLywKIAkJCQlBOEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5j
cHAgKi8sCiAJCQkJQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLywK
QEAgLTY4Miw4ICs2NDgsNiBAQAogCQkJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxl
UHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxl
UHJpbnRTdHJlYW0uaCAqLywKIAkJCQlBOEE0NzJBMzE1MUE4MjVBMDA0MTIzRkYgLyogRml4ZWRB
cnJheS5oICovLAotCQkJCUE4QTQ3MkE0MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9hdDMyQXJyYXku
aCAqLywKLQkJCQlBOEE0NzJBNTE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggKi8s
CiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKIAkJCQlBOEE0
NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25hbC5oICovLAogCQkJCTFBMUQ4QjlEMTcz
MTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwICovLApAQCAtNzAyLDEwICs2
NjYsNiBAQAogCQkJCUE4QTQ3MkJCMTUxQTgyNUEwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCAqLywK
IAkJCQlBOEE0NzJCQzE1MUE4MjVBMDA0MTIzRkYgLyogSW5saW5lQVNNLmggKi8sCiAJCQkJQTcw
REEwODIxNzk5RjA0RDAwNTI5QTlCIC8qIEluc2VydGlvbi5oICovLAotCQkJCUE4QTQ3MkJFMTUx
QTgyNUEwMDQxMjNGRiAvKiBJbnQxNkFycmF5LmggKi8sCi0JCQkJQThBNDcyQkYxNTFBODI1QTAw
NDEyM0ZGIC8qIEludDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzJCRDE1MUE4MjVBMDA0MTIzRkYg
LyogSW50OEFycmF5LmggKi8sCi0JCQkJQThBNDcyQzAxNTFBODI1QTAwNDEyM0ZGIC8qIEludGVn
cmFsVHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQlBNzBEQTA4MzE3OTlGMDREMDA1MjlBOUIgLyog
TGlzdER1bXAuaCAqLywKIAkJCQlBOEE0NzJDMTE1MUE4MjVBMDA0MTIzRkYgLyogTGlzdEhhc2hT
ZXQuaCAqLywKIAkJCQlBNzM2QjM1ODE3OTlFMTFBMDBDNkYwNUUgLyogTExWTUhlYWRlcnMuaCAq
LywKQEAgLTgxNiwxMyArNzc2LDggQEAKIAkJCQlBOEE0NzMzRTE1MUE4MjVCMDA0MTIzRkYgLyog
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaCAqLywKIAkJCQlBOEE0NzMzRjE1MUE4MjVCMDA0MTIzRkYg
LyogVGhyZWFkU3BlY2lmaWMuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEgLyog
VHJpU3RhdGUuaCAqLywKLQkJCQlBOEE0NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRBcnJh
eUJhc2UuaCAqLywKIAkJCQlBOEE0NzM0MjE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5j
cHAgKi8sCiAJCQkJQThBNDczNDMxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuaCAqLywK
LQkJCQlBOEE0NzM0NjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJyYXkuaCAqLywKLQkJCQlB
OEE0NzM0NzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzM0
NDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5oICovLAotCQkJCUE4QTQ3MzQ1MTUxQTgy
NUIwMDQxMjNGRiAvKiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJCUE4QTQ3MzVDMTUxQTgy
NUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4MjVCMDA0MTIz
RkYgLyogVmFsdWVDaGVjay5oICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBW
ZWN0b3IuaCAqLywKQEAgLTk0NSw4ICs5MDAsNiBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUE4QTQ3MzdGMTUxQTgyNUIwMDQxMjNGRiAvKiBB
bGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3MzgyMTUxQTgyNUIwMDQxMjNGRiAv
KiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDczODQxNTFBODI1QjAwNDEy
M0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczODUxNTFB
ODI1QjAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDM0
MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzM4NzE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDA1LDggKzk1OCw2IEBACiAJCQkJMEY5RDMzNjExNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQ
cmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQjYxNTFBODI1QjAwNDEyM0ZG
IC8qIGZpeGVkLWR0b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0M1MTUxQTgyNUIwMDQx
MjNGRiAvKiBGaXhlZEFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNDNjE1MUE4MjVC
MDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNDNzE1
MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzNDODE1MUE4MjVCMDA0MTIzRkYgLyogRm9yd2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThB
NDczQzkxNTFBODI1QjAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMUQ4QjlDMTczMTg2Q0UwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAyMiwxMSArOTczLDcgQEAKIAkJCQlBOEE0NzNEQjE1MUE4MjVCMDA0MTIz
RkYgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEQzE1MUE4MjVCMDA0
MTIzRkYgLyogSW5saW5lQVNNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4NDE3OTlGMDRE
MDA1MjlBOUIgLyogSW5zZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNERTE1MUE4
MjVCMDA0MTIzRkYgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDczREYx
NTFBODI1QjAwNDEyM0ZGIC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3
M0REMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2
MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLywKLQkJCQlBOEE0NzNFMDE1MUE4MjVCMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBl
ZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwREEwODUxNzk5RjA0RDAwNTI5QTlC
IC8qIExpc3REdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFMTE1MUE4MjVCMDA0MTIz
RkYgLyogTGlzdEhhc2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0UzMTUxQTgyNUIw
MDQxMjNGRiAvKiBMb2NrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTExNywxMiArMTA2NCw3IEBA
CiAJCQkJQThBNDc0NTQxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU3Bl
Y2lmaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OUVGMTYzMTZCQkZFMEQwMDBBNDMzMSAvKiBU
cmlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0NTcxNTFBODI1QjAwNDEyM0ZGIC8q
IFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1OTE1MUE4MjVCMDA0
MTIzRkYgLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThBNDc0NUMxNTFBODI1
QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzQ1RDE1
MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3
NDVBMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlB
OEE0NzQ1QjE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3NDY3MTUxQTgyNUIwMDQxMjNGRiAvKiBVbmljb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzQ2NDE1MUE4MjVCMDA0MTIzRkYgLyogVW5pY29kZUljdS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDc0NjgxNTFBODI1QjAwNDEyM0ZGIC8qIFVuaWNvZGVNYWNyb3NG
cm9tSUNVLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMDgsOCArMTE1MCw2IEBACiAJCQlpc2EgPSBQ
QlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKLQkJCQlBOEE0NzM4MTE1MUE4MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDczODMxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5
QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM4NjE1MUE4MjVCMDA0MTIz
RkYgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQzNTE1MUE4MjVC
MDA0MTIzRkYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCQzcwRjA1
MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL0FycmF5QnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDViNTdm
ZTljNmZiY2EwNjY0ODg2ODdkY2E3MDA2YzI4MjMzMTI4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCi0KLSNpbmNsdWRlICJBcnJheUJ1ZmZlclZp
ZXcuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1ib29sIEFycmF5QnVmZmVyOjp0cmFuc2ZlcihBcnJheUJ1
ZmZlckNvbnRlbnRzJiByZXN1bHQsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiA+JiBu
ZXV0ZXJlZFZpZXdzKQotewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2VlcEFsaXZlKHRoaXMp
OwotCi0gICAgaWYgKCFtX2NvbnRlbnRzLm1fZGF0YSkgewotICAgICAgICByZXN1bHQubV9kYXRh
ID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgYWxsVmlld3NB
cmVOZXV0ZXJhYmxlID0gdHJ1ZTsKLSAgICBmb3IgKEFycmF5QnVmZmVyVmlldyogaSA9IG1fZmly
c3RWaWV3OyBpOyBpID0gaS0+bV9uZXh0VmlldykgewotICAgICAgICBpZiAoIWktPmlzTmV1dGVy
YWJsZSgpKQotICAgICAgICAgICAgYWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gZmFsc2U7Ci0gICAg
fQotCi0gICAgaWYgKGFsbFZpZXdzQXJlTmV1dGVyYWJsZSkKLSAgICAgICAgbV9jb250ZW50cy50
cmFuc2ZlcihyZXN1bHQpOwotICAgIGVsc2UgewotICAgICAgICBtX2NvbnRlbnRzLmNvcHlUbyhy
ZXN1bHQpOwotICAgICAgICBpZiAoIXJlc3VsdC5tX2RhdGEpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgd2hpbGUgKG1fZmlyc3RWaWV3KSB7Ci0gICAgICAgIEFycmF5
QnVmZmVyVmlldyogY3VycmVudCA9IG1fZmlyc3RWaWV3OwotICAgICAgICByZW1vdmVWaWV3KGN1
cnJlbnQpOwotICAgICAgICBpZiAoYWxsVmlld3NBcmVOZXV0ZXJhYmxlIHx8IGN1cnJlbnQtPmlz
TmV1dGVyYWJsZSgpKQotICAgICAgICAgICAgY3VycmVudC0+bmV1dGVyKCk7Ci0gICAgICAgIG5l
dXRlcmVkVmlld3MuYXBwZW5kKGN1cnJlbnQpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCBBcnJheUJ1ZmZlcjo6YWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCi17Ci0g
ICAgdmlldy0+bV9idWZmZXIgPSB0aGlzOwotICAgIHZpZXctPm1fcHJldlZpZXcgPSAwOwotICAg
IHZpZXctPm1fbmV4dFZpZXcgPSBtX2ZpcnN0VmlldzsKLSAgICBpZiAobV9maXJzdFZpZXcpCi0g
ICAgICAgIG1fZmlyc3RWaWV3LT5tX3ByZXZWaWV3ID0gdmlldzsKLSAgICBtX2ZpcnN0VmlldyA9
IHZpZXc7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3
KiB2aWV3KQotewotICAgIEFTU0VSVCh0aGlzID09IHZpZXctPm1fYnVmZmVyKTsKLSAgICBpZiAo
dmlldy0+bV9uZXh0VmlldykKLSAgICAgICAgdmlldy0+bV9uZXh0Vmlldy0+bV9wcmV2VmlldyA9
IHZpZXctPm1fcHJldlZpZXc7Ci0gICAgaWYgKHZpZXctPm1fcHJldlZpZXcpCi0gICAgICAgIHZp
ZXctPm1fcHJldlZpZXctPm1fbmV4dFZpZXcgPSB2aWV3LT5tX25leHRWaWV3OwotICAgIGlmICht
X2ZpcnN0VmlldyA9PSB2aWV3KQotICAgICAgICBtX2ZpcnN0VmlldyA9IHZpZXctPm1fbmV4dFZp
ZXc7Ci0gICAgdmlldy0+bV9wcmV2VmlldyA9IHZpZXctPm1fbmV4dFZpZXcgPSAwOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oIGIvU291cmNlL1dURi93
dGYvQXJyYXlCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UwYTFiM2Mz
ZTNkNjM1MTdjNjcyYWFkYWI3YTc3NzE2NDQwODg4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFycmF5QnVmZmVy
X2gKLSNkZWZpbmUgQXJyYXlCdWZmZXJfaAotCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlC
dWZmZXI7Ci1jbGFzcyBBcnJheUJ1ZmZlclZpZXc7Ci0KLWNsYXNzIEFycmF5QnVmZmVyQ29udGVu
dHMgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMpOwotcHVi
bGljOgotICAgIEFycmF5QnVmZmVyQ29udGVudHMoKSAKLSAgICAgICAgOiBtX2RhdGEoMCkKLSAg
ICAgICAgLCBtX3NpemVJbkJ5dGVzKDApCi0gICAgeyB9Ci0KLSAgICBpbmxpbmUgfkFycmF5QnVm
ZmVyQ29udGVudHMoKTsKLQotICAgIHZvaWQqIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KLSAg
ICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KLQotcHJp
dmF0ZToKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJ
bkJ5dGVzKSAKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgLCBtX3NpemVJbkJ5dGVz
KHNpemVJbkJ5dGVzKQotICAgIHsgfQotCi0gICAgZnJpZW5kIGNsYXNzIEFycmF5QnVmZmVyOwot
Ci0gICAgZW51bSBJbml0aWFsaXphdGlvblBvbGljeSB7Ci0gICAgICAgIFplcm9Jbml0aWFsaXpl
LAotICAgICAgICBEb250SW5pdGlhbGl6ZQotICAgIH07Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZv
aWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMmKTsKLSAgICB2
b2lkIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKCFvdGhlci5tX2RhdGEpOwotICAgICAgICBvdGhlci5tX2RhdGEgPSBtX2RhdGE7Ci0g
ICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwotICAgICAgICBtX2Rh
dGEgPSAwOwotICAgICAgICBtX3NpemVJbkJ5dGVzID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGNv
cHlUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
b3RoZXIubV9kYXRhKTsKLSAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUo
bV9zaXplSW5CeXRlcywgc2l6ZW9mKGNoYXIpLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5p
dGlhbGl6ZSwgb3RoZXIpOwotICAgICAgICBpZiAoIW90aGVyLm1fZGF0YSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbWVtY3B5KG90aGVyLm1fZGF0YSwgbV9kYXRhLCBtX3NpemVJbkJ5
dGVzKTsKLSAgICAgICAgb3RoZXIubV9zaXplSW5CeXRlcyA9IG1fc2l6ZUluQnl0ZXM7Ci0gICAg
fQotCi0gICAgdm9pZCogbV9kYXRhOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Ci19Owot
Ci1jbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXIqKTsK
LSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2
b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmKTsKLQotICAg
IC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
Ci0KLSAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwotICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRh
KCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKLQotICAg
IGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4sIGludCBlbmQp
IGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVn
aW4pIGNvbnN0OwotCi0gICAgdm9pZCBhZGRWaWV3KEFycmF5QnVmZmVyVmlldyopOwotICAgIHZv
aWQgcmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmLCBWZWN0b3I8UmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cyk7Ci0gICAgYm9vbCBpc05ldXRlcmVkKCkgeyBy
ZXR1cm4gIW1fY29udGVudHMubV9kYXRhOyB9Ci0KLSAgICB+QXJyYXlCdWZmZXIoKSB7IH0KLQot
cHJpdmF0ZToKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0
ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0KLSAgICBpbmxpbmUgQXJyYXlC
dWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYpOwotICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7Ci0g
ICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25zdDsKLSAgICBzdGF0
aWMgaW5saW5lIGludCBjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KTsKLQot
ICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250ZW50czsKLSAgICBBcnJheUJ1ZmZlclZpZXcq
IG1fZmlyc3RWaWV3OwotfTsKLQotaW50IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGludCB4LCBp
bnQgbGVmdCwgaW50IHJpZ2h0KQotewotICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0KTsKLSAgICBp
ZiAoeCA8IGxlZnQpCi0gICAgICAgIHggPSBsZWZ0OwotICAgIGlmIChyaWdodCA8IHgpCi0gICAg
ICAgIHggPSByaWdodDsKLSAgICByZXR1cm4geDsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKQotewotICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwotfQotCi1QYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyKiBvdGhl
cikKLXsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci0+ZGF0YSgpLCBvdGhl
ci0+Ynl0ZUxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi17Ci0g
ICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
Ojp0cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5p
dGlhbGl6ZSwgY29udGVudHMpOwotICAgIGlmICghY29udGVudHMubV9kYXRhKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBB
cnJheUJ1ZmZlcihjb250ZW50cykpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNl
LCBieXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2UoKTsKLX0KLQotUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRz
JiBjb250ZW50cykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRl
bnRzKSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Q
b2xpY3kgcG9saWN5KQotewotICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7Ci0gICAg
QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRl
U2l6ZSwgcG9saWN5LCBjb250ZW50cyk7Ci0gICAgaWYgKCFjb250ZW50cy5tX2RhdGEpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVu
dHMpKTsKLX0KLQotQXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMm
IGNvbnRlbnRzKQotICAgIDogbV9maXJzdFZpZXcoMCkKLXsKLSAgICBjb250ZW50cy50cmFuc2Zl
cihtX2NvbnRlbnRzKTsKLX0KLQotdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKQotewotICAgIHJl
dHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKLX0KLQotY29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRh
dGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKLX0KLQotdW5zaWdu
ZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRl
bnRzLm1fc2l6ZUluQnl0ZXM7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZShpbnQgYmVnaW4sIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNsaWNl
SW1wbChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJbmRleChlbmQpKTsKLX0KLQotUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGludCBiZWdpbikgY29uc3QKLXsKLSAg
ICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwotfQot
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVk
IGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2lu
IDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKLX0KLQot
dW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25zdAotewotICAg
IHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7Ci0gICAgaWYgKGluZGV4IDwg
MCkKLSAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7Ci0gICAgcmV0dXJuIGNs
YW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwotfQotCi12b2lkIEFycmF5QnVmZmVy
Q29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBv
bGljeSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVzdWx0KQotewotICAgIC8vIERvIG5vdCBhbGxv
dyAzMi1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgLy8gRklYTUU6IFdoeSBu
b3Q/IFRoZSB0cnlGYXN0Q2FsbG9jIGZ1bmN0aW9uIGFscmVhZHkgY2hlY2tzIGl0cyBhcmd1bWVu
dHMsCi0gICAgLy8gYW5kIHdpbGwgZmFpbCBpZiB0aGVyZSBpcyBhbnkgb3ZlcmZsb3csIHNvIHdo
eSBzaG91bGQgd2UgaW5jbHVkZSBhCi0gICAgLy8gcmVkdWRhbnQgdW5uZWNlc3NhcmlseSByZXN0
cmljdGl2ZSBjaGVjayBoZXJlPwotICAgIGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1bnNp
Z25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAg
aWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSkgewotICAgICAg
ICAgICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgYm9vbCBhbGxvY2F0aW9uU3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgaWYgKHBv
bGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKLSAgICAgICAgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IFdU
Rjo6dHJ5RmFzdENhbGxvYyhudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShy
ZXN1bHQubV9kYXRhKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHBvbGljeSA9PSBEb250
SW5pdGlhbGl6ZSk7Ci0gICAgICAgIGFsbG9jYXRpb25TdWNjZWVkZWQgPSBXVEY6OnRyeUZhc3RN
YWxsb2MobnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemUpLmdldFZhbHVlKHJlc3VsdC5tX2Rh
dGEpOwotICAgIH0KLQotICAgIGlmIChhbGxvY2F0aW9uU3VjY2VlZGVkKSB7Ci0gICAgICAgIHJl
c3VsdC5tX3NpemVJbkJ5dGVzID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci19Ci0KLUFycmF5QnVm
ZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRlbnRzKCkKLXsKLSAgICBXVEY6OmZhc3RGcmVl
KG1fZGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkFycmF5QnVm
ZmVyOwotCi0jZW5kaWYgLy8gQXJyYXlCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmIzYTJlNDE3ZmRkZjE0YmZkMjEy
MDhkMDg1YTYyNTVkMzVlNDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgotCi1uYW1l
c3BhY2UgV1RGIHsKLQotQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0KQotICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQotICAgICAgICAs
IG1faXNOZXV0ZXJhYmxlKHRydWUpCi0gICAgICAgICwgbV9idWZmZXIoYnVmZmVyKQotICAgICAg
ICAsIG1fcHJldlZpZXcoMCkKLSAgICAgICAgLCBtX25leHRWaWV3KDApCi17Ci0gICAgbV9iYXNl
QWRkcmVzcyA9IG1fYnVmZmVyID8gKHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgp
KSArIG1fYnl0ZU9mZnNldCkgOiAwOwotICAgIGlmIChtX2J1ZmZlcikgCi0gICAgICAgIG1fYnVm
ZmVyLT5hZGRWaWV3KHRoaXMpOwotfQotCi1BcnJheUJ1ZmZlclZpZXc6On5BcnJheUJ1ZmZlclZp
ZXcoKQotewotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXItPnJlbW92ZVZpZXco
dGhpcyk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKQotewotICAgIG1fYnVm
ZmVyID0gMDsKLSAgICBtX2J5dGVPZmZzZXQgPSAwOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVy
Vmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjcwOGZiZGZmYWI5MWQ2ZjU2
NDBiMWZkN2RlZjQxZTYzMDk2MTBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFycmF5QnVmZmVyVmlld19o
Ci0jZGVmaW5lIEFycmF5QnVmZmVyVmlld19oCi0KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIu
aD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXJW
aWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7Ci0gIHB1YmxpYzoKLSAg
ICBlbnVtIFZpZXdUeXBlIHsKLSAgICAgICAgVHlwZUludDgsCi0gICAgICAgIFR5cGVVaW50OCwK
LSAgICAgICAgVHlwZVVpbnQ4Q2xhbXBlZCwKLSAgICAgICAgVHlwZUludDE2LAotICAgICAgICBU
eXBlVWludDE2LAotICAgICAgICBUeXBlSW50MzIsCi0gICAgICAgIFR5cGVVaW50MzIsCi0gICAg
ICAgIFR5cGVGbG9hdDMyLAotICAgICAgICBUeXBlRmxvYXQ2NCwKLSAgICAgICAgVHlwZURhdGFW
aWV3Ci0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdCA9IDA7Ci0K
LSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fYnVmZmVyOwotICAgIH0KLQotICAgIHZvaWQqIGJhc2VBZGRyZXNzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzOwotICAgIH0KLQotICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYnl0ZU9m
ZnNldDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCA9
IDA7Ci0KLSAgICB2b2lkIHNldE5ldXRlcmFibGUoYm9vbCBmbGFnKSB7IG1faXNOZXV0ZXJhYmxl
ID0gZmxhZzsgfQotICAgIGJvb2wgaXNOZXV0ZXJhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc05l
dXRlcmFibGU7IH0KLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZl
clZpZXcoKTsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEFycmF5QnVm
ZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0K
LSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQpOwotCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0KLSAgICBpbmxp
bmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5
dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExl
bmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQq
IGxlbmd0aCk7Ci0KLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFu
Z2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2UoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbnVtRWxlbWVudHMpCi0gICAgewotICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHNpemVvZihUKSA+IDEgJiYgYnl0ZU9mZnNldCAl
IHNpemVvZihUKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGJ5dGVP
ZmZzZXQgPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLT5ieXRlTGVuZ3Ro
KCkgLSBieXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKLSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4g
cmVtYWluaW5nRWxlbWVudHMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2Yg
ZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKLSAgICAvLyBvdXRwdXQgb2Zmc2V0IGlz
IGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmRO
dW1FbGVtZW50cyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKm51
bUVsZW1lbnRzKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFY
IC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKLSAgICAgICAgaWYgKCpvZmZzZXQgPiBt
YXhPZmZzZXQpIHsKLSAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsK
LSAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXpl
b2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXItPmJ5dGVMZW5ndGgoKSwg
Km9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7Ci0gICAgICAgICpudW1FbGVtZW50
cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwotICAgIH0KLQot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7Ci0KLSAgICAvLyBU
aGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhl
IGJ5dGUgb2Zmc2V0LgotICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7Ci0KLSAgICB1bnNpZ25lZCBt
X2J5dGVPZmZzZXQgOiAzMTsKLSAgICBib29sIG1faXNOZXV0ZXJhYmxlIDogMTsKLQotICBwcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IG1fYnVmZmVyOwotICAgIEFycmF5QnVmZmVyVmlldyogbV9wcmV2VmlldzsKLSAgICBBcnJh
eUJ1ZmZlclZpZXcqIG1fbmV4dFZpZXc7Ci19OwotCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0
SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQotewotICAg
IGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBh
cnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQg
KyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2Yg
cmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgCi0gICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVzcygpKTsK
LSAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJy
YXktPmJ5dGVMZW5ndGgoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQXJyYXlCdWZm
ZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQotewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0
KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGJhc2VBZGRyZXNzKCkpOwotICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRh
dGEsIGRhdGFCeXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBBcnJheUJ1
ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdl
Qnl0ZUxlbmd0aCkKLXsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAg
IC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2VB
ZGRyZXNzKCkpOwotICAgIG1lbXNldChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVu
Z3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1
bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAg
ICAgICBzdGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3Rh
cnQgPSAwOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAg
IGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlm
IChlbmQgPCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihlbmQgLSBzdGFydCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OkFycmF5QnVmZmVyVmlldzsKLQotI2VuZGlmIC8vIEFycmF5QnVmZmVyVmlld19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL0Zsb2F0
MzJBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjcyYTBhZmY2MzI2MWE1
MDM2YWEyNTdlZTIxYTg3NTk2YTg0NDYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zsb2F0MzJBcnJheS5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgRmxvYXQzMkFycmF5X2gKLSNk
ZWZpbmUgRmxvYXQzMkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9UeXBlZEFycmF5QmFzZS5oPgot
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBG
bG9hdDMyQXJyYXkgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVh
dGUoY29uc3QgZmxvYXQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFNob3Vs
ZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUg
ZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBK
YXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8RmxvYXQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7
Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxmbG9hdD46OnNldDsKLQotICAgIHZvaWQgc2V0
KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaW5kZXgg
Pj0gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjptX2xlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZhbHVlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMy
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8
RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAg
dmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBU
eXBlRmxvYXQzMjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEZsb2F0MzJBcnJheShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0
ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBN
YWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3Mg
VHlwZWRBcnJheUJhc2U8ZmxvYXQ+OwotfTsKLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZs
b2F0MzJBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRB
cnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGU8RmxvYXQzMkFycmF5PihsZW5ndGgpOwotfQotCi1QYXNz
UmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUoY29uc3QgZmxvYXQqIGFy
cmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0
Pjo6Y3JlYXRlPEZsb2F0MzJBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8
RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGU8RmxvYXQzMkFycmF5PihidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9h
dDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8RmxvYXQzMkFy
cmF5PihsZW5ndGgpOwotfQotCi1GbG9hdDMyQXJyYXk6OkZsb2F0MzJBcnJheShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKLSAgICA6IFR5cGVkQXJyYXlCYXNlPGZsb2F0PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0
aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6c3ViYXJy
YXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3Ro
KCkpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpzdWJhcnJh
eShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxG
bG9hdDMyQXJyYXk+KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNp
bmcgV1RGOjpGbG9hdDMyQXJyYXk7Ci0KLSNlbmRpZiAvLyBGbG9hdDMyQXJyYXlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9GbG9h
dDY0QXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5MzBjZTAwOGU5ZmQ4
NmI0OWNiM2ViOTRmNDgzNGQyNmUyNzhkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDY0QXJyYXkuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmxvYXQ2NEFycmF5X2gKLSNk
ZWZpbmUgRmxvYXQ2NEFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9UeXBlZEFycmF5QmFzZS5oPgot
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBG
bG9hdDY0QXJyYXkgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8ZG91YmxlPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3Jl
YXRlKGNvbnN0IGRvdWJsZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hv
dWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBi
ZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRv
IEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OnNldDsKLQotICAgIHZvaWQg
c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaW5k
ZXggPj0gVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6bV9sZW5ndGgpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmRhdGEoKVtpbmRleF0gPSBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxG
bG9hdDY0QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NS
ZWZQdHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Owot
Ci0gICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBUeXBlRmxvYXQ2NDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEZsb2F0NjRB
cnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBN
YWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3Mg
VHlwZWRBcnJheUJhc2U8ZG91YmxlPjsKLX07Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBG
bG9hdDY0QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBh
c3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZShjb25zdCBkb3VibGUq
IGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRv
dWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVm
UHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0g
ICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGJ1
ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+
IEZsb2F0NjRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0g
ICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8Rmxv
YXQ2NEFycmF5PihsZW5ndGgpOwotfQotCi1GbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKLSAgICA6IFR5cGVkQXJyYXlCYXNlPGRvdWJsZT4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6
OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQs
IGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6
c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJh
eUltcGw8RmxvYXQ2NEFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RG
Ci0KLXVzaW5nIFdURjo6RmxvYXQ2NEFycmF5OwotCi0jZW5kaWYgLy8gRmxvYXQ2NEFycmF5X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0Zv
cndhcmQuaAppbmRleCA4MmMyZTE4MWFjNjJlNDc3ODEzMmEwMzkyNzAxYWIxOWE0M2MyOWJjLi4y
YTQ3NTAzY2JjMzQwMDNlYjA3ZTQ5YzNiZTZkNGM5Y2M0NTljNDg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0z
MywzMCArMzMsMTkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y2xhc3MgUGFzc1JlZlB0cjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHI7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXI+IGNsYXNzIFZlY3RvcjsKLSAgICAKLSAgICBjbGFzcyBBcnJheUJ1
ZmZlcjsKLSAgICBjbGFzcyBBcnJheUJ1ZmZlclZpZXc7CisKICAgICBjbGFzcyBBdG9taWNTdHJp
bmc7CiAgICAgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKICAgICBjbGFzcyBCaW5hcnlTZW1hcGhv
cmU7CiAgICAgY2xhc3MgQ1N0cmluZzsKICAgICBjbGFzcyBEZWNvZGVyOwogICAgIGNsYXNzIEVu
Y29kZXI7Ci0gICAgY2xhc3MgRmxvYXQzMkFycmF5OwotICAgIGNsYXNzIEZsb2F0NjRBcnJheTsK
ICAgICBjbGFzcyBGdW5jdGlvbkRpc3BhdGNoZXI7Ci0gICAgY2xhc3MgSW50OEFycmF5OwotICAg
IGNsYXNzIEludDE2QXJyYXk7Ci0gICAgY2xhc3MgSW50MzJBcnJheTsKICAgICBjbGFzcyBQcmlu
dFN0cmVhbTsKICAgICBjbGFzcyBTdHJpbmc7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFN0cmluZ0J1ZmZlcjsKICAgICBjbGFzcyBTdHJpbmdCdWlsZGVyOwogICAgIGNsYXNzIFN0
cmluZ0ltcGw7Ci0gICAgY2xhc3MgVWludDhBcnJheTsKLSAgICBjbGFzcyBVaW50OENsYW1wZWRB
cnJheTsKLSAgICBjbGFzcyBVaW50MTZBcnJheTsKLSAgICBjbGFzcyBVaW50MzJBcnJheTsKIH0K
IAogdXNpbmcgV1RGOjpGdW5jdGlvbjsKQEAgLTY4LDI4ICs1NywxNyBAQCB1c2luZyBXVEY6OlBh
c3NSZWZQdHI7CiB1c2luZyBXVEY6OlJlZlB0cjsKIHVzaW5nIFdURjo6VmVjdG9yOwogCi11c2lu
ZyBXVEY6OkFycmF5QnVmZmVyOwotdXNpbmcgV1RGOjpBcnJheUJ1ZmZlclZpZXc7CiB1c2luZyBX
VEY6OkF0b21pY1N0cmluZzsKIHVzaW5nIFdURjo6QXRvbWljU3RyaW5nSW1wbDsKIHVzaW5nIFdU
Rjo6QmluYXJ5U2VtYXBob3JlOwogdXNpbmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpFbmNv
ZGVyOwogdXNpbmcgV1RGOjpEZWNvZGVyOwotdXNpbmcgV1RGOjpGbG9hdDMyQXJyYXk7Ci11c2lu
ZyBXVEY6OkZsb2F0NjRBcnJheTsKIHVzaW5nIFdURjo6RnVuY3Rpb25EaXNwYXRjaGVyOwotdXNp
bmcgV1RGOjpJbnQ4QXJyYXk7Ci11c2luZyBXVEY6OkludDE2QXJyYXk7Ci11c2luZyBXVEY6Oklu
dDMyQXJyYXk7CiB1c2luZyBXVEY6OlByaW50U3RyZWFtOwogdXNpbmcgV1RGOjpTdHJpbmc7CiB1
c2luZyBXVEY6OlN0cmluZ0J1ZmZlcjsKIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKIHVzaW5n
IFdURjo6U3RyaW5nSW1wbDsKLXVzaW5nIFdURjo6VWludDhBcnJheTsKLXVzaW5nIFdURjo6VWlu
dDhDbGFtcGVkQXJyYXk7Ci11c2luZyBXVEY6OlVpbnQxNkFycmF5OwotdXNpbmcgV1RGOjpVaW50
MzJBcnJheTsKIAogI2VuZGlmIC8vIFdURl9Gb3J3YXJkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0ludDE2QXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL0ludDE2QXJyYXkuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q1YTU3OWE3MjgxYmE4ZmZiM2Y5ODFhMmUwODRlMmRm
NWM1NDg2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9JbnQxNkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpZm5kZWYgSW50MTZBcnJheV9oCi0jZGVmaW5lIEludDE2QXJyYXlfaAot
Ci0jaW5jbHVkZSA8d3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLWNsYXNzIEFycmF5QnVmZmVyOwotCi1jbGFzcyBJbnQxNkFycmF5IDogcHVibGljIElu
dGVncmFsVHlwZWRBcnJheUJhc2U8c2hvcnQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZShjb25zdCBzaG9ydCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2
QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBp
dCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5v
dCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmls
bGluZyBmaXJzdC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJh
eUJhc2U8c2hvcnQ+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaG9y
dD46OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IHN1YmFycmF5KGlu
dCBzdGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gc3ViYXJy
YXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0
VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZUludDE2OwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBpbmxpbmUgSW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUg
dG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8c2hvcnQ+Owot
fTsKLQotUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaG9ydD46OmNyZWF0ZTxJbnQx
NkFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6
OmNyZWF0ZShjb25zdCBzaG9ydCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1
cm4gVHlwZWRBcnJheUJhc2U8c2hvcnQ+OjpjcmVhdGU8SW50MTZBcnJheT4oYXJyYXksIGxlbmd0
aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaG9ydD46OmNyZWF0ZTxJbnQx
NkFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50
MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgp
Ci17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6Y3JlYXRlVW5pbml0aWFsaXpl
ZDxJbnQxNkFycmF5PihsZW5ndGgpOwotfQotCi1JbnQxNkFycmF5OjpJbnQxNkFycmF5KFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQotICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaG9ydD4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJh
eTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFy
dCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OnN1
YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXlJ
bXBsPEludDE2QXJyYXk+KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQot
dXNpbmcgV1RGOjpJbnQxNkFycmF5OwotCi0jZW5kaWYgLy8gSW50MTZBcnJheV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQzMkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQzMkFy
cmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YTk5NzgwOWEyOTNlZmRmYmVk
OTg3MDc3NzY0OGNlZGM0ODFjMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvSW50MzJBcnJheS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSW50MzJBcnJheV9oCi0jZGVmaW5lIElu
dDMyQXJyYXlfaAotCi0jaW5jbHVkZSA8d3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaD4KLQot
bmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEludDMyQXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBl
ZEFycmF5QmFzZTxpbnQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
SW50MzJBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZShjb25zdCBpbnQqIGFycmF5LCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVhdGUo
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhl
IGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNl
IHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0g
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGludD46OnNl
dDsKLSAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludD46OnNldDsKLQotICAgIGlu
bGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0g
ICAgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gVHlwZUludDMyOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbmxp
bmUgSW50MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZy
aWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQ+OwotfTsKLQotUGFzc1JlZlB0cjxJbnQzMkFy
cmF5PiBJbnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFz
c1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoY29uc3QgaW50KiBhcnJheSwg
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVh
dGU8SW50MzJBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJh
eT4gSW50MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOwotfQotCi1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxp
bnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDMyQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLUludDMy
QXJyYXk6OkludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlPGludD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8
SW50MzJBcnJheT4gSW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAg
IHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRyPEludDMy
QXJyYXk+IEludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDMyQXJyYXk+KHN0YXJ0LCBlbmQpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpJbnQzMkFycmF5OwotCi0jZW5kaWYgLy8g
SW50MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaCBiL1Nv
dXJjZS9XVEYvd3RmL0ludDhBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
MjlkMmQ5YWFiYTMyMjVlNjQ5NjhjY2EwNDQwNDAxZTA5NzMzNjNhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludDhBcnJheS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSW50OEFy
cmF5X2gKLSNkZWZpbmUgSW50OEFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQot
Y2xhc3MgSW50OEFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNo
YXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBj
cmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50
OEFycmF5PiBjcmVhdGUoY29uc3Qgc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
LQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJl
IGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0
cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KLSAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OnNl
dDsKLSAgICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPjo6c2V0Owot
Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNv
bnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0
LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZUludDg7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IGlubGluZSBJbnQ4QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgot
ICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj47Ci19OwotCi1QYXNz
UmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewot
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OmNyZWF0ZTxJbnQ4QXJyYXk+
KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZShj
b25zdCBzaWduZWQgY2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4g
VHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+OjpjcmVhdGU8SW50OEFycmF5PihhcnJheSwgbGVu
Z3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OmNyZWF0
ZTxJbnQ4QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0
cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPjo6Y3JlYXRlVW5p
bml0aWFsaXplZDxJbnQ4QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLUludDhBcnJheTo6SW50OEFycmF5
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQotICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj4o
YnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5
PiBJbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3Vi
YXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBz
dWJhcnJheUltcGw8SW50OEFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V1RGCi0KLXVzaW5nIFdURjo6SW50OEFycmF5OwotCi0jZW5kaWYgLy8gSW50OEFycmF5X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJj
ZS9XVEYvd3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMWZhZjE0Y2FiNTEzMzNiMDZiMjM1YzI3NmNhZmQyZDkxNGE2OGMwMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9J
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2lmbmRlZiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKLSNkZWZpbmUgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZV9oCi0KLSNpbmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4KLSNp
bmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotLy8gQmFzZSBj
bGFzcyBmb3IgYWxsIFdlYkdMPFQ+QXJyYXkgdHlwZXMgaG9sZGluZyBpbnRlZ3JhbAotLy8gKG5v
bi1mbG9hdGluZy1wb2ludCkgdmFsdWVzLgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlIDogcHVibGljIFR5cGVk
QXJyYXlCYXNlPFQ+IHsKLSAgcHVibGljOgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBk
b3VibGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8
VD46Om1fbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoc3RkOjppc25h
bih2YWx1ZSkpIC8vIENsYW1wIE5hTiB0byAwCi0gICAgICAgICAgICB2YWx1ZSA9IDA7Ci0gICAg
ICAgIC8vIFRoZSBkb3VibGUgY2FzdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHdy
YXBwaW5nCi0gICAgICAgIC8vIGZvciBvdXQtb2YtcmFuZ2UgdmFsdWVzIHdpdGggSW50MzJBcnJh
eSBhbmQgVWludDMyQXJyYXkuCi0gICAgICAgIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5k
ZXhdID0gc3RhdGljX2Nhc3Q8VD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKLSAgICB9
Ci0KLSAgcHJvdGVjdGVkOgotICAgIEludGVncmFsVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Ci0gICAgICAgIDogVHlwZWRBcnJheUJhc2U8VD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
Ci0gICAgewotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6Oklu
dGVncmFsVHlwZWRBcnJheUJhc2U7Ci0KLSNlbmRpZiAvLyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
ZGU4MjRmYTgyYzdiYWI5YzdmMmU1MTJkN2QzYjZjNTY0MTQ1MmRiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlC
YXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYg
VHlwZWRBcnJheUJhc2VfaAotI2RlZmluZSBUeXBlZEFycmF5QmFzZV9oCi0KLSNpbmNsdWRlIDx3
dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0KLW5h
bWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkQXJyYXlC
YXNlIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7Ci0gIHB1YmxpYzoKLSAgICBUKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGJhc2VBZGRyZXNzKCkpOyB9Ci0KLSAgICBi
b29sIHNldChUeXBlZEFycmF5QmFzZTxUPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YoVCkpOwotICAg
IH0KLQotICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgs
IHVuc2lnbmVkIG9mZnNldCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzZXRSYW5nZUltcGwocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGRhdGFMZW5ndGggKiBzaXplb2YoVCks
IG9mZnNldCAqIHNpemVvZihUKSk7Ci0gICAgfQotCi0gICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWdu
ZWQgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHplcm9SYW5n
ZUltcGwob2Zmc2V0ICogc2l6ZW9mKFQpLCBsZW5ndGggKiBzaXplb2YoVCkpOwotICAgIH0KLQot
ICAgIC8vIE92ZXJyaWRkZW4gZnJvbSBBcnJheUJ1ZmZlclZpZXcuIFRoaXMgbXVzdCBiZSBwdWJs
aWMgYmVjYXVzZSBvZgotICAgIC8vIHJ1bGVzIGFib3V0IGluaGVyaXRhbmNlIG9mIG1lbWJlcnMg
aW4gdGVtcGxhdGUgY2xhc3NlcywgYW5kCi0gICAgLy8gYmVjYXVzZSBpdCBpcyBhY2Nlc3NlZCB2
aWEgcG9pbnRlcnMgdG8gc3ViY2xhc3Nlcy4KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOwotICAgIH0KLQotICAgIHZpcnR1YWwgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sZW5ndGgg
KiBzaXplb2YoVCk7Ci0gICAgfQotCi0gICAgLy8gSW52b2tlZCBieSB0aGUgaW5kZXhlZCBnZXR0
ZXIuIERvZXMgbm90IHBlcmZvcm0gcmFuZ2UgY2hlY2tzOyBjYWxsZXIKLSAgICAvLyBpcyByZXNw
b25zaWJsZSBmb3IgZG9pbmcgc28gYW5kIHJldHVybmluZyB1bmRlZmluZWQgYXMgbmVjZXNzYXJ5
LgotICAgIFQgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgVHlwZWRBcnJheUJhc2U8VD46Om1f
bGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhd
OwotICAgIH0KLQotICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIHBvcykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0IDw9IG1fbGVu
Z3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBwb3MgPD0gbV9sZW5ndGgKLSAgICAgICAgICAg
IC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBwb3MgPj0gb2Zmc2V0
KTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkK
LSAgICAgICAgOiBBcnJheUJ1ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQotICAgICAgICAs
IG1fbGVuZ3RoKGxlbmd0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1
YmNsYXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKGxlbmd0aCwgc2l6ZW9mKFQpKTsKLSAgICAgICAgaWYgKCFidWZmZXIu
Z2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJj
bGFzcz4oYnVmZmVyLCAwLCBsZW5ndGgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBT
dWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKGNvbnN0IFQq
IGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8U3ViY2xhc3M+
IGEgPSBjcmVhdGU8U3ViY2xhc3M+KGxlbmd0aCk7Ci0gICAgICAgIGlmIChhKQotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAg
IGEtPnNldChpLCBhcnJheVtpXSk7Ci0gICAgICAgIHJldHVybiBhOwotICAgIH0KLQotICAgIHRl
bXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4g
Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZihidWZmZXIpOwotICAgICAgICBpZiAoIXZlcmlmeVN1
YlJhbmdlPFQ+KGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiAw
OwotCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLCBieXRlT2Zmc2V0
LCBsZW5ndGgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAg
IGlmICghYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVy
biBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgUGFzc1JlZlB0cjxTdWJjbGFzcz4gc3ViYXJyYXlJ
bXBsKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG9m
ZnNldCwgbGVuZ3RoOwotICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVu
ZCwgbV9sZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOwotICAgICAgICBjbGFtcE9mZnNldEFuZE51
bUVsZW1lbnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgpOwot
ICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5ndGgp
OwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQotICAgIHsKLSAgICAgICAgQXJy
YXlCdWZmZXJWaWV3OjpuZXV0ZXIoKTsKLSAgICAgICAgbV9sZW5ndGggPSAwOwotICAgIH0KLQot
ICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmlydHVh
bCBmdW5jdGlvbiBpbiBzdWJjbGFzc2VzLAotICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBwcm90
ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZS4KLSAgICB1bnNpZ25lZCBtX2xlbmd0aDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OlR5cGVkQXJyYXlCYXNlOwotCi0jZW5k
aWYgLy8gVHlwZWRBcnJheUJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWludDE2
QXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGVjZjVmOWM5OWQ0YThmZjI4YjdjNTg2MGE0NDA5ZGU3ZWE1OWUyZjcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93
dGYvVWludDE2QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIFVpbnQxNkFycmF5X2gKLSNkZWZpbmUgVWludDE2QXJyYXlfaAotCi0jaW5jbHVk
ZSA8d3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNs
YXNzIEFycmF5QnVmZmVyOwotCi1jbGFzcyBVaW50MTZBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IGNyZWF0ZShjb25zdCB1bnNpZ25l
ZCBzaG9ydCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQxNkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBi
ZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4g
RG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlw
dCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVp
bnQxNkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1
c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OnNldDsKLSAgICB1c2luZyBJbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0Pjo6c2V0OwotCi0gICAgaW5saW5lIFBh
c3NSZWZQdHI8VWludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgaW5s
aW5lIFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkg
Y29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIFR5cGVVaW50MTY7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlubGluZSBV
aW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1
cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0
PjsKLX07Ci0KLVBhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9y
dD46OmNyZWF0ZTxVaW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MTZB
cnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZShjb25zdCB1bnNpZ25lZCBzaG9ydCogYXJyYXksIHVu
c2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hv
cnQ+OjpjcmVhdGU8VWludDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRy
PFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD46OmNyZWF0ZTxVaW50MTZBcnJheT4o
YnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5
PiBVaW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCi17Ci0g
ICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0Pjo6Y3JlYXRlVW5pbml0aWFs
aXplZDxVaW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotVWludDE2QXJyYXk6OlVpbnQxNkFycmF5
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQotICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9y
dD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDE2
QXJyYXk+IFVpbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDE2QXJy
YXk+IFVpbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50MTZBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OlVpbnQxNkFycmF5OwotCi0jZW5kaWYgLy8g
VWludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWludDMyQXJyYXkuaCBi
L1NvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDFiYWRmNmJmYzE5NTEwNmE4Yjg3NzE0MDNmNzkwZDgyY2MxM2VkYjcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvVWludDMy
QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVm
IFVpbnQzMkFycmF5X2gKLSNkZWZpbmUgVWludDMyQXJyYXlfaAotCi0jaW5jbHVkZSA8d3RmL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEFycmF5
QnVmZmVyOwotCi1jbGFzcyBVaW50MzJBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlPHVuc2lnbmVkIGludD4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxVaW50MzJBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgaW50KiBhcnJh
eSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMy
QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBp
dCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5v
dCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmls
bGluZyBmaXJzdC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJy
YXlCYXNlPHVuc2lnbmVkPjo6c2V0OwotICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8
dW5zaWduZWQ+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gc3Vi
YXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJh
eT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmll
d1R5cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQzMjsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIFVpbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8vIE1h
a2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFzcyBU
eXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OwotfTsKLQotUGFzc1JlZlB0cjxVaW50MzJBcnJh
eT4gVWludDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5
cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD46OmNyZWF0ZTxVaW50MzJBcnJheT4obGVuZ3RoKTsK
LX0KLQotUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZShjb25zdCB1
bnNpZ25lZCBpbnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPHVuc2lnbmVkIGludD46OmNyZWF0ZTxVaW50MzJBcnJheT4oYXJyYXksIGxlbmd0
aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGUoUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD46OmNy
ZWF0ZTxVaW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQotCi1QYXNz
UmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD46
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDMyQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVVpbnQzMkFy
cmF5OjpVaW50MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlwZWRBcnJheUJh
c2U8dW5zaWduZWQgaW50PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQotUGFz
c1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29u
c3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1Jl
ZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPFVpbnQzMkFycmF5PihzdGFydCwg
ZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6VWludDMyQXJyYXk7
Ci0KLSNlbmRpZiAvLyBVaW50MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9V
aW50OEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50OEFycmF5LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhjYWYwNTQ3NjY1YjQ4ODg3YTg5ZDNhNGQyZTg3NGVmYmE5M2M4YjUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dU
Ri93dGYvVWludDhBcnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgVWludDhBcnJheV9oCi0jZGVmaW5lIFVpbnQ4QXJyYXlfaAotCi0jaW5jbHVk
ZSA8d3RmL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNs
YXNzIEFycmF5QnVmZmVyOwotCi1jbGFzcyBVaW50OEFycmF5IDogcHVibGljIEludGVncmFsVHlw
ZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2Vk
IHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAg
ICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRo
b3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJy
YXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5
cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBl
ZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6c2V0OwotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8
VWludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0g
ICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBUeXBlVWludDg7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgaW5saW5lIFVpbnQ4QXJyYXko
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAg
ICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj47Ci19OwotCi1QYXNz
UmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17
Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVhdGU8VWludDhB
cnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5Ojpj
cmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAg
ICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZTxVaW50OEFycmF5
PihhcnJheSwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5
OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2ln
bmVkIGNoYXI+OjpjcmVhdGU8VWludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
OwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNp
Z25lZCBjaGFyPjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50OEFycmF5PihsZW5ndGgpOwotfQot
Ci1VaW50OEFycmF5OjpVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotOiBJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlPHVuc2lnbmVkIGNoYXI+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQot
Ci1QYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OEFycmF5PihzdGFydCwg
ZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6VWludDhBcnJheTsK
LQotI2VuZGlmIC8vIFVpbnQ4QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWlu
dDhDbGFtcGVkQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1Y2MyZDgyYjI5MTQyYmQzMTI4MzZhNTA3OTc2
ODUwOGFkYjMwYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dURi93dGYvVWludDhDbGFtcGVkQXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0x
LDEyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFVpbnQ4Q2xhbXBlZEFy
cmF5X2gKLSNkZWZpbmUgVWludDhDbGFtcGVkQXJyYXlfaAotCi0jaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+Ci0KLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBVaW50OENsYW1wZWRBcnJheSA6
IHB1YmxpYyBVaW50OEFycmF5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlKGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBm
aWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEph
dmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOwotCi0gICAgLy8gSXQncyBvbmx5IG5lZWRlZCB0byBwb3RlbnRpYWxseSBjYWxsIHRoaXMg
bWV0aG9kIGlmIHRoZSBhcnJheQotICAgIC8vIHdhcyBjcmVhdGVkIHVuaW5pdGlhbGl6ZWQgLS0g
dGhlIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gcGF0aHMKLSAgICAvLyB6ZXJvIHRoZSBhbGxvY2F0
ZWQgbWVtb3J5LgotICAgIGlubGluZSB2b2lkIHplcm9GaWxsKCk7Ci0KLSAgICB1c2luZyBUeXBl
ZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6c2V0OwotICAgIGlubGluZSB2b2lkIHNldCh1bnNp
Z25lZCBpbmRleCwgZG91YmxlIHZhbHVlKTsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNv
bnN0OwotCi0gICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBUeXBlVWludDhDbGFtcGVkOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbmxp
bmUgVWludDhDbGFtcGVkQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2
aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVu
c2lnbmVkIGNoYXI+OwotfTsKLQotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGxlbmd0
aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsK
LSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZTxVaW50OENs
YW1wZWRBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVhdGU8VWludDhDbGFtcGVkQXJy
YXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6
Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50OENsYW1wZWRBcnJheT4obGVuZ3RoKTsKLX0KLQotdm9p
ZCBVaW50OENsYW1wZWRBcnJheTo6emVyb0ZpbGwoKQotewotICAgIHplcm9SYW5nZSgwLCBsZW5n
dGgoKSk7Ci19Ci0KLXZvaWQgVWludDhDbGFtcGVkQXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwg
ZG91YmxlIHZhbHVlKQotewotICAgIGlmIChpbmRleCA+PSBtX2xlbmd0aCkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSB8fCB2YWx1ZSA8IDApCi0gICAgICAgIHZh
bHVlID0gMDsKLSAgICBlbHNlIGlmICh2YWx1ZSA+IDI1NSkKLSAgICAgICAgdmFsdWUgPSAyNTU7
Ci0gICAgZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGxyaW50KHZh
bHVlKSk7Ci19Ci0KLVVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKLTogVWludDhBcnJheShidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQot
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OnN1YmFycmF5
KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgp
KTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6
OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJy
YXlJbXBsPFVpbnQ4Q2xhbXBlZEFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCi0KLXVzaW5nIFdURjo6VWludDhDbGFtcGVkQXJyYXk7Ci0KLSNlbmRpZiAvLyBVaW50
OENsYW1wZWRBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0FycmF5QnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3ZDk4YzhhZWU4ZTk0Nzcy
NWExZTdmMjQxODUyNzQwMTc5YTdjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMCwwICsxLDQgQEAK
KyNpZm5kZWYgV2ViQ29yZV9GV0RfQXJyYXlCdWZmZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9B
cnJheUJ1ZmZlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGUzOTUyNjY5N2NkMTBkYjNmNDhm
OGI5NmRkMDA0ZDhiM2Y5NDgyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTAsMCArMSw0IEBA
CisjaWZuZGVmIFdlYkNvcmVfRldEX0FycmF5QnVmZmVyVmlld19oCisjZGVmaW5lIFdlYkNvcmVf
RldEX0FycmF5QnVmZmVyVmlld19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZm
ZXJWaWV3Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvRmxvYXQzMkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNDUzZGQyMTYwOGQz
Y2NjOWNlNDhjMTA1MDY0YTc3NmZlYjNkMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJheS5oCkBAIC0wLDAgKzEs
NCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9GbG9hdDMyQXJyYXlfaAorI2RlZmluZSBXZWJDb3Jl
X0ZXRF9GbG9hdDMyQXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJh
eS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0Zsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9GbG9hdDY0QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2UzNWFhZGM4OGFlYmM5NTUw
YWU1ZjU4MWQxYjhkODljODNhNmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDY0QXJyYXkuaApAQCAtMCwwICsxLDQgQEAK
KyNpZm5kZWYgV2ViQ29yZV9GV0RfRmxvYXQ2NEFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
RmxvYXQ2NEFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDY0QXJyYXkuaD4K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9JbnQxNkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0ludDE2QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWQwMDM5OWRhMzU0OTc5M2NkYjljMWI3ZWEy
ZTE0YTQ4N2M4MTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9JbnQxNkFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdl
YkNvcmVfRldEX0ludDE2QXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnQxNkFycmF5X2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnQxNkFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MzJBcnJheS5o
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQzMkFycmF5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2I2NTc0MWQ3NjliY2U2OTA5MWZkZjIwZjE4YWEwYmVkYzZlYTBhMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SW50MzJBcnJheS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnQzMkFy
cmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW50MzJBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW50MzJBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDhBcnJheS5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjZhZDUy
NzQwYjUxZjFmZGZiODhhYWVhYzMxY2NhOTViODkxNDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaApAQCAtMCww
ICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW50OEFycmF5X2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfSW50OEFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnQ4QXJyYXkuaD4K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjc5
YjU2ODRjNjYwNzEzN2NjNThiNzY3YWU2ZmZhMTZiYWY4YTYyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0ludGVncmFsVHlw
ZWRBcnJheUJhc2VfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvVHlwZWRBcnJheUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjQxYTU3YzNhNjU4YmJjNWYwMDJk
ZjAxNjc5NzBlNjJmNWYxNDBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9UeXBlZEFycmF5QmFzZV9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X1R5cGVkQXJyYXlCYXNlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5QmFz
ZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1VpbnQxNkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1VpbnQxNkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NjZWEyYzFiMGMwNzM3ZWM2Yzgw
ZjQzYjZhNWUxYjAzNWQ5NjJlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDE2QXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfVWludDE2QXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9VaW50
MTZBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDE2QXJyYXkuaD4KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9V
aW50MzJBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9V
aW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2MDI2ZjE1YzA2MzYxOGNjNmIyZDQxNjJkOGNiZWM4
YWE3YjBiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL1VpbnQzMkFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNv
cmVfRldEX1VpbnQzMkFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVWludDMyQXJyYXlfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQzMkFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDhBcnJheS5o
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50OEFycmF5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGM4ZGU0ZWE3OGNjYWRlNDkyM2E4Njk2MDFiMTUwZGQ1ODU3ZDc2NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
VWludDhBcnJheS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VaW50OEFy
cmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVWludDhBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVWludDhBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjdkMmUwMWQxYThlNTcwZDhhYTUyOTU4NGUxMWE5ODY1NTNjNjk5NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWlu
dDhDbGFtcGVkQXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVWlu
dDhDbGFtcGVkQXJyYXlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9VaW50OENsYW1wZWRBcnJheV9o
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggM2I3NTNk
YzUzN2E3ODE4NjVlOWI2ZTEzYWZmZDYzZDZkZmVkY2FhYi4uM2M0MGY5Y2Q1YjRiMzdhYTFkYjFm
OGI2MWEzYTBlY2I1NmUwNDEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9V
aW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKaW5kZXggNGE5Yzg0M2E2NTIx
ZjliMWM3ZjJkOWJiYmYyMDM2YzQzZTdhY2E3OS4uMmIzMWI0NzljNzdkNTZmMjY2ODdmOTViMzc1
YTJhODE0M2ViMjk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTMwLDcgKzMw
LDcgQEAKICNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgogCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VF
dmVudC5oCmluZGV4IDY2NmY5YjQ2M2ZjY2ZlNjNmMjU5MjYxZThlNzM0YTAwZGJkZmQwNmIuLjQx
ZGFlZjI1ZTU5MGJkNzJmM2Q3M2MyYzI0M2ZkYjQzYzBmMGI3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwCmluZGV4IDVlMDZm
OGQ1MDYzMTdlYTNmYjlhODM3ODc5ZmY4MDFjOGY5NjdhMjUuLmRiMDYxNzM4YTAxMmIwYjk2NzJk
MjcyZmJhZGQ1M2NjMTc2M2MzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMzAs
NyArMzAsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKIAogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRl
ZEV2ZW50LmgKaW5kZXggNWY2OThhYjkwZDBiYjY5Y2VjM2U2MTFjMWQzMTUxZjAxYTVlNjAxMS4u
MmIxNTU4MGQ2NzYwN2NlYzdiYmE4YjQzMmM0N2Y0M2NhNmM4NTI0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRl
ZEV2ZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDgzZDFmYmVlYWMzNzY2NGVk
MGZkNGYyZWM1MDljZDYzMmY5ZmJkODYuLjA3NjY4NDQ3OTNmOGFhMDg1NjhjNTU2MzNmZWYwYWI2
MDA5ZWYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggNGZmM2UwNjllYTEyOTU1
MjQ4YjA3MWFkYzEzMzM3Njg0YTJhNDg2Ni4uZjE2MmY5NjFiZjBkNWMxYTVkOTEyYTkxZDQ5MTEw
ZWM2YzUxZWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5oCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJDRE0uaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BbmFseXNlck5vZGUuaAppbmRleCA5ZjJmMGI4NzMyMDkyMzc2ZWRkNzlkYzdjMWFl
YTVlYTk3Y2Q4MzQ0Li5jM2FhNWM3NzgyYzA3N2M0ZDE0YmMwMGMxNWE3YjUwMWRjMzIwZGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKQEAg
LTU5LDkgKzU5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50
KGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBmbG9hdCBzbW9vdGhpbmdUaW1lQ29uc3Rh
bnQoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCgpOyB9
CiAKLSAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShGbG9hdDMyQXJyYXkqIGFycmF5KSB7
IG1fYW5hbHlzZXIuZ2V0RmxvYXRGcmVxdWVuY3lEYXRhKGFycmF5KTsgfQotICAgIHZvaWQgZ2V0
Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRl
RnJlcXVlbmN5RGF0YShhcnJheSk7IH0KLSAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0YShV
aW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YShhcnJh
eSk7IH0KKyAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShKU0M6OkZsb2F0MzJBcnJheSog
YXJyYXkpIHsgbV9hbmFseXNlci5nZXRGbG9hdEZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9CisgICAg
dm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShKU0M6OlVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5h
bHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9CisgICAgdm9pZCBnZXRCeXRlVGlt
ZURvbWFpbkRhdGEoSlNDOjpVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVU
aW1lRG9tYWluRGF0YShhcnJheSk7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJsZSB0
YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggZjAw
YmQxYWRjZjIxMDRjZmQyZTk3ZmEzNTAxYjYwM2RjN2RhMjg4YS4uMDkzODNlZjVmNDc5ZjM1NDA3
ZmYxMTMwMDgwZDNlMTYyNDZiYmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9CdWZmZXJDYWxsYmFjay5o
IgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlC
dWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4IGNlZDgwNThjMGY2
MDE0M2QzMzM1MWQ0ZWNhNTY1YWJkOGQ3ODQ4YTcuLjljZmE4OGU1ZWMwY2IzZTZmNzA2YmRhMjY0
ZjBlOTI3NWQzMmZiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorbmFtZXNwYWNlIEpTQyB7
CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
dWRpb0J1ZmZlcjsKQEAgLTQ3LDIwICs1MSwyMCBAQCBwdWJsaWM6CiAgICAgfkFzeW5jQXVkaW9E
ZWNvZGVyKCk7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0g
ICAgdm9pZCBkZWNvZGVBc3luYyhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVS
YXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIGRl
Y29kZUFzeW5jKEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwg
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAKIHByaXZhdGU6CiAgICAg
Y2xhc3MgRGVjb2RpbmdUYXNrIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVjb2Rp
bmdUYXNrKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPERlY29kaW5n
VGFzaz4gY3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBh
c3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOworICAgICAgICBzdGF0aWMgUGFz
c093blB0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0ZShKU0M6OkFycmF5QnVmZmVyKiBhdWRpb0RhdGEs
IGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
OwogCiAgICAgICAgIHZvaWQgZGVjb2RlKCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIERlY29kaW5nVGFzayhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRl
LCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgRGVjb2Rp
bmdUYXNrKEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFz
c1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAKLSAgICAgICAgQXJyYXlCdWZm
ZXIqIGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhLmdldCgpOyB9CisgICAgICAgIEpT
Qzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhLmdldCgpOyB9
CiAgICAgICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7
IH0KICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFjayogc3VjY2Vzc0NhbGxiYWNrKCkgeyByZXR1
cm4gbV9zdWNjZXNzQ2FsbGJhY2suZ2V0KCk7IH0KICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFj
ayogZXJyb3JDYWxsYmFjaygpIHsgcmV0dXJuIG1fZXJyb3JDYWxsYmFjay5nZXQoKTsgfQpAQCAt
NjksNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdm9pZCBub3RpZnlDb21wbGV0
ZURpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKTsKICAgICAgICAgdm9pZCBub3RpZnlDb21wbGV0ZSgp
OwogCi0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hdWRpb0RhdGE7CisgICAgICAgIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX2F1ZGlvRGF0YTsKICAgICAgICAgZmxvYXQgbV9zYW1w
bGVSYXRlOwogICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gbV9zdWNjZXNzQ2Fs
bGJhY2s7CiAgICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJh
Y2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmgKaW5k
ZXggODI3ZGY5ZWJiODRlNmUwYTI3YmRlMmNkODAxNTAzMTZlYjA2N2RhZi4uMWNhNjc2NmJjOTll
MmEyYWYzOTk4ZTJmZGU5ODdhMDk0YjFlZTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBBdWRp
b0J1ZmZlcl9oCiAjZGVmaW5lIEF1ZGlvQnVmZmVyX2gKIAotI2luY2x1ZGUgPHd0Zi9GbG9hdDMy
QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKaW5kZXggMmI0ZDE3OTg4YTJhZjE2MjIxNDc0NDg1NTY5Y2ZhYjllZmZmMzUy
NS4uOGEwZThkNWIyYjYxNTBlZGNkMjRjNGRmY2MwNWIzZmZmYzliN2VlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNzksNyAr
NzksNyBAQAogI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2VuZGlmCiAKLSNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtLmgKaW5kZXggNTI0Zjk4ZjA3ZjhjMmFhZTYzOTAzMTk2Yzc0MWZjMmI5NGM0
ODk5MS4uMWU0MDdiYTBiYTQ4NTEzZWE4NjQ1M2E3MTIzYzY0N2JmNTQwMTY2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKQEAgLTMyLDggKzMyLDgg
QEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtVGltZWxp
bmUuaCIKICNpbmNsdWRlICJBdWRpb1N1bW1pbmdKdW5jdGlvbi5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8d3Rm
L0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5o
CmluZGV4IGMwYTk2MDg3MDQ5MTMwOGU3MTA0NDA5ZGFkNzk0ODYwMzVkYzFiMTEuLmUwZTVhNWRj
Y2I1MDJiYjM3M2VkYmQwNzIwMWI1NGRlZmJhNDZjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaApAQCAtMzAsNyArMzAs
NyBAQAogI2RlZmluZSBBdWRpb1BhcmFtVGltZWxpbmVfaAogCiAjaW5jbHVkZSAiQXVkaW9Db250
ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
RmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oCmluZGV4IDNiNmRlNjhmZTBl
MGZiMzI5MDZiMGY3Mjg0MjZhYjk4MWIwNzkwZjYuLjEyNDNkOTA4MGQyZGNlZTY2YzA2M2JkODcx
Nzg5NmM0MmExYmRmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGVyaW9kaWNXYXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Q
ZXJpb2RpY1dhdmUuaApAQCAtMzAsNyArMzAsNyBAQAogI2RlZmluZSBQZXJpb2RpY1dhdmVfaAog
CiAjaW5jbHVkZSAiQXVkaW9BcnJheS5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFu
YWx5c2VyLmNwcAppbmRleCA2ODE2M2NlNTU3YTFmZTE4MDE5MTJlYTI5ZmRhN2VkMGM1ODIyOTc2
Li42NGEzY2YzYjk0OTczMTAzY2UwOGJhMGI5MWRhMjdiMmI2MWRmMWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAg
LTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8Y29tcGxleD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+
CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1Vp
bnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Jl
YWx0aW1lQW5hbHlzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlci5oCmluZGV4IDAyZWEwNWY1ZWVlYTVjZmFlZjIwNjUzMzUwZGY0MjNmMzlhOWMw
MGIuLjFmYmI2OGE1NjY3ZDcxYWVjZDM5Zjk1MzU5MTk3MDlhM2ZiMWEzOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oCkBAIC0z
MCw2ICszMCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGbG9hdDMyQXJyYXk7CitjbGFz
cyBVaW50OEFycmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVz
OwpAQCAtNTcsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTbW9vdGhpbmdUaW1lQ29u
c3RhbnQoZmxvYXQgaykgeyBtX3Ntb290aGluZ1RpbWVDb25zdGFudCA9IGs7IH0KICAgICBmbG9h
dCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4obV9zbW9vdGhpbmdUaW1lQ29uc3RhbnQpOyB9CiAKLSAgICB2b2lkIGdldEZsb2F0RnJlcXVl
bmN5RGF0YShGbG9hdDMyQXJyYXkqKTsKLSAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRhKFVp
bnQ4QXJyYXkqKTsKLSAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5Kik7
CisgICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoSlNDOjpGbG9hdDMyQXJyYXkqKTsKKyAg
ICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRhKEpTQzo6VWludDhBcnJheSopOworICAgIHZvaWQg
Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKEpTQzo6VWludDhBcnJheSopOwogCiAgICAgLy8gVGhlIGF1
ZGlvIHRocmVhZCB3cml0ZXMgaW5wdXQgZGF0YSBoZXJlLgogICAgIHZvaWQgd3JpdGVJbnB1dChB
dWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggNGUz
NmU4Nzk3YTZlZGQ5MmY3MTE5MWMwMzkwNDBhOWUxZTgzYzg5Ni4uYWIxZDJlZTBmYjI4NDVmOTZi
MWE5ZGY5NTE0ZDUwYzNhMjM0MDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9Qcm9jZXNzaW5n
RXZlbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJy
YXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKaW5kZXggNTU5N2E5
NGMxZTcyNzQzYWRmN2Y4NGFiZjI4ZjI3NGRjZjM5MDk3Ny4uNjM1YWM3NWQ5NGIyM2QzMWY4YTlk
NjljYTk3NTQ3ZGIxYTkzMmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNs
dWRlICJBdWRpb0RTUEtlcm5lbC5oIgogI2luY2x1ZGUgIkF1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaAppbmRleCAxOGQ5OWE5ZjBhYWYwMmQ1ZTk0ZjVkNWU4ZWE0ZTgzZjUzMjg0YmFhLi5mZjcy
ODNkODU3ZjhlMmNkZTM4Y2YwMjMzNTg0OWJiN2JlNDFlZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaApAQCAtMzcsNiArMzcsMTEgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNz
IEFycmF5QnVmZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC02MCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIg
ZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0
ZW5zaW9ucygpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNh
bGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJy
YXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSA9IDA7
CisgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFs
IFNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQg
bG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGI0YjQ5YzEwZTk0OTRkZDUy
NmRhYjgxYTU5ZjA3ZDlhOTkxYWVlNWUuLjVmYTNkOWY2YTBkMWM4ZGYxODFmMGQyNDI5MGQ1ODEy
M2YyOTM0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCkBAIC01NCw4ICs1NCw4IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWwuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3
dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRl
eCBlNjQ3OTAzMTU1NjcwZWM5YzkwN2E1YTlhMjQxMzE1ZDdjZWY2YTgzLi45YTU4MjM3MGZmZDg2
NDBjNDAxZjJkMzdlMWI5Y2Q5YWJkZjNiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90
b2NvbHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXIqLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZW5kKEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBzZW5kKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIGNsb3NlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDViZTk5YTkxMmU1OTdlYjg4ZTU5OTViM2VhOTc2Y2ExOTdkMDkxYTAuLjM0ZjRhYmU2
MjBmOGUyZWEzZmMwZDAxMGIwMTA5YmJkYWFiMTU2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKaW5kZXggMTcwYWIxODNhZDQ4M2U5OTQzNDkxOWZlMjlkZWExMDNhNjYwODU5Mi4uZjE0OGNk
OTFiMDgxMDA4ZjhiYWY1MDA1ZmUwOWE0OTc0ODM3MTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZl
ciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChj
b25zdCBCbG9iJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVk
QW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNo
YWtlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNTY3
Yjk3OTUyMjUyZjQzZmQ3YzUxOWRhM2Y0N2MyMzI0YTI2NjYzNS4uNzhiNWIxMDNhMjQyNWU5ZjY1
MjVhN2MxMTg2NjU1Y2Y0ZTZhOWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJv
eHkuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJh
eUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMjQyMTM0MzVkMTNkNmI1NTBmYTY0ZGZi
MjJjNzhmZTZiNjQ2MzAzMy4uNDE5YWM0MmQ2YmMzOWQ4NmZiNmNjMmZiNzc5ZmMxYzY5ZWYyZGJh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVy
JiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNv
bnN0IEJsb2ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRB
bW91bnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUs
IGNvbnN0IFN0cmluZyYgcmVhc29uKSBPVkVSUklERTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAg
ICB2b2lkIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKKyAgICAgICAgdm9pZCBzZW5kKGNvbnN0
IEpTQzo6QXJyYXlCdWZmZXImKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEJsb2ImKTsKICAg
ICAgICAgdm9pZCBidWZmZXJlZEFtb3VudCgpOwogICAgICAgICB2b2lkIGNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1
ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgICAg
ICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6
QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsK
ICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25z
dCBCbG9iJik7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKTsKICAgICAg
ICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCA0ZjJjNzA3MzE5MmZhYzQxZGMzNTVjMmY5MzlhMDc2Yzg3NjVjOTNhLi5i
MWZmMjE2OTdkNjVmYTdkN2Q3NjE1MWQyMjQ5M2U4ZDRiZWRlYjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtNzIwLDcgKzcyMCw3IEBAIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1
bGVyRDJFdgogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRlc2VyaWFsaXpl
RVBLMTVPcGFxdWVKU0NvbnRleHRQUEsxM09wYXF1ZUpTVmFsdWUKIF9fWk43V2ViQ29yZTIxU2Vy
aWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQTjNKU0M5RXhlY1N0YXRlRVBOUzFfMTRK
U0dsb2JhbE9iamVjdEVQTjNXVEY2VmVjdG9ySU5TNl82UmVmUHRySU5TXzExTWVzc2FnZVBvcnRF
RUVMbTFFTlM2XzE1Q3Jhc2hPbk92ZXJmbG93RUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
RQogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBLMTVPcGFxdWVK
U0NvbnRleHRQSzEzT3BhcXVlSlNWYWx1ZVBTNl8KLV9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNj
cmlwdFZhbHVlNmNyZWF0ZUVQTjNKU0M5RXhlY1N0YXRlRU5TMV83SlNWYWx1ZUVQTjNXVEY2VmVj
dG9ySU5TNV82UmVmUHRySU5TXzExTWVzc2FnZVBvcnRFRUVMbTFFTlM1XzE1Q3Jhc2hPbk92ZXJm
bG93RUVFUE5TNl9JTlM3X0lOUzVfMTFBcnJheUJ1ZmZlckVFRUxtMUVTQV9FRU5TXzIyU2VyaWFs
aXphdGlvbkVycm9yTW9kZUUKK19fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNy
ZWF0ZUVQTjNKU0M5RXhlY1N0YXRlRU5TMV83SlNWYWx1ZUVQTjNXVEY2VmVjdG9ySU5TNV82UmVm
UHRySU5TXzExTWVzc2FnZVBvcnRFRUVMbTFFTlM1XzE1Q3Jhc2hPbk92ZXJmbG93RUVFUE5TNl9J
TlM3X0lOUzFfMTFBcnJheUJ1ZmZlckVFRUxtMUVTQV9FRU5TXzIyU2VyaWFsaXphdGlvbkVycm9y
TW9kZUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVSS04zV1RG
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RGNlZl
Y3RvckloTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMjFTZXJpYWxp
emVkU2NyaXB0VmFsdWVEMUV2CkBAIC05MDcsNyArOTA3LDcgQEAgX19aTjdXZWJDb3JlNFBhdGhD
MUV2CiBfX1pON1dlYkNvcmU0UGF0aEQxRXYKIF9fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJMUHJv
dGVjdGlvblNwYWNlCiBfX1pON1dlYkNvcmU0Y29yZUVQMjhOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlCi1fX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBOM1dURjExQXJyYXlCdWZmZXJFCitfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5
RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOUzBfMTFBcnJheUJ1ZmZlckUKIF9f
Wk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RF
UE5TXzEwQ2xpZW50UmVjdEUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5T
XzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEzRE9NU3RyaW5nTGlzdEUKIF9fWk43V2ViQ29yZTR0
b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzE0Q2xpZW50
UmVjdExpc3RFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5
QnVmZmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZm
ZXJDdXN0b20uY3BwCmluZGV4IDJmYTMwNmE5ZDM4YzJjMzliMzcyZTU5NGE2ZjgyODI5YTQ2MzU4
OWUuLmRmZDUyYWI3OGZjYzY3ZTdkMmI0NjNhMDVmNjViNmY0MDdmNjBhMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCkBAIC0y
Nyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRl
IDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKaW5kZXggOWFmM2Y4YWRkN2Q2OTU3YjVlZDBiOTUwNjU3
NWEzYTRhYTliNzUyNi4uODdiNmU0YzkxN2RjNDU0ODc5OTgyZTI3ODg4OWNjYTA3MWVmYTBjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdI
ZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmll
d0hlbHBlci5oCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
ICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0Fy
Z0xpc3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+
Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUgPHd0Zi9UeXBlZEFy
cmF5QmFzZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUJhc2UuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1
ZGlvQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggZDczMDM2ZmY5MWIxMGVlNjZlNzAzZDdhYzNmNjUw
OTU0NzMyYzZlZC4uYWI2ODUyNmVjNjI1NGQyNmUxYzJmZGIzM2YwZjEyZGJmOWJjNzE2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9t
LmNwcApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIkpTQXVkaW9Db250ZXh0LmgiCiAjaW5j
bHVkZSAiSlNPZmZsaW5lQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29u
dGV4dC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50
aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9t
LmNwcAppbmRleCBhOTYzYTc0Njg3NjU0YTJlYzgwMDhkNGZjMzcyMjE4MzFhOWI1YmE1Li5kOWU5
Mjk4MWE2YTM5MWM2OTk4NDM1ZTY2Njg0OWExZWRiMGJlMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAK
KyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5k
ZXggMWY4Njg0ZmYwYzEzNzUxY2IxYjdmZjAyOGVhODA0OWVmNjA4NGYwNi4uMDUxOWZlMjY1ZGZl
MDk0NDUyY2Q2YTIzYTkxZmEyMjM0MTBhY2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVy
dFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBBcnJheVZhbHVlJiByZXN1bHQp
OwotICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiByZXN1bHQpOworICAgIHN0YXRpYyB2b2lkIGNvbnZl
cnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPEpTQzo6VWludDhB
cnJheT4mIHJlc3VsdCk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGF0aWMg
dm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxN
ZWRpYUtleUVycm9yPiYgcmVzdWx0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRleCAxMDg1NWVlYWU4NTYyM2Ux
MWFiYTk2ZDc5Yjc4N2ZmZDU3YTNhZTU4Li5kNjczZTAxNTJhZmIxMzExOGI2Njk3MjE0ZTVjMzNi
NGU4NjBhYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmNwcApAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKwogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKIAogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0SGVhZGVycy5oIgpAQCAtMzEsNiArMzIsNyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hl
bGwuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKIAorCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcAppbmRleCA4YjQ5M2NhMTc2OWYyZWQ5OTdhOWU1
MDU1N2YwYzU0ZDU0MDMyYzM3Li5lODUxMjE5YWZhNzQ4OGIzMzU5MWY0NmNiYTY0ZDgwM2E1MDkx
Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1
c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZpbGVSZWFkZXIuaCIKICNp
bmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggNWVkNTNlN2I1M2QyOTMwNGRiMzNhZWRjMjc5
MjEwZTIwMTEzZTEwYy4uMjJiZjFhYWM3YzEyMDY5NDJmNTdlZjJhZTJlZGVmYjZkNDVhZDJlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtODUsMTEgKzg1LDExIEBACiAjaW5jbHVkZSAi
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zs
b2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMyQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4K
LSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5o
PgogCiAjaWYgRU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAKaW5kZXggMmI3OTljNTBlZWJjMGIxYzQ5MzI0ZDU2ZWMxOWFhOWFlZmQwMGU2Yi4uOGRk
OGJmNTU5MjJmNjU0NDc1OTQ1YjA0YWMxNDJjODU5NDJhNmFkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTQ4
LDggKzQ4LDggQEAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdC5oIgogI2luY2x1ZGUgPGludGVycHJldGVyL1N0YWNrSXRlcmF0b3IuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCAxMjZhMDRiZmJhMTE5NDQ1ODQxNTg3OTg1YTM1ODUyZjRhNzBlOThlLi4z
ODJjYjI3ZWIzZWQ0YjJiMDUzZDJlNWE2ODcxY2Q1NzE0YWMwZDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTU4
LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSVNoaW1zLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQm9vbGVhbk9iamVj
dC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgpAQCAtNjcsOSArNjgsOCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL1JlZ0V4cC5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvUmVnRXhwT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtOTc4LDcgKzk3OCw3IEBAIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4p
CiAgICAgcmV0dXJuIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKIH0KIAotdHlwZWRlZiBWZWN0b3I8
V1RGOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7Cit0eXBl
ZGVmIFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVmZmVyQ29udGVudHNB
cnJheTsKIAogY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogcHVibGljOgpA
QCAtMTc3Nyw3ICsxNzc3LDcgQEAgUGFzc093blB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFy
cmF5QnVmZmVyQ29udGVudHNBcnJheT4gU2VyaWFsaXplZFNjcmlwdFZhbHUKICAgICBWZWN0b3I8
UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gPiB3b3JsZHM7CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29y
ZUpTQ2xpZW50RGF0YSo+KGV4ZWMtPnZtKCkuY2xpZW50RGF0YSktPmdldEFsbFdvcmxkcyh3b3Js
ZHMpOwogCi0gICAgSGFzaFNldDxXVEY6OkFycmF5QnVmZmVyKj4gdmlzaXRlZDsKKyAgICBIYXNo
U2V0PEpTQzo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFycmF5QnVm
ZmVySW5kZXggPSAwOyBhcnJheUJ1ZmZlckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgYXJy
YXlCdWZmZXJJbmRleCsrKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiA+IG5ldXRlcmVkVmlld3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggZDNjZDg4MDhkODQ2YjNlNzdjODAwMzUwNjZk
ZTVmNTRjN2EwNzdjOS4uNjExMTJlN2M2ODUwMDllNjc0ZjYzNzA0Mzc4MjRiNmIzMmE0NDczNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5j
bHVkZSA8aGVhcC9TdHJvbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVBvcnQ7CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+LCAxPiBNZXNzYWdlUG9ydEFycmF5OwotdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PFdURjo6QXJyYXlCdWZmZXI+LCAxPiBBcnJheUJ1ZmZlckFycmF5OwordHlwZWRlZiBWZWN0b3I8
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+LCAxPiBBcnJheUJ1ZmZlckFycmF5OwogIAogZW51bSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLApAQCAt
MTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAK
IHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CisgICAgdHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgc3RhdGljIHZvaWQg
bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0M6OkV4ZWNTdGF0ZSos
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemF0aW9u
RGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gdHJhbnNmZXJBcnJheUJ1
ZmZlcnMoSlNDOjpFeGVjU3RhdGUqLCBBcnJheUJ1ZmZlckFycmF5JiwgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggMGYyOGY2ZWU1MjkyYjQyMmU0MGM1ZGY2MWZhYTNiY2Y2MWUw
ZDU3Mi4uNmQ1ODkyZDc5NTY3ZjM5ZmI4OTYzOTA1OGUyNmZhZTAyOGZjZDcyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTIyNiw3ICsyMjYsNyBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgfSBlbHNpZiAoJGlz
Q2FsbGJhY2sgJiYgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpKSB7CiAgICAg
ICAgICRpbmNsdWRlc1JlZi0+eyJKUyR7dHlwZX0uaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgJGluY2x1ZGVz
UmVmLT57Ijx3dGYvJHt0eXBlfS5oPiJ9ID0gMTsKKyAgICAgICAgJGluY2x1ZGVzUmVmLT57Ijxy
dW50aW1lLyR7dHlwZX0uaD4ifSA9IDE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBkZWZhdWx0
LCBpbmNsdWRlIHRoZSBzYW1lIG5hbWVkIGZpbGUKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IiR7
dHlwZX0uaCJ9ID0gMTsKQEAgLTY4Myw3ICs2ODMsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAog
ICAgIGlmICgkaGFzUGFyZW50ICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0dlbmVyYXRlVG9OYXRpdmVPYmplY3QifSkgewogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PklzVHlwZWRBcnJheVR5cGUoJGludGVyZmFjZU5hbWUpKSB7Ci0gICAgICAgICAgICAkaGVhZGVy
SW5jbHVkZXN7Ijx3dGYvJGludGVyZmFjZU5hbWUuaD4ifSA9IDE7CisgICAgICAgICAgICAkaGVh
ZGVySW5jbHVkZXN7IjxydW50aW1lLyRpbnRlcmZhY2VOYW1lLmg+In0gPSAxOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyIkaW50ZXJmYWNlTmFtZS5oIn0g
PSAxOwogICAgICAgICB9CkBAIC0zNjEyLDcgKzM2MTIsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVl
CiAgICAgICAgICMgRGVmYXVsdCwgaW5jbHVkZSBoZWFkZXIgd2l0aCBzYW1lIG5hbWUuCiAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR0eXBlLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSB7Ci0gICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi8kdHlwZS5oPiIsICRjb25kaXRpb25hbCkgaWYg
bm90ICRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSk7CisgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiPHJ1bnRpbWUvJHR5cGUuaD4iLCAkY29uZGl0aW9uYWwpIGlm
IG5vdCAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR0eXBlLmgiLCAkY29uZGl0
aW9uYWwpIGlmIG5vdCAkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVIZWFkZXIoJHR5cGUpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjU5OGVmYjdmYjYwZTNk
MDYzN2UyZDEyNzM2YmI5YWJhMjExMGYxMi4uZjA0ZmJiMmQzMzg4ODA4NmI1ZGZkODgyNGM0ZTBm
YWVmMmE5YWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzQsNyArMzQsNyBA
QAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZm
ZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggYmY4YzMzZDk2
ZDM4NmE5MTU5OWUzNjBkMWEwYTA3Y2I1MDY2NzE3Zi4uZjY5Njc3NWIzYjhkNWRjMDI2ZDNmMTIw
NTBkNmIzOWE3Mjk5MDhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBA
IC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlByb2dyZXNz
RXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAppbmRleCA3ZjIxMzNkZTA4YTFlMTQ3MWNi
YTljM2RmZTBlNzk5NDA0MDNlM2ExLi5jMjBmOTdhOWZiZjNkZjkzYTI1NGM1M2IwYzNlYTU5MDMx
Y2JjOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaApAQCAtNDIsNiArNDIsMTAg
QEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC03Myw3ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAg
ICAgUGFzc1JlZlB0cjxGaWxlRXJyb3I+IGVycm9yKCkgeyByZXR1cm4gbV9lcnJvcjsgfQogICAg
IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWFkVHlwZTsgfQotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyUmVzdWx0
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJl
c3VsdCgpIGNvbnN0OwogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRl
eCA3N2MwNWZlODEzYjc4NzA0ZGE0M2Y5M2NhMmE5NTAyZTQyYTM1NWQ0Li4yNDQ3YzMwZWE1MTRh
ZmM4YWYyMjViNGVhNmVmMDRjMjJkYTU3Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCBlYzFiZGZkYjJk
NTEyOTU3YTM4M2JlNjVhZGYxYTVmZmE5ODY5ZDc4Li4yNGYxZTdmMWJkYTg2YTM0Nzc3MThmMTcx
YWYwNzJjYmVjOWY5NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5
QnVmZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC03Miw3
ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAKICAgICBTdHJpbmcgc3RyaW5nUmVzdWx0KCk7Ci0gICAgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXJSZXN1bHQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNU
UkVBTSkKICAgICBQYXNzUmVmUHRyPEJsb2I+IGJsb2JSZXN1bHQoKTsKICNlbmRpZiAvLyBFTkFC
TEUoU1RSRUFNKQpAQCAtMTA1LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgS1VSTCBtX3VybEZv
clJlYWRpbmc7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCi0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBtX3Jhd0RhdGE7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+IG1fcmF3RGF0YTsKICAgICBib29sIG1faXNSYXdEYXRhQ29udmVydGVkOwogCiAgICAgU3Ry
aW5nIG1fc3RyaW5nUmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5j
LmNwcAppbmRleCA3OWU1MjAwZWE3YWZiZGNjZTk3MjJhOGYxZmYyNjUxYzA4YjRiNTc0Li4yZDUz
YWZkMWI5ZTcyMThiNTJkMzM1MjgwOTYwMTYyZGI2NDNiMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkJs
b2JVUkwuaCIKICNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRl
ckxvYWRlci5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJTeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgKaW5kZXgg
OWZlNWMzMDAzYjVkZTc4YjMzMTJjOGIwM2ZjOGU3NzJjOTRjNDlkZC4uNTAxNDBlZmNkZDYwZDY1
OTg1NDNmZmM3ZWNiYjNiZDc4MDZhMDE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlclN5bmMuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIEFycmF5QnVmZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7
CkBAIC01NCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZpbGVSZWFkZXJTeW5j
KCkgeyB9CiAKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNz
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHJlYWRBc0FycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyByZWFkQXNCaW5h
cnlTdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgU3RyaW5nIHJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAppbmRleCAxNjIyZTJm
ZTQyYjBiOTNhYjkwZDgzZjFkZjFhNDc0MWZlNDNjMWJmLi40YjNhMmVhN2FhZjE2Mjk3YjU1OTlk
YjhmZjA3NjZiM2NiOTliNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dl
YktpdEJsb2JCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJs
b2JCdWlsZGVyLmNwcApAQCAtNDAsOCArNDAsOCBAQAogI2luY2x1ZGUgIkxpbmVFbmRpbmcuaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIK
LSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJW
aWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmgKaW5kZXggMzM1YmM3NjZk
ZWE1ZDYyYjllNzA0Njc1YjFmYThkMDBmNTcyZTQ3Yy4uYmNjYzI3ODAyMDEyZGUzMDkyYzk1MTVj
MmZhZWZlZWRmOWM0ZGJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJL
aXRCbG9iQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1
aWxkZXIuaApAQCAtMzQsNiArMzQsMTEgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7
CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
RklYTUU6IE1vdmUgdGhpcyBmaWxlIHRvIEJsb2JCdWlsZGVyLmgKQEAgLTUwLDggKzU1LDggQEAg
cHVibGljOgogICAgIHZvaWQgYXBwZW5kKEJsb2IqKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nKTsKICNpZiBFTkFCTEUoQkxPQikKLSAg
ICB2b2lkIGFwcGVuZChBcnJheUJ1ZmZlciopOwotICAgIHZvaWQgYXBwZW5kKEFycmF5QnVmZmVy
VmlldyopOworICAgIHZvaWQgYXBwZW5kKEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFw
cGVuZChKU0M6OkFycmF5QnVmZmVyVmlldyopOwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPEJs
b2I+IGdldEJsb2IoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAzYTlhNmQ5MzJjNmY2MDI3YjNiYjI0YjQwNWVk
ODRiNWZlZGFhYWY2Li45NjMyNDkzYmI1M2QxZWI3NjNhMmViY2FmNmNlMTEwZjQ4Mzc1YTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTgwLDEwICs4MCwx
MCBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAj
aW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL05vbkNvcHlpbmdTb3J0Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDBjN2Ix
NGM1NDJlMDY3MDBmNzM2MWQwYTNhNDg3NjBlZmQyZDBhZTcuLmUzMzlmYTQ2YTVlMzdmZmI2YTI3
N2U4ZmFjNDQ3YTk4OWYwMjAwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgogI2VuZGlmCiAK
KyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCA3NjE2
ODcwNjNhNTVlNTQ1ZmJjZGRjNjhmYjA4OTJmNDllNDljYTlhLi44MGIzZWIwY2RmYjZmODkwYWMy
MDNkNDM2ZmI1NjhhZmE2MDI1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTMwLDkg
KzMwLDkgQEAKICNkZWZpbmUgSW1hZ2VEYXRhX2gKIAogI2luY2x1ZGUgIkludFNpemUuaCIKKyNp
bmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xh
bXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFLZXlFdmVudC5jcHAKaW5kZXggMmY2MmRiYzQ5MDllYjIzZTMxYzljNzU3N2Y4YzI0M2UyMjIy
YjdjNy4uMDNiMjUxMmRlOTkxOTA3ODlhYjEwNzU3ZmYyYTgwMzA2MjY0ZGI2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhS2V5RXZlbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAi
TWVkaWFLZXlFdmVudC5oIgogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgPHd0
Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtl
eUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaAppbmRleCAzYjBk
NjYzZTJjODQ4MzJlZTYyZDIwZTVhY2E3MzE3NTVhMGY0YzhiLi43N2NiYWM3NjI0MTE0NTgyNDY5
Nzc2ZmUyYTJiNDg1OTEwMzI0ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhS2V5RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaApA
QCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlF
cnJvci5oIgogCisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IE1lZGlhS2V5RXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwKaW5kZXggMGY3MGFm
NjRkYTE3Y2YzMGQwMGY0ZGJhYWQ1ZjA5YjY5NWZmNjZmNC4uODM2MzEzN2E4YTYxZDY2MWZhOTlm
NDQ5YWUxMGJlMDc4YWI2MTVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5
QnVmZmVyLmlkbApAQCAtMjgsNyArMjgsNyBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bCwKICAgICBDdXN0b21Db25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIGxlbmd0aCksCiAgICAgSlNO
b1N0YXRpY1RhYmxlcywKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYsCisgICAgSW1w
bGVtZW50YXRpb25OYW1lc3BhY2U9SlNDLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUK
IF0gaW50ZXJmYWNlIEFycmF5QnVmZmVyIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBieXRlTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXJWaWV3LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5
QnVmZmVyVmlldy5pZGwKaW5kZXggM2Q2ZmFlMmE0MGU4YjUzOTlkYTFlNTdhOGE0NDYzNWEzMDI2
ZTQ0Yy4uZmM2MWE1ZTgyN2YwODZiZGUyZDNlOWNlZTJmNTNhMDM5MGYxN2ZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRsCkBAIC0yNiw3ICsy
Niw3IEBACiBbCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBKU05vU3RhdGljVGFibGVzLAot
ICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNw
YWNlPUpTQwogXSBpbnRlcmZhY2UgQXJyYXlCdWZmZXJWaWV3IHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXJyYXlCdWZmZXIgYnVmZmVyOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGJ5dGVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBjYWFlMGJhMjU2OGU1MGUzZjZi
MDZkZGIxY2Q1ZjlkNjJlMjlkZmQzLi44NTFjMDM0Y2Q3MTA4MGFhNGNiNDVjYzQzZTQ1YzFkNWRk
MjQxNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTYyLDEwICs2MiwxMSBAQAogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJy
YXkuaD4KKwogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9V
aW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Rh
dGFWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oCmluZGV4IDAw
ZDU2ZDhmMTg3ZjlmOTZlN2ZkMGI3NDU4YjdkMjQ4NDBiZDUwNDIuLjAwZGQ2ZTRjYTA4OGQxZTg5
NzVjNzY5ZWZjZGE4NzEyYTFjMDQyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZp
ZXcuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBEYXRhVmlld19oCiAjZGVmaW5lIERhdGFW
aWV3X2gKIAotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0Zsb2F0MzJBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJy
YXkuaWRsCmluZGV4IGFjMjU4ZDU1NTYxYzVjNTljMGZkZjNlNjQzNjE5YWIzNzUyZDYxYWUuLjgz
M2QwMTExYWFlYTk4NzI1YTYzMGU5OGVhMGIwYzQ0OTY1Y2Q4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1
c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5
PWZsb2F0LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0
aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgRmxvYXQzMkFycmF5IDogQXJyYXlCdWZmZXJW
aWV3IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gNDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwKaW5kZXggZGVlNDRm
NmM0MGFhNTAyZGE3MWY3OTEyMDhkNjJiZGJiNWJlNTRhZi4uYzk4YzAzMmNjMGJmZmNjOGU1Nzgx
MjM0ODdhMjEzZjYyNjMwYmExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRmxvYXQ2NEFycmF5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9h
dDY0QXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAg
ICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9ZG91YmxlLAotICAgIEltcGxl
bWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwog
XSBpbnRlcmZhY2UgRmxvYXQ2NEFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1
bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gODsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9JbnQxNkFycmF5LmlkbAppbmRleCAwNTc2NDYwZGI2MDJkYmY0NjhiMWZjNGI5ZTZk
MjdhOTI2ZTkyMWI0Li40MzNmMzZmNzI5ZGE2MmM1M2VjNjc3ZWRmOTdlODcyODk3MzM2MzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbApAQCAtMzIsNyArMzIs
NyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAg
ICBUeXBlZEFycmF5PXNob3J0LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAg
IEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgSW50MTZBcnJheSA6IEFy
cmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVO
VCA9IDI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJy
YXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwKaW5kZXgg
ZDg2N2U2NWRkMjlkMDBkNDFlNGJhN2FiOTZmZDRkMzFhNzJlN2YwYy4uNTNhNzBiNzI2MWRkNTFm
NTU2ZjA1YmNmZDYxNmUzZGM3YTM5MWM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvSW50MzJBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
SW50MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAog
ICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1pbnQsCi0gICAgSW1wbGVt
ZW50YXRpb25OYW1lc3BhY2U9V1RGCisgICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBd
IGludGVyZmFjZSBJbnQzMkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNp
Z25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gNDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0ludDhBcnJheS5pZGwKaW5kZXggNmNiMjBhMTQ2ZTM2OTI0MDExZDlkODc0YWNmYzdhNTA2
ZTM5YzNiNi4uNWRiMDJhZDMyOTg5MDRhMDc1Njg0ZmQzMjEzOGVhZWI0OTFmZTNlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAg
ICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVk
QXJyYXk9c2lnbmVkIGNoYXIsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisgICAg
SW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBJbnQ4QXJyYXkgOiBBcnJh
eUJ1ZmZlclZpZXcgewogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQg
PSAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJh
eS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwKaW5kZXgg
NzA4Y2RiMzAxNWI3MzZiZjkwZTgxNjUzNzczZjBmYzE5Zjc4ZGM4Zi4uODI5MmIzYjlkNDIyY2U3
ZmVmNTBjZGMyY2JjYzJkY2I3YzFiZmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvVWludDE2QXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1VpbnQxNkFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3Qs
CiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PXVuc2lnbmVkIHNob3J0
LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFt
ZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgVWludDE2QXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewog
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSAyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKaW5kZXggNjQzYzA5MmRlM2FiMThh
OTU4NmI2NzU4ZTY0NDZjYzNjM2FjOTg2Yy4uYjVjMDU1ZDQzMTJkOTM3ZDNjYjYzMzk1MTVlMjM3
MWI1YWM1MjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMy
QXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5Lmlk
bApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVj
a0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PXVuc2lnbmVkIGludCwKLSAgICBJbXBsZW1lbnRh
dGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50
ZXJmYWNlIFVpbnQzMkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25l
ZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gNDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9VaW50OEFycmF5LmlkbAppbmRleCBkYWYzZjgwNTczMDMwZTJmODZmMWE0NTc1YjMyOTU4OWNl
MDQxNzFiLi4yNDE2YTQ3ZGY2NDhiMzc4NzIwMWU5MzhkNmM0OTA5MGM2ZmEyZWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAog
ICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBl
ZEFycmF5PXVuc2lnbmVkIGNoYXIsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisg
ICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBVaW50OEFycmF5IDog
QXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVN
RU5UID0gMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhD
bGFtcGVkQXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhDbGFtcGVk
QXJyYXkuaWRsCmluZGV4IGIxN2YxMzU3MmNlYjk1MGY1NTY3YmY4MmNjMDc3YmU0ZmViZDBmOGYu
LjVhOTk5NWU4MDgzNDg4NmVjYzQzZDczMDY5ZTlhOGQwODYyZmE3YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwKQEAgLTMzLDcgKzMz
LDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAg
ICAgVHlwZWRBcnJheT11bnNpZ25lZCBjaGFyLAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNl
PVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgVWludDhD
bGFtcGVkQXJyYXkgOiBVaW50OEFycmF5IHsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVT
X1BFUl9FTEVNRU5UID0gMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmgKaW5kZXggMDUxMjQ1MGQ3NjJkY2FhNGUxMjliYTliNzYzMWNmMzlmOTIzYTZkMC4uOTQ2NWI2
NzRhZDg2ODA0OWUwNTQ1M2RiODRlMTcxZjMyNDIyY2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oCkBAIC0zMCw2ICszMCwxMSBAQAogCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNz
IEFycmF5QnVmZmVyVmlldzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJH
TEJ1ZmZlciA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CkBAIC0zOSwxMyArNDQsMTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBjcmVhdGUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Kik7CiAKICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoR0MzRHNp
emVpcHRyIHNpemUpOwotICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShBcnJheUJ1ZmZlciop
OwotICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBi
b29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGludHB0ciBvZmZzZXQsIEFycmF5QnVmZmVy
Kik7Ci0gICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJTdWJEYXRhKEdDM0RpbnRwdHIgb2Zmc2V0LCBB
cnJheUJ1ZmZlclZpZXcqKTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoSlNDOjpBcnJh
eUJ1ZmZlciopOworICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShKU0M6OkFycmF5QnVmZmVy
VmlldyopOworICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YShHQzNEaW50cHRyIG9mZnNl
dCwgSlNDOjpBcnJheUJ1ZmZlciopOworICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YShH
QzNEaW50cHRyIG9mZnNldCwgSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKIAogICAgIEdDM0RzaXpl
aXB0ciBieXRlTGVuZ3RoKCkgY29uc3Q7Ci0gICAgY29uc3QgQXJyYXlCdWZmZXIqIGVsZW1lbnRB
cnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOyB9
CisgICAgY29uc3QgSlNDOjpBcnJheUJ1ZmZlciogZWxlbWVudEFycmF5QnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9lbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCk7IH0KIAogICAgIC8vIEdldHMgdGhl
IGNhY2hlZCBtYXggaW5kZXggZm9yIHRoZSBnaXZlbiB0eXBlLiBSZXR1cm5zIC0xIGlmCiAgICAg
Ly8gbm9uZSBoYXMgYmVlbiBzZXQuCkBAIC02OCw3ICs3Myw3IEBAIHByaXZhdGU6CiAKICAgICBH
QzNEZW51bSBtX3RhcmdldDsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9lbGVtZW50QXJy
YXlCdWZmZXI7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fZWxlbWVudEFycmF5QnVm
ZmVyOwogICAgIEdDM0RzaXplaXB0ciBtX2J5dGVMZW5ndGg7CiAKICAgICAvLyBPcHRpbWl6YXRp
b24gZm9yIGluZGV4IHZhbGlkYXRpb24uIEZvciBlYWNoIHR5cGUgb2YgaW5kZXgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCmluZGV4IGY3MTY2YzQxOTMyZGMz
NDc2ZDhiNWMyZTExYTNlYzQyZTQ0MjViMWQuLjhlMjdkM2I5YTExMjBhNzZmN2MzMGFjMDFlMWI4
MDRiZDA2NjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
R2V0SW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZv
LmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIK
ICNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTLmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9J
bnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMyQXJyYXku
aD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCmluZGV4IDdmOWIw
NDI2NmEwZWE2Njc4NWIwYmM5MWI2MGZiYThlMWJmNDQ1ZTQuLjA4MjYxMmFjOWUxYzg3MjgxMGE4
OTYxMjg2OWE1NTU3ZTc5NWZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMR2V0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
R2V0SW5mby5oCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZl
ci5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8
d3RmL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMyQXJy
YXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDMy
QXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4ZmYwOTFi
YzkyYTJiNGRiZDU0NjQyNWQyOTNmOTE4MTg2MDg0Y2Q4Li5kMWUyMTIxNzdhZDA3ODQzYzQzYjMy
ZGQ1NzYxNzNmOTc5NGNkYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAKICNpbmNsdWRl
ICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgogCisj
aW5jbHVkZSA8cnVudGltZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWlu
dDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDk3MjNjYTc3NmIwODQ4OWE5ZGQ2NDBh
MzY1YjRhY2M2Y2FmZWQ0OGMuLjhiNWNiNjljYTk2MGVmZTAzMDc1ZjE5Y2Y2NzU2NDBmYWQwMmYz
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
ICJXZWJHTEdldEluZm8uaCIKIAotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNs
dWRlIDx3dGYvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+
CisjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9CaW5kaW5nVmlzaXRvcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9CaW5kaW5nVmlzaXRvcnMuaAppbmRleCBjODg1NzAzYWM3NTVjOTQzYjU0ODQy
ZjRmYTM5M2FkMmI0YWMzNTNmLi40YmFmMzE1MTZmYzRjYjNhMjdlMDAxM2ZhMWY3NjVjZDk1ZGRj
OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQmluZGluZ1Zpc2l0b3Jz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0JpbmRpbmdWaXNpdG9ycy5oCkBAIC0y
OSw4ICsyOSwxMSBAQAogI2lmbmRlZiBCaW5kaW5nVmlzaXRvcnNfaAogI2RlZmluZSBCaW5kaW5n
VmlzaXRvcnNfaAogCi1uYW1lc3BhY2UgV1RGIHsKK25hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJy
YXlCdWZmZXJWaWV3OworfQorCituYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFN0cmluZ0ltcGw7CiB9
CiAKQEAgLTU1LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBFeHRlcm5hbEFycmF5Vmlz
aXRvciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5hbEFycmF5KFdU
Rjo6QXJyYXlCdWZmZXJWaWV3KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJu
YWxBcnJheShKU0M6OkFycmF5QnVmZmVyVmlldyopID0gMDsKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIH5FeHRlcm5hbEFycmF5VmlzaXRvcigpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDg4ZjNkNjBlMTY3NmUy
MzE3Y2YxMzdhZGE5ZDI0NmQ2ZWVhZTdiZjcuLjFkYzNlMTJlY2E0NzBmZTY0YjE1NDAyOGRkYTg4
Zjc2ZGMwMTU1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEdDRXZl
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1l
bnQuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25Db3B5aW5nU29ydC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q3J5cHRvLmNwcAppbmRleCBhZTQxNmVlMTc3N2VlODYzOWJmYWZlMDhjYjQ3NDZjNTdiZmYzNWNh
Li5mMGU0YjVkYThiY2YyODg5ZmUxMzgyYTY3MjQxYzBjMjY0MWI2MTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
cnlwdG8uY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2lu
Y2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaAppbmRleCAxNzI1YWY4NmViMjFhNDgxNjRkNzBkOGFm
ZTJiYWI2MWZjYzMwMjMwLi44NjU1MmJjNjEwNWJlY2FhNmNjMjZiNWM1YzhjNzYyM2M0NzVhMjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ3J5cHRvLmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0
eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwpAQCAtNDIsNyArNDYsNyBAQCBjbGFzcyBDcnlwdG8g
OiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxDcnlwdG8+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG8+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDcnlwdG8oKSk7IH0KIAotICAgIHZvaWQgZ2V0UmFuZG9tVmFsdWVzKEFycmF5
QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGdldFJhbmRvbVZhbHVlcyhK
U0M6OkFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBD
cnlwdG8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmNwcAppbmRleCA1YTI0OGQwYTVjNzMxMmVlZTFiYzcxYjQyN2Y0Zjg1
YjAwNDZkZTY4Li42MTEwNTZkZDc5NzM2NGM3YjE2NDIyMjRiZGY3NWJiYzBlYTg3ZDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RO
RU9OLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggODcxZDdjMDU1NTBlOTg1
OWQwYzFhZmE3NjM0OGIxNTA1NTY3MThiNC4uZGM4YzY0MzdhZDgzMzIxMGFkMTFkNWEyNTllNDA0
ZWFmY2RhMDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCkBAIC0zOSwxMSArMzksMTEgQEAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0Qu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhLmgiCisj
aW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFt
cGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDkyNzM0Y2FiNTBjYzMwMzRlNGFjZTJiMzA4ZDVmNzg3OWNhODVjOTguLmIyNGFiNGFmMTcx
MTMwMjc4MmQwODg0N2FiOWU3YTFlZjE3MDZmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQ
cml2YXRlLmgiCisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDFlMmI4OGM1ZWZlYTQ1NjU3OGNiODMx
YTM4NzRjYmQ5NGUxYzM2NjEuLjRhZjQ5MTZlY2JmYzJiZDc0MTNiYzA4MDU5NmUyMWZiN2ZlZGFh
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNDcsMTAgKzQ3LDEwIEBACiAjaW1wb3J0
ICJXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cnVudGltZS9VaW50
MTZBcnJheS5oPgorI2ltcG9ydCA8cnVudGltZS9VaW50MzJBcnJheS5oPgorI2ltcG9ydCA8cnVu
dGltZS9VaW50OEFycmF5Lmg+CiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbXBvcnQg
PHd0Zi9VaW50MTZBcnJheS5oPgotI2ltcG9ydCA8d3RmL1VpbnQzMkFycmF5Lmg+Ci0jaW1wb3J0
IDx3dGYvVWludDhBcnJheS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCA4ZTYx
ZWRmZjljODZjZmNmYTQxYWI3MzMxOGQ5Njk5M2RhYzIxOWQyLi43OTNlYjdiYzg5YTBjM2I4OGEz
YWJkYzlmYjc4MTA4ZDg4MTQyMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTI1LDEwICsyNSwxMCBA
QAogICovCiAKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFt
cGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKSAm
JiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzApKQogI2RlZmluZSBXVEZfVVNFX0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAxCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
LmNwcAppbmRleCBiZjUyN2ZmNTNiNjMxNjdjMmI4NWExNWVmNDNkMjQwZTY2NzQ2ZjZhLi44MTQ1
MzkwYjgxNDNmODdkNzkyMzI3MmRjZThlNjZkZWI1YTFiMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0
cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgKCpC
bGVuZFR5cGUpKHVuc2lnbmVkIGNoYXIgY29sb3JBLCB1bnNpZ25lZCBjaGFyIGNvbG9yQiwgdW5z
aWduZWQgY2hhciBhbHBoYUEsIHVuc2lnbmVkIGNoYXIgYWxwaGFCKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJp
eC5jcHAKaW5kZXggYmRmNTU1MmFlMTg5ODEwNDNmNTI2MmI4NGI5MjBjMjI3MWNmYzJmYS4uNGQ1
MmY4ZjU3Yzc4YTY3MjJmYzRmYTY0MWY2ZmM2ZGI2YmViNzQ1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENs
YW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuY3BwCmluZGV4IDIyOTQ0MjZkZWY5Y2UxNWE2NDEzNTkyMGY2NjNmMWFhNGNlZTJk
MmQuLmU0OTRiMDhiZDFmMDY2Y2YwMmQ5OTEwMjc1NmUxMDc5YzI1YmY5ZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlbmRl
clRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFy
cmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAyN2U3
M2FhOWNmNTc1MTBlNDMyYjQ0ODU5N2FlNGZiOTFjNjE5M2EwLi4wNjI5MWU3OWIyN2EzODczNDQ3
NGZjZDEzMTRlZmJkMWE1YWU3YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CiAKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1l
L1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252
b2x2ZU1hdHJpeC5jcHAKaW5kZXggZmFkOTJjOTVhMWY1MGU0MGNmMTUzMDc4NmNiY2VmNjU1ZDhi
ZDc0YS4uNzM5NjhkODhiOWY2YzZiZmM4OGUzZWI3MjY0Nzg0YmFjYzJhODk0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29udm9sdmVNYXRyaXguY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJl
ZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUv
VWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5j
bHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1
c3RvbUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ3VzdG9tRmlsdGVyLmNwcAppbmRleCBjMjJmNTBlZjkwMTA5YzI4MGFiY2RmYmE0Njc0YTg4
NDhmNzc0N2NkLi5jNDMwNmMwZmExNGE4MjQ0M2EzOTQyZDg1YzM3YmFiMDJmZjMwY2FjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9t
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ3VzdG9tRmlsdGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRy
ZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWlu
dDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRl
eCAwMjVmZjY1YWMzYTg2YzM3MjljZDdlMDVlYzM0MTkwYmIwODdiYmE1Li44ZWI1NjQwZTI4YmM2
ZWFiMmU1YmIxYWE4ZDliMmU2NWFmYTUxNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4K
KyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IGMxZWZhMmFkZWFmNjUwMmY2NjgxMDEwNjFh
ZjhlNTU2OWQyMzRkYzguLjA5NzdkZDJlZjc1ZWJiNmI0NjlmOWM0ZDI0MmQwMmIwNTlkMzlkNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
cm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJSZW5kZXJU
cmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCA0NDZlMjVh
MTBjNWU2MzQ3NWE1ZTQwYTQ3NGVkZGU0YTIzYjZjODRlLi42MWJhMzAyYTRhY2VkODE3ZTk0Mzg5
NjU1OGJiNTNjOGM4ZWIyYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtMzMsOSArMzMs
OSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0
aW5nLmgKaW5kZXggYjQwYmIxMzA5MGFiZjMxMjc2NDg5MTM3Njk2Nzc4NjNlYjBkZWI4ZS4uZWI3
OWJiZGJjYjU0YjA1YzM4YTE5ODQyYjA1MDc1NzQ3MDI0MDgyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTM0
LDcgKzM0LDcgQEAKICNpbmNsdWRlICJMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlBvaW50TGln
aHRTb3VyY2UuaCIKICNpbmNsdWRlICJTcG90TGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYv
VWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CiAKIC8vIENvbW1vbiBiYXNlIGNsYXNzIGZvciBGRURpZmZ1c2VMaWdodGluZyBhbmQgRkVT
cGVjdWxhckxpZ2h0aW5nCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAppbmRleCA5ZTcyMGY3NGFjZWI5Nzg5
NzFmNDJmMWU5NTE1MzczOGQyZjVjZDI4Li42YjAyOGVlMzkzNzY5MjlkZGVlYjdmMzRhYzE0Mjc4
MjZmZDJlNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVk
ZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1
ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxK
b2JzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiB1c2luZyBzdGQ6Om1pbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAxNzY4
ODc0NmY2ZjllNDQ2MjcxYTQxZmNiMWUyNTExMWVhZDFjNWE1Li5jNGJkOTc5NWQ2Y2VkODMzZDRl
N2ZiNjlmZTNiMWM1YWM5NzRmZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zMSw5ICszMSw5
IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KLSNpbmNsdWRl
IDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHAKaW5kZXggNWRkMDY1ZDk4ZGE3Yzc5ZjVjOWI3YjE3OThmZDAwMTE3YjNhN2Ni
NS4uZjFiNDVkNjk3MTEzMmJjOGRlZDQ0OWQxMDhlMWI1ZTRhNjBiZDQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgPHd0Zi9V
aW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXku
aD4KIAogI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKICNpbmNsdWRlIDxhcm1fbmVvbi5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggMjk2NDYxZjlmMTk3NGI4ODljMjNmZDgyMzZhZjg2N2FkNTJl
Y2FjZS4uY2RjN2E1MDEyZWY3OGNmYWMxYjVlZGJkMTVhMThjOTgyODVjYjhiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC0yNywxMCArMjcsMTEgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CisKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShPUEVOQ0wpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3ND
b250ZXh0M0RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3Jh
cGhpY3NDb250ZXh0M0RNYWMubW0KaW5kZXggMjYxM2FhYWE4NjQyZTk4NWE2YjkzNzZjYzI0NDY5
NTkwNzg0NzAzMS4uYzJjNDNlOTQ2MDE4MTcyYzNiZjY5NGNlNjM5NjZlZGFjZjQ5ODlkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0NvbnRleHQzRE1hYy5tbQpAQCAtNDMsMTEgKzQzLDExIEBACiAjaW5jbHVkZSA8T3Bl
bkdML2dsLmg+CiAjaW5jbHVkZSAiV2ViR0xMYXllci5oIgogI2luY2x1ZGUgIldlYkdMT2JqZWN0
LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVm
ZmVyVmlldy5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zs
b2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+
CisjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9h
dDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDlkNDZhNGMzZGUwYTA4M2Ux
ODg5MDFhYjVlMjZhMDQ0MGU3ZWUwNDkuLjY5MDJiNjEzNWVmYjFhNWY2ZTA1OGQwMzkzZmRiM2Nh
Yzg3NzllOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9u
LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8
d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgVVNFKE9QRU5HTF9FU18yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ZDRkYzI0MDFlYjliN2Y3YjZiZjgyYWE3YzgwZTFjMDYxODFmMGIxOS4uZDFiNGI5Nzk3NzI3NjAx
OTUxOWIzNjdmOTIxOTMxZDExNjg3NDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9GbG9h
dDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmNwcAppbmRleCAzZTZiZjhhMTRjYjU0OGM5MzlhMzZh
Yzc5MGY0NmI3MmU1NDU2OTJiLi5hZDc0YTI0NzkyN2MzYjZkMjY0ZDk1MjNmZjYxNjY5YzhjZmIw
OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkNETS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKLSNpbmNsdWRlIDx3
dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIFVpbnQ4QXJyYXkqIGlu
aXREYXRhUHJlZml4KCkKIHN0YXRpYyBVaW50OEFycmF5KiBrZXlQcmVmaXgoKQogewogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsnaycsICdlJywgJ3knfTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCBwcmVmaXgs
ICgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+LCBw
cmVmaXgsICgpKTsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwpAQCAtOTIsNyAr
OTIsNyBAQCBzdGF0aWMgVWludDhBcnJheSoga2V5UHJlZml4KCkKIHN0YXRpYyBVaW50OEFycmF5
KiBrZXlSZXF1ZXN0KCkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciByZXF1ZXN0
RGF0YVtdID0geydyJywgJ2UnLCAncScsICd1JywgJ2UnLCAncycsICd0J307Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChSZWZQdHI8V1RGOjpVaW50OEFycmF5PiwgcmVxdWVzdCwgKCkpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPEpTQzo6VWludDhBcnJheT4sIHJlcXVlc3QsICgp
KTsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwogICAgIGlmICghaW5pdGlh
bGl6ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKaW5kZXggMDllN2ZlNTgyNTJmOTE5Yjg2NzBkZTFkOGFmZGFlMTlmYjY3
M2NmZi4uNGJjMDU5NmU3OGNlMDAxYzk2ZTk0MDdhYzA3MDI5MmQ0NTUxYmE5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAKICNpbmNsdWRl
ICJYTUxIdHRwUmVxdWVzdFVwbG9hZC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUg
PGhlYXAvU3Ryb25nLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlC
dWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCmluZGV4IDFjZDc2YmNkZDQ5MDUyYjg4MDU4ZDhhZTNmMDNhYzVhMzZhOTM2ZGEuLjZhZmZm
MzdlYTZjYjRkMDUxMDAxY2FmY2Y5YWIyYWVkMDUyYTlhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCkBAIC0zNSw2ICszNSwxMSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKQEAgLTkxLDggKzk2LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCBzZW5kKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKERP
TUZvcm1EYXRhKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlcios
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChKU0M6OkFycmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2VuZChKU0M6OkFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIGFib3J0KCk7CiAgICAgdm9pZCBzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgb3ZlcnJpZGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKQEAgLTEy
MCw4ICsxMjUsOCBAQCBwdWJsaWM6CiAgICAgUmVzcG9uc2VUeXBlQ29kZSByZXNwb25zZVR5cGVD
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVR5cGVDb2RlOyB9CiAgICAgCiAgICAgLy8g
cmVzcG9uc2UgYXR0cmlidXRlIGhhcyBjdXN0b20gZ2V0dGVyLgotICAgIEFycmF5QnVmZmVyKiBy
ZXNwb25zZUFycmF5QnVmZmVyKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBBcnJheUJ1ZmZlciogb3B0
aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUFycmF5
QnVmZmVyLmdldCgpOyB9CisgICAgSlNDOjpBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZl
cihFeGNlcHRpb25Db2RlJik7CisgICAgSlNDOjpBcnJheUJ1ZmZlciogb3B0aW9uYWxSZXNwb25z
ZUFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUFycmF5QnVmZmVyLmdldCgp
OyB9CiAKICAgICB2b2lkIHNldExhc3RTZW5kTGluZU51bWJlcih1bnNpZ25lZCBsaW5lTnVtYmVy
KSB7IG1fbGFzdFNlbmRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsgfQogICAgIHZvaWQgc2V0TGFz
dFNlbmRVUkwoY29uc3QgU3RyaW5nJiB1cmwpIHsgbV9sYXN0U2VuZFVSTCA9IHVybDsgfQpAQCAt
MjIyLDcgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8RG9jdW1lbnQ+IG1f
cmVzcG9uc2VEb2N1bWVudDsKICAgICAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlcjsKLSAgICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9yZXNw
b25zZUFycmF5QnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1f
cmVzcG9uc2VBcnJheUJ1ZmZlcjsKIAogICAgIGJvb2wgbV9lcnJvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208151</attachid>
            <date>2013-08-05 14:48:51 -0700</date>
            <delta_ts>2013-08-05 22:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119489-20130805145203.patch</filename>
            <type>text/plain</type>
            <size>288500</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTU5YjIyZjlhNTk2NTRiOWU3NDFhYTE5MmIyNjIwM2M1N2VkMzA4Li5iZDEwYmEyNjU5MDViNjU4
NmIwODMxODM3NjI0Yjc0YTc3OGU0MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTMtMDgtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gaW50byBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJh
eSBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTQyBpbiBhZHZhbmNlIG9mIHJlLWltcGxlbWVudGF0aW9u
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEpTQ1R5cGVkQXJy
YXlTdHVicy5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Ojp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjphZGRWaWV3KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmguCisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpkYXRhKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cmFuc2Zlcik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM6OmNvcHlUbyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjppc05ldXRlcmVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6On5BcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZSk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpzbGljZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAuCisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp+
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaC4KKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpidWZmZXIpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJhc2VBZGRyZXNz
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXROZXV0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojppc05ldXRlcmFibGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeVN1YlJhbmdlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojpz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6CisgICAgICAg
ICogcnVudGltZS9GbG9hdDMyQXJyYXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0Zs
b2F0MzJBcnJheS5oLgorICAgICAgICAoSlNDOjpGbG9hdDMyQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OkZsb2F0MzJBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OkZsb2F0MzJBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6RmxvYXQzMkFycmF5OjpGbG9hdDMyQXJyYXkpOgorICAgICAg
ICAoSlNDOjpGbG9hdDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0Zsb2F0
NjRBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmguCisg
ICAgICAgIChKU0M6OkZsb2F0NjRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6RmxvYXQ2NEFycmF5OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpGbG9hdDY0QXJyYXk6OkZsb2F0NjRBcnJheSk6CisgICAgICAgIChKU0M6OkZsb2F0NjRB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSW50MTZBcnJheS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oLgorICAgICAgICAoSlNDOjpJbnQxNkFy
cmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkludDE2QXJyYXk6OkludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpJbnQxNkFycmF5OjpzdWJh
cnJheSk6CisgICAgICAgICogcnVudGltZS9JbnQzMkFycmF5Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9JbnQzMkFycmF5LmguCisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OmdldFR5
cGUpOgorICAgICAgICAoSlNDOjpJbnQzMkFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJ
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50MzJBcnJh
eTo6SW50MzJBcnJheSk6CisgICAgICAgIChKU0M6OkludDMyQXJyYXk6OnN1YmFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL0ludDhBcnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYv
SW50OEFycmF5LmguCisgICAgICAgIChKU0M6OkludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAg
IChKU0M6OkludDhBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50OEFycmF5OjpJbnQ4QXJyYXkpOgor
ICAgICAgICAoSlNDOjpJbnQ4QXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVncmFsVHlwZWRBcnJheUJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0ludGVn
cmFsVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFz
ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QmFzZTo6SW50ZWdyYWxU
eXBlZEFycmF5QmFzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QmFzZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaC4KKyAgICAgICAgKEpTQzo6
VHlwZWRBcnJheUJhc2U6OmRhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c2V0
KToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OnNldFJhbmdlKToKKyAgICAgICAgKEpT
Qzo6VHlwZWRBcnJheUJhc2U6Onplcm9SYW5nZSk6CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlC
YXNlOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Ynl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OlR5cGVkQXJyYXlCYXNlOjppdGVtKToKKyAgICAgICAgKEpTQzo6VHlw
ZWRBcnJheUJhc2U6OmNoZWNrSW5ib3VuZERhdGEpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5
QmFzZTo6VHlwZWRBcnJheUJhc2UpOgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6VHlwZWRBcnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpUeXBlZEFycmF5QmFzZTo6c3ViYXJyYXlJbXBsKToKKyAgICAgICAg
KEpTQzo6VHlwZWRBcnJheUJhc2U6Om5ldXRlcik6CisgICAgICAgICogcnVudGltZS9VaW50MTZB
cnJheS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvVWludDE2QXJyYXkuaC4KKyAgICAg
ICAgKEpTQzo6VWludDE2QXJyYXk6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpVaW50MTZBcnJheTo6VWludDE2QXJyYXkpOgorICAgICAgICAo
SlNDOjpVaW50MTZBcnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDMyQXJy
YXkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQzMkFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KToKKyAgICAgICAgKEpTQzo6VWludDMyQXJyYXk6OlVpbnQzMkFycmF5KToKKyAgICAgICAgKEpT
Qzo6VWludDMyQXJyYXk6OnN1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL1VpbnQ4QXJyYXku
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaC4KKyAgICAgICAgKEpT
Qzo6VWludDhBcnJheTo6Z2V0VHlwZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpVaW50OEFycmF5OjpVaW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6VWludDhB
cnJheTo6c3ViYXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmguCisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpnZXRUeXBlKToKKyAgICAgICAgKEpTQzo6VWludDhD
bGFtcGVkQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6Onpl
cm9GaWxsKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnNldCk6CisgICAgICAg
IChKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpVaW50OENsYW1wZWRBcnJheSk6CisgICAgICAgIChK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDEzLTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29waWVkIHNwYWNlIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBtb3JlIHRoYW4gb25lIGNv
cGllZCBiYWNraW5nIHN0b3JlIHBlciBKU0NlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYmY4MzIwMzYxMWRjMzhlZjAzMWQ0
ZDAxZDAzY2NhMTM3M2VlNDBhZi4uZWRhMDIxYjc3YzE4NTc0MjAzMWY0NWUwZDhmMDA0ZjgwN2Zk
N2IyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wOC0wNSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVHlwZWRBcnJheSBpbXBsZW1lbnRhdGlvbiBp
bnRvIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE5NDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gZnJvbSBXVEYKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKwogMjAxMy0wOC0wMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGEgYnVuY2ggb2Yg
cmVkdW5kYW50IGNoZWNrcyBmb3IgZW1wdHkgc3RyaW5nIGluIFN0cmluZ0ltcGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlMzFmNTkxOTc4ZjRmZDgyZGYzMWFjZGY0YmE2Y2Q0NmZjMWFiNzNkLi42ZWJhZTlhMzdj
M2RjZTNkMDlkOGE2MTczNjQxZjUxMzY4OWZlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIy
IEBACisyMDEzLTA4LTA1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBUeXBlZEFycmF5IGltcGxlbWVudGF0aW9uIGludG8gSlNDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk0ODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV2ViQ29yZSBmb3IgbmV3
IGxvY2F0aW9uIG9mIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6IEFkZGVkLgorICAgICAg
ICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQzMkFycmF5Lmg6IEFkZGVkLgorICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5Lmg6IEFkZGVkLgor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oOiBBZGRlZC4K
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQ4QXJyYXkuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlwZWRB
cnJheUJhc2UuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9V
aW50MTZBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1VpbnQzMkFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvVWludDhBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQW5hbHlzZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEZs
b2F0RnJlcXVlbmN5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEJ5
dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0Qnl0
ZVRpbWVEb21haW5EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjph
dWRpb0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtVGltZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0
b0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkSW5jbHVkZXNGb3JUeXBlKToKKyAgICAg
ICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoK
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJTeW5jLmg6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5j
cHA6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXJWaWV3LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0RhdGFWaWV3Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9GbG9hdDY0QXJyYXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0ludDE2QXJyYXku
aWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0ludDhBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWludDE2QXJy
YXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50
OENsYW1wZWRBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjplbGVtZW50QXJyYXlCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAg
ICAqIHBhZ2UvQ3J5cHRvLmNwcDoKKyAgICAgICAgKiBwYWdlL0NyeXB0by5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpvcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIpOgorCiAyMDEzLTA4LTA1
ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFhNTFRy
ZWVWaWV3ZXIgc2hvdWxkIGJlIGNyZWF0ZWQgb25seSBpbiB0aGUgWE1MIHZpZXdlciBtb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTgzYmQxYmM3YWE3YzVmYjRkY2M4
Zjk2YjRlMDdiYzdjZDdlOTEwZS4uODVkMTdlZDdhNzZiY2I4NDQxMWI0M2ZmYzYwMTQyN2Q0OTJi
NGI3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjY0LDYgKzI2NCw4
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcHJvZmlsZXIvUHJvZmlsZU5vZGUu
Y3BwCiAgICAgcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCiAKKyAgICBydW50aW1lL0FycmF5
QnVmZmVyLmNwcAorICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogICAgIHJ1bnRpbWUv
QXJnTGlzdC5jcHAKICAgICBydW50aW1lL0FyZ3VtZW50cy5jcHAKICAgICBydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDgxMTM3YWFlZjkwMDRmODQ4MTIyYmRkMGIwMzA2MTM3ZDg0ZGFjNGEuLmQwYmI3ZDY0
YmVhNDY5MGVkMjZhZTZiOTc2OGQzYWVjZmFmODAwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zMiw3ICszMiw3IEBAIGphdmFzY3JpcHRjb3JlX2J1
aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRB
c3NlbWJseS5oCiAKIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAotICAgIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYXN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJU2hpbXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaCBcCkBAIC02
NDQsNiArNjQ0LDEwIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5Q29udmVudGlvbnMuaCBcCkBAIC03MDUsNiArNzA5LDggQEAgamF2
YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJyYXkuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQ2NEFycmF5LmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIFwKQEAgLTcyMyw2
ICs3MjksMTAgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludDE2QXJyYXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
MzJBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJyYXkuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWlu
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVD
aGFpbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcCBcCkBAIC04ODIsOCArODkyLDEzIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHJhY2luZy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlZEFycmF5QmFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
ZEFycmF5RGVzY3JpcHRvci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50
MTZBcnJheS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJh
Y3Rpb24uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTVN0YWNrQm91bmRzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2F0Y2hkb2cuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlw
ZWRBcnJheVN0dWJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJz
LmgKaW5kZXggZDdhYzFlZjcyZWNhYzZhMmU2ZGM3MjgzYTc4MWU1YWJlNTViZjcyMS4uMzkzZTEy
MWIyYmZmNzAwOGQ4N2IyMzA5YzdkZTkzZTcxYjhmNjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KU0NUeXBlZEFycmF5U3R1YnMuaApAQCAtMjYsMTkgKzI2LDIwIEBACiAjaWZuZGVmIEpT
Q1R5cGVkQXJyYXlTdHVic19oCiAjZGVmaW5lIEpTQ1R5cGVkQXJyYXlTdHVic19oCiAKKyNpbmNs
dWRlICJGbG9hdDMyQXJyYXkuaCIKKyNpbmNsdWRlICJGbG9hdDY0QXJyYXkuaCIKKyNpbmNsdWRl
ICJJbnQxNkFycmF5LmgiCisjaW5jbHVkZSAiSW50MzJBcnJheS5oIgorI2luY2x1ZGUgIkludDhB
cnJheS5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgPHd0Zi9G
bG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+CisjaW5jbHVkZSAi
VWludDE2QXJyYXkuaCIKKyNpbmNsdWRlICJVaW50MzJBcnJheS5oIgorI2luY2x1ZGUgIlVpbnQ4
QXJyYXkuaCIKKyNpbmNsdWRlICJVaW50OENsYW1wZWRBcnJheS5oIgorCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSW50MTZBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9J
bnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDhBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9V
aW50MTZBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0
Zi9VaW50OEFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oK
aW5kZXggZThlYzhlYWQzNjY3NjhmNjE5ZGM0YmRhY2ZhMzI5YzcyNzA2MTQ1My4uNWFmODEzM2Ri
ZjA3YjgzZDA2NDNlNDJjYzViNTUyNzZiN2YxNjI5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCkBAIC00MTAsNiArNDEwLDggQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHByb2ZpbGVyXFByb2ZpbGVyT1NSRXhpdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccHJvZmlsZXJcUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAiIC8+DQogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccHJvZmlsZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlclZp
ZXcuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJnTGlzdC5j
cHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcmd1bWVudHMuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlDb25zdHJ1Y3Rv
ci5jcHAiIC8+DQpAQCAtNzcxLDYgKzc3Myw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxwcm9maWxlclxQcm9maWxlck9TUkV4aXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwcm9maWxlclxQcm9maWxlck9TUkV4aXRTaXRlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccHJvZmlsZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlCdWZmZXIuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJnTGlzdC5oIiAvPg0KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJndW1lbnRzLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUNvbnN0cnVjdG9yLmgiIC8+DQpAQCAtODA2LDYg
KzgxMCw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4Y2VwdGlvbkhl
bHBlcnMuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4ZWN1dGFi
bGUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4ZWN1dGlvbkhh
cm5lc3MuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZsb2F0MzJB
cnJheS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRmxvYXQ2NEFy
cmF5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkNv
bnN0cnVjdG9yLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5j
dGlvblByb3RvdHlwZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+DQpAQCAtODE1LDYgKzgyMSw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEluZGV4aW5nSGVhZGVySW5saW5lcy5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmgiIC8+DQogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbml0aWFsaXplVGhyZWFkaW5nLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQxNkFycmF5LmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQzMkFycmF5LmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQ4QXJyYXkuaCIgLz4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uaCIg
Lz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5oIiAvPg0K
QEAgLTkwMyw3ICs5MTIsMTAgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3ltYm9sVGFibGUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFRy
YWNpbmcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVkQXJy
YXlEZXNjcmlwdG9yLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxV
aW50MTZBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVWlu
dDE2V2l0aEZyYWN0aW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxVaW50MzJBcnJheS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
VWludDhBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0u
aCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdhdGNoZG9nLmgiIC8+
DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrR0NNYXAuaCIgLz4NCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
Zjg2ZDJlNzRiYzFjYThjOGIxMGQ1NGQzM2JjY2M4YjViMmZiYTI0Yi4uYTdjYmZiMjBkOWJjYzZj
N2QxNjYxMjk2YjQyNzllNGQ5MDMyMDBmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNDQ0LDYgKzQ0NCwxMiBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccHJvZmlsZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAi
Pg0KICAgICAgIDxGaWx0ZXI+cHJvZmlsZXI8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFyZ0xpc3QuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQpAQCAtMTQ2MCw2ICsxNDY2LDM2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxlclByb2ZpbGVkQnl0
ZWNvZGVzLmgiPg0KICAgICAgIDxGaWx0ZXI+cHJvZmlsZXI8L0ZpbHRlcj4NCiAgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5o
Ij4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5oIj4NCisgICAg
ICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEZsb2F0MzJBcnJheS5oIj4NCisgICAgICA8RmlsdGVyPnd0
ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEZsb2F0NjRBcnJheS5oIj4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXElu
dDE2QXJyYXkuaCI+DQorICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQzMkFycmF5LmgiPg0K
KyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiPg0KKyAgICAgIDxGaWx0ZXI+
d3RmPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVWludDE2QXJyYXkuaCI+DQorICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxV
aW50MzJBcnJheS5oIj4NCisgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFVpbnQ4QXJyYXkuaCI+
DQorICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcmdMaXN0LmgiPg0KICAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsSW5jbHVkZT4NCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGUwMWJhMDc5ZDgwMzk1ODVhNzZiZGRmODE4MjhjNzcxMDE4NTYwMDYuLmE3
NTQ5ODQyYmMzYzViYjJiNmM1Nzc3NjUzNDEyYTYwNGRjMjczMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04MTUsNiArODE1LDIxIEBACiAJCUE3QTRBRTBEMTc5NzNCNEQwMDU2
MTJCMSAvKiBKSVRTdHVic01JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QTRBRTA5MTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic01JUFMuaCAq
LzsgfTsKIAkJQTdBNEFFMEYxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzU0g0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwQjE3OTczQjRE
MDA1NjEyQjEgLyogSklUU3R1YnNTSDQuaCAqLzsgfTsKIAkJQTdBNEFFMTAxNzk3M0I0RDAwNTYx
MkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0E0QUUwQzE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1YnNYODZD
b21tb24uaCAqLzsgfTsKKwkJQTdBOEFGMzQxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThB
RjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi87IH07CisJCUE3QThBRjM1
MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5
QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTdBOEFGMzYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyNzE3QURCNUYz
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLzsgfTsKKwkJQTdBOEFGMzcxN0FEQjVG
MzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVm
ZmVyVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI5MTdBREI1RjMwMDVB
QjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYy
QTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8q
IEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdBOEFGMkIxN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNCMTdBREI1RjMwMDVB
QjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNDMTdB
REI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyRDE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
QThBRjNEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyRTE3QURCNUYz
MDA1QUIxNzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNFMTdBREI1RjMwMDVBQjE3NCAv
KiBUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdBOEFGMkYxN0FEQjVGMzAwNUFCMTc0IC8qIFR5cGVkQXJyYXlCYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGM0Yx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFy
cmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTdBOEFGNDAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMTE3QURCNUYzMDA1
QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjQyMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdCNDhGNDkwRUU4
OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8q
IEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwICovOyB9OwogCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhB
MzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3QjYw
MTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1
IC8qIFVubGlua2VkQ29kZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE5MDMsNiArMTkxOCwyMSBAQAogCQlBN0E0QUUwQzE3OTczQjRE
MDA1NjEyQjEgLyogSklUU3R1YnNYODZDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklUU3R1YnNYODZDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTdBN0VFNzQxMUI5OEI4RDAwNjVBMTRGIC8qIEFTVEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVNUQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBN0E3RUU3NzExQjk4QjhEMDA2NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW50YXhDaGVja2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI2MTdBREI1RjMwMDVBQjE3
NCAvKiBBcnJheUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJh
eUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNzE3QURCNUYz
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMy
QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQzMkFycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAv
KiBGbG9hdDY0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXQ2
NEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJCMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50OEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJDMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkQx
N0FEQjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4
QUYyRTE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBl
ZEFycmF5QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYzMDE3QURCNUYzMDA1
QUIxNzQgLyogVWludDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
aW50OEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjMxMTdBREI1
RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVaW50OENsYW1wZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQzMkFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxl
QWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVB
bGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCNDhEQjYwRUU3NENG
QzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jv
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4cG9ydE1hY3Jvcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwOSw5ICsyMjM5LDkgQEAKIAkJMDM0NzY4
REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJCTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1
IC8qIGpzYyAqLywKLQkJCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovLAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9t
ICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1
MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLApAQCAtMjc5OCwxMiArMjgy
OCwxNCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNjU1M0EzMkYxN0ExRjFFRTAw
OENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwICovLAotCQkJCTY1NTNBMzMw
MTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggKi8sCiAJCQkJ
QkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEy
MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAw
MTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJQkMyNTdERTYwRTFGNTFDNTAwMTZCNkM5
IC8qIEFyZ3VtZW50cy5oICovLAorCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJh
eUJ1ZmZlci5jcHAgKi8sCisJCQkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVm
ZmVyLmggKi8sCisJCQkJQTdBOEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmll
dy5jcHAgKi8sCisJCQkJQTdBOEFGMjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmll
dy5oICovLAogCQkJCUJDNzk1MjA2MEUxNUU4QTgwMEE4OThBQiAvKiBBcnJheUNvbnN0cnVjdG9y
LmNwcCAqLywKIAkJCQlCQzc5NTIwNzBFMTVFOEE4MDBBODk4QUIgLyogQXJyYXlDb25zdHJ1Y3Rv
ci5oICovLAogCQkJCTBGQjdGMzg5MTVFRDhFMzgwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25z
LmggKi8sCkBAIC0yODMyLDYgKzI4NjQsOCBAQAogCQkJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5oICovLAogCQkJCUE3MDlGMkYxMTdBMEFDMkEwMDUxMkU5
OCAvKiBDb21tb25TbG93UGF0aHMuY3BwICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3
RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKKwkJCQk2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMg
LyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJNjU1M0EzMzAxN0ExRjFF
RTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCAqLywKIAkJCQlBN0U1QTNB
NTE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuY3BwICovLAogCQkJCUE3RTVB
M0E2MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5oICovLAogCQkJCTk2OUEw
OTIyMEVEMUUwOUMwMEYxRjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKQEAgLTI4NjMsNiArMjg5
Nyw4IEBACiAJCQkJODZDQTAzMkQxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuY3BwICov
LAogCQkJCTg2Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi8sCiAJCQkJ
MEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKKwkJCQlB
N0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFG
MkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUJDMjY4MEMwMEUx
NkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBD
MTBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTBGQjRC
NTIxMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAqLywKQEAg
LTI4ODEsNiArMjkxNywxMCBAQAogCQkJCTBGQjdGMzhGMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRl
eGluZ1R5cGUuaCAqLywKIAkJCQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAgKi8sCiAJCQkJRTE3ODYzM0YwRDlCRUMwMDAwRDc0RTc1IC8qIEluaXRp
YWxpemVUaHJlYWRpbmcuaCAqLywKKwkJCQlBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50
MTZBcnJheS5oICovLAorCQkJCUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5
LmggKi8sCisJCQkJQTdBOEFGMkIxN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovLAor
CQkJCUE3QThBRjJFMTdBREI1RjMwMDVBQjE3NCAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgg
Ki8sCiAJCQkJQTc4ODUzRjcxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hh
aW4uY3BwICovLAogCQkJCUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVj
dHVyZUNoYWluLmggKi8sCiAJCQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFs
RnVuY3Rpb24uY3BwICovLApAQCAtMzAzOCw4ICszMDc4LDEzIEBACiAJCQkJMTRBMzk2QTYwQ0Qy
OTMzMTAwQjVCNEZGIC8qIFN5bWJvbFRhYmxlLmggKi8sCiAJCQkJNUQ1MzcyNkQwRTFDNTQ2QjAw
MjFFNTQ5IC8qIFRyYWNpbmcuZCAqLywKIAkJCQk1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyog
VHJhY2luZy5oICovLAorCQkJCUE3QThBRjJGMTdBREI1RjMwMDVBQjE3NCAvKiBUeXBlZEFycmF5
QmFzZS5oICovLAogCQkJCTBGRUIzRUNCMTYyMzdGNDcwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVz
Y3JpcHRvci5oICovLAorCQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJh
eS5oICovLAogCQkJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rp
b24uaCAqLywKKwkJCQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCAq
LywKKwkJCQlBN0E4QUYzMDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICovLAorCQkJ
CUE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJ
CUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8sCiAJCQkJRTE4RTNBNTYwREY5
Mjc4QzAwRDkwQjM0IC8qIFZNLmggKi8sCiAJCQkJRkU2NjE3MjcxNzc0RTAzNTAwNDk1QjAwIC8q
IFZNU3RhY2tCb3VuZHMuaCAqLywKQEAgLTM0ODQsNiArMzUyOSw4IEBACiAJCQkJODZBREQxNDUw
RkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVm
ZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJy
YXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0
NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTUxNUVE
OEU0NjAwRjE2N0IyIC8qIEFycmF5Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NjM5NDU1MTVEMDcwNTcwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMzUyMiw2ICszNTY5LDcgQEAKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29k
ZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBD
b21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU1M0EzMzIx
N0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRDgyRTM5MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFNUEzQTgxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0
aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAg
LyogQ29tcGxldGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjc4LDYgKzM3MjYsOCBAQAogCQkJ
CTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJ
bmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxv
YXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQg
LyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRCMkNDOTE3M0RBNTIwMDA3
QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBB
MDgxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzc0MSw2ICszNzkxLDEwIEBACiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2
N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTAwRTE2RjVD
RDAwQjM0NDYwIC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2
OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdBOEFGM0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0E4QUYzQTE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBN0E4QUYzRDE3QURCNUYzMDA1QUIxNzQgLyogSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4ODUzRkExNzk3MjYyOTAwMTQ0MEU0IC8q
IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2NjdCMEUx
OTlDMDUwMDgwNjZERCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDI5RDc3QzBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMzk3NSw3ICs0MDI5LDYgQEAKIAkJCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRBMUYgLyogU291
cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlFMTVFRDhF
NDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNjU1M0EzMzIxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4
Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAw
MTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMjE3
OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC00MDA1
LDYgKzQwNTgsNyBAQAogCQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVy
YXRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBU
aW55Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVENTM3MjZGMEUxQzU0ODgwMDIx
RTU0OSAvKiBUcmFjaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzRTE3QURCNUYzMDA1
QUIxNzQgLyogVHlwZWRBcnJheUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUIzRUNEMTYy
MzdGNEQwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGNDI3NDExNThFQkU4RDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtNDAxMyw3ICs0MDY3LDExIEBACiAJCQkJMEZGNDI3NDgxNThFQkU5MTAwNENCOUZG
IC8qIHVkaXM4Nl9zeW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzQ5MTU4RUJFOTEwMDRD
QjlGRiAvKiB1ZGlzODZfdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTVBQjM5MTc5OUU0
QjIwMEQyODMzRCAvKiBVRGlzODZEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
QThBRjQxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTdBOEFGNDIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzRjE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGNDAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4
Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcy
QTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNjAx
ODIxNjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRGRDIgLyogVW51c2VkUG9pbnRlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC00MzkzLDYgKzQ0NTEsOCBAQAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUz
NSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3
MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
ODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUE3QThBRjM0MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0E4QUYzNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJGMTA3RUMzNzYwMDQyN0E0
OCAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDU0MTVE
MDcwNTUwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3
RjM5QzAxMDdFQzM3NjAwNDI3QTQ4IC8qIEFycmF5UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNDQxNiw2ICs0NDc2LDcgQEAKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyog
Q29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4
IC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDlGMkYyMTdB
MEFDMkEwMDUxMkU5OCAvKiBDb21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NjU1M0EzMzExN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUEzQTcxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0
aW9uUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMyMTA3RUMzNzYwMDQyN0E0
OCAvKiBDb21wbGV0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NkIxNkQ4MTJFQjVCNTkw
MDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ2ODgs
NyArNDc0OSw2IEBACiAJCQkJMEZGNzI5QUYxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29t
cGlsYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjAxNjZBRDM1QzAwMEY1QkEz
IC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjcy
OUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNjU1M0EzMzExN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRo
c0V4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjIxNjZBRDM1QzAwMEY1
QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjMx
NjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjcyOUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCAzNjFiMmJlN2ExN2UwMzRl
ODhiYjczY2EyNDQ4ZjU3NGRlOGFlZGNlLi42OWU2NDRmZGY3ZmEzNzRkZTBhYjY3MmU4YzA5YWQz
YmM2YWYzMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtMjU5LDYgKzI1OSw4IEBA
IFNPVVJDRVMgKz0gXAogICAgIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIFwKICAgICBw
cm9maWxlci9Qcm9maWxlTm9kZS5jcHAgXAogICAgIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNw
cCBcCisgICAgcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgXAorICAgIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmNwcCBcCiAgICAgcnVudGltZS9BcmdMaXN0LmNwcCBcCiAgICAgcnVudGltZS9Bcmd1
bWVudHMuY3BwIFwKICAgICBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmVi
NmJlNjY1NzhmOGE0NDRlMjJmYTRjNmUxM2ExMGQ0MjBkYmMxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0wLDAgKzEs
OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZm
ZXIuaCIKKworI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorCisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Jv
b2wgQXJyYXlCdWZmZXI6OnRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCwgVmVj
dG9yPFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpCit7CisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBrZWVwQWxpdmUodGhpcyk7CisKKyAgICBpZiAoIW1fY29udGVudHMu
bV9kYXRhKSB7CisgICAgICAgIHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgYm9vbCBhbGxWaWV3c0FyZU5ldXRlcmFibGUgPSB0cnVlOworICAg
IGZvciAoQXJyYXlCdWZmZXJWaWV3KiBpID0gbV9maXJzdFZpZXc7IGk7IGkgPSBpLT5tX25leHRW
aWV3KSB7CisgICAgICAgIGlmICghaS0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAgICAgICBhbGxW
aWV3c0FyZU5ldXRlcmFibGUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYWxsVmlld3NBcmVO
ZXV0ZXJhYmxlKQorICAgICAgICBtX2NvbnRlbnRzLnRyYW5zZmVyKHJlc3VsdCk7CisgICAgZWxz
ZSB7CisgICAgICAgIG1fY29udGVudHMuY29weVRvKHJlc3VsdCk7CisgICAgICAgIGlmICghcmVz
dWx0Lm1fZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB3aGls
ZSAobV9maXJzdFZpZXcpIHsKKyAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBjdXJyZW50ID0gbV9m
aXJzdFZpZXc7CisgICAgICAgIHJlbW92ZVZpZXcoY3VycmVudCk7CisgICAgICAgIGlmIChhbGxW
aWV3c0FyZU5ldXRlcmFibGUgfHwgY3VycmVudC0+aXNOZXV0ZXJhYmxlKCkpCisgICAgICAgICAg
ICBjdXJyZW50LT5uZXV0ZXIoKTsKKyAgICAgICAgbmV1dGVyZWRWaWV3cy5hcHBlbmQoY3VycmVu
dCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFycmF5QnVmZmVyOjphZGRW
aWV3KEFycmF5QnVmZmVyVmlldyogdmlldykKK3sKKyAgICB2aWV3LT5tX2J1ZmZlciA9IHRoaXM7
CisgICAgdmlldy0+bV9wcmV2VmlldyA9IDA7CisgICAgdmlldy0+bV9uZXh0VmlldyA9IG1fZmly
c3RWaWV3OworICAgIGlmIChtX2ZpcnN0VmlldykKKyAgICAgICAgbV9maXJzdFZpZXctPm1fcHJl
dlZpZXcgPSB2aWV3OworICAgIG1fZmlyc3RWaWV3ID0gdmlldzsKK30KKwordm9pZCBBcnJheUJ1
ZmZlcjo6cmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCit7CisgICAgQVNTRVJUKHRo
aXMgPT0gdmlldy0+bV9idWZmZXIpOworICAgIGlmICh2aWV3LT5tX25leHRWaWV3KQorICAgICAg
ICB2aWV3LT5tX25leHRWaWV3LT5tX3ByZXZWaWV3ID0gdmlldy0+bV9wcmV2VmlldzsKKyAgICBp
ZiAodmlldy0+bV9wcmV2VmlldykKKyAgICAgICAgdmlldy0+bV9wcmV2Vmlldy0+bV9uZXh0Vmll
dyA9IHZpZXctPm1fbmV4dFZpZXc7CisgICAgaWYgKG1fZmlyc3RWaWV3ID09IHZpZXcpCisgICAg
ICAgIG1fZmlyc3RWaWV3ID0gdmlldy0+bV9uZXh0VmlldzsKKyAgICB2aWV3LT5tX3ByZXZWaWV3
ID0gdmlldy0+bV9uZXh0VmlldyA9IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3YzczNGM2NzM0ODEwOTdjODE3NmRk
NjRhOGRhMGJkYjM0YzZlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0wLDAgKzEsMjU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBBcnJheUJ1ZmZlcl9oCisjZGVmaW5lIEFycmF5QnVmZmVyX2gKKworI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEFycmF5QnVmZmVyOworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworCitjbGFzcyBB
cnJheUJ1ZmZlckNvbnRlbnRzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZl
ckNvbnRlbnRzKTsKK3B1YmxpYzoKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKCkgCisgICAgICAg
IDogbV9kYXRhKDApCisgICAgICAgICwgbV9zaXplSW5CeXRlcygwKQorICAgIHsgfQorCisgICAg
aW5saW5lIH5BcnJheUJ1ZmZlckNvbnRlbnRzKCk7CisKKyAgICB2b2lkKiBkYXRhKCkgeyByZXR1
cm4gbV9kYXRhOyB9CisgICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSB7IHJldHVybiBtX3NpemVJ
bkJ5dGVzOyB9CisKK3ByaXZhdGU6CisgICAgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCB1bnNpZ25lZCBzaXplSW5CeXRlcykgCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgICAg
ICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKKyAgICB7IH0KKworICAgIGZyaWVuZCBjbGFz
cyBBcnJheUJ1ZmZlcjsKKworICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kgeworICAgICAg
ICBaZXJvSW5pdGlhbGl6ZSwKKyAgICAgICAgRG9udEluaXRpYWxpemUKKyAgICB9OworCisgICAg
c3RhdGljIGlubGluZSB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5LCBBcnJheUJ1ZmZlckNv
bnRlbnRzJik7CisgICAgdm9pZCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikK
KyAgICB7CisgICAgICAgIEFTU0VSVCghb3RoZXIubV9kYXRhKTsKKyAgICAgICAgb3RoZXIubV9k
YXRhID0gbV9kYXRhOworICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRl
czsKKyAgICAgICAgbV9kYXRhID0gMDsKKyAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7CisgICAg
fQorCisgICAgdm9pZCBjb3B5VG8oQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCisgICAgewor
ICAgICAgICBBU1NFUlQoIW90aGVyLm1fZGF0YSk7CisgICAgICAgIEFycmF5QnVmZmVyQ29udGVu
dHM6OnRyeUFsbG9jYXRlKG1fc2l6ZUluQnl0ZXMsIHNpemVvZihjaGFyKSwgQXJyYXlCdWZmZXJD
b250ZW50czo6RG9udEluaXRpYWxpemUsIG90aGVyKTsKKyAgICAgICAgaWYgKCFvdGhlci5tX2Rh
dGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1lbWNweShvdGhlci5tX2RhdGEsIG1f
ZGF0YSwgbV9zaXplSW5CeXRlcyk7CisgICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3Np
emVJbkJ5dGVzOworICAgIH0KKworICAgIHZvaWQqIG1fZGF0YTsKKyAgICB1bnNpZ25lZCBtX3Np
emVJbkJ5dGVzOworfTsKKworY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxB
cnJheUJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRl
KEFycmF5QnVmZmVyKik7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNv
bnRlbnRzJik7CisKKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpOworCisgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKKyAgICBpbmxpbmUg
Y29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OworICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3Ro
KCkgY29uc3Q7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoaW50
IGJlZ2luLCBpbnQgZW5kKSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gc2xpY2UoaW50IGJlZ2luKSBjb25zdDsKKworICAgIHZvaWQgYWRkVmlldyhBcnJheUJ1ZmZl
clZpZXcqKTsKKyAgICB2b2lkIHJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3Kik7CisKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiwgVmVj
dG9yPFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpOworICAgIGJvb2wg
aXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFtX2NvbnRlbnRzLm1fZGF0YTsgfQorCisgICAgfkFycmF5
QnVmZmVyKCkgeyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworCisg
ICAgaW5saW5lIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmKTsKKyAgICBpbmxpbmUg
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25l
ZCBlbmQpIGNvbnN0OworICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGludCBpbmRleCkg
Y29uc3Q7CisgICAgc3RhdGljIGlubGluZSBpbnQgY2xhbXBWYWx1ZShpbnQgeCwgaW50IGxlZnQs
IGludCByaWdodCk7CisKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVudHM7CisgICAg
QXJyYXlCdWZmZXJWaWV3KiBtX2ZpcnN0VmlldzsKK307CisKK2ludCBBcnJheUJ1ZmZlcjo6Y2xh
bXBWYWx1ZShpbnQgeCwgaW50IGxlZnQsIGludCByaWdodCkKK3sKKyAgICBBU1NFUlQobGVmdCA8
PSByaWdodCk7CisgICAgaWYgKHggPCBsZWZ0KQorICAgICAgICB4ID0gbGVmdDsKKyAgICBpZiAo
cmlnaHQgPCB4KQorICAgICAgICB4ID0gcmlnaHQ7CisgICAgcmV0dXJuIHg7Cit9CisKK1Bhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlKG51bUVs
ZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFs
aXplKTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShB
cnJheUJ1ZmZlciogb3RoZXIpCit7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUob3Ro
ZXItPmRhdGEoKSwgb3RoZXItPmJ5dGVMZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKQoreworICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CisgICAgQXJy
YXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlCdWZmZXJD
b250ZW50czo6WmVyb0luaXRpYWxpemUsIGNvbnRlbnRzKTsKKyAgICBpZiAoIWNvbnRlbnRzLm1f
ZGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIg
PSBhZG9wdFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVudHMpKTsKKyAgICBtZW1jcHkoYnVmZmVy
LT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJy
YXlCdWZmZXJDb250ZW50cyYgY29udGVudHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
cnJheUJ1ZmZlcihjb250ZW50cykpOworfQorCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQoreworICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOworfQor
CitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3sKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
IGNvbnRlbnRzOworICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG51bUVsZW1l
bnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSwgY29udGVudHMpOworICAgIGlmICghY29udGVu
dHMubV9kYXRhKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFy
cmF5QnVmZmVyKGNvbnRlbnRzKSk7Cit9CisKK0FycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJh
eUJ1ZmZlckNvbnRlbnRzJiBjb250ZW50cykKKyAgICA6IG1fZmlyc3RWaWV3KDApCit7CisgICAg
Y29udGVudHMudHJhbnNmZXIobV9jb250ZW50cyk7Cit9CisKK3ZvaWQqIEFycmF5QnVmZmVyOjpk
YXRhKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cy5tX2RhdGE7Cit9CisKK2NvbnN0IHZvaWQq
IEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cy5tX2Rh
dGE7Cit9CisKK3Vuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jb250ZW50cy5tX3NpemVJbkJ5dGVzOworfQorCitQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoaW50IGJlZ2luLCBpbnQgZW5kKSBjb25zdAorewor
ICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7
Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShpbnQgYmVn
aW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgYnl0
ZUxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAoreworICAgIHVuc2ln
bmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgcmV0dXJuIEFy
cmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdp
biwgc2l6ZSk7Cit9CisKK3Vuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGludCBpbmRl
eCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOwor
ICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0aCArIGluZGV4
OworICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKK30KKwor
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSBwb2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCkKK3sKKyAg
ICAvLyBEbyBub3QgYWxsb3cgMzItYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgorICAg
IC8vIEZJWE1FOiBXaHkgbm90PyBUaGUgdHJ5RmFzdENhbGxvYyBmdW5jdGlvbiBhbHJlYWR5IGNo
ZWNrcyBpdHMgYXJndW1lbnRzLAorICAgIC8vIGFuZCB3aWxsIGZhaWwgaWYgdGhlcmUgaXMgYW55
IG92ZXJmbG93LCBzbyB3aHkgc2hvdWxkIHdlIGluY2x1ZGUgYQorICAgIC8vIHJlZHVkYW50IHVu
bmVjZXNzYXJpbHkgcmVzdHJpY3RpdmUgY2hlY2sgaGVyZT8KKyAgICBpZiAobnVtRWxlbWVudHMp
IHsKKyAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0
ZVNpemU7CisgICAgICAgIGlmICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0
ZVNpemUpIHsKKyAgICAgICAgICAgIHJlc3VsdC5tX2RhdGEgPSAwOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorICAgIGJvb2wgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IGZh
bHNlOworICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCisgICAgICAgIGFsbG9jYXRp
b25TdWNjZWVkZWQgPSBXVEY6OnRyeUZhc3RDYWxsb2MobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRl
U2l6ZSkuZ2V0VmFsdWUocmVzdWx0Lm1fZGF0YSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VS
VChwb2xpY3kgPT0gRG9udEluaXRpYWxpemUpOworICAgICAgICBhbGxvY2F0aW9uU3VjY2VlZGVk
ID0gV1RGOjp0cnlGYXN0TWFsbG9jKG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplKS5nZXRW
YWx1ZShyZXN1bHQubV9kYXRhKTsKKyAgICB9CisKKyAgICBpZiAoYWxsb2NhdGlvblN1Y2NlZWRl
ZCkgeworICAgICAgICByZXN1bHQubV9zaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzICogZWxlbWVu
dEJ5dGVTaXplOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC5tX2RhdGEgPSAw
OworfQorCitBcnJheUJ1ZmZlckNvbnRlbnRzOjp+QXJyYXlCdWZmZXJDb250ZW50cygpCit7Cisg
ICAgV1RGOjpmYXN0RnJlZShtX2RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNp
bmcgSlNDOjpBcnJheUJ1ZmZlcjsKK3VzaW5nIEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czsKKwor
I2VuZGlmIC8vIEFycmF5QnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkODZhZjk4ZWQwMmVjNDBmM2Yz
Yzc3Njc0OTY4M2M1YzIyYjZmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisK
KyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQXJyYXlCdWZm
ZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0KQorICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCisgICAg
LCBtX2lzTmV1dGVyYWJsZSh0cnVlKQorICAgICwgbV9idWZmZXIoYnVmZmVyKQorICAgICwgbV9w
cmV2VmlldygwKQorICAgICwgbV9uZXh0VmlldygwKQoreworICAgIG1fYmFzZUFkZHJlc3MgPSBt
X2J1ZmZlciA/IChzdGF0aWNfY2FzdDxjaGFyKj4obV9idWZmZXItPmRhdGEoKSkgKyBtX2J5dGVP
ZmZzZXQpIDogMDsKKyAgICBpZiAobV9idWZmZXIpIAorICAgICAgICBtX2J1ZmZlci0+YWRkVmll
dyh0aGlzKTsKK30KKworQXJyYXlCdWZmZXJWaWV3Ojp+QXJyYXlCdWZmZXJWaWV3KCkKK3sKKyAg
ICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyLT5yZW1vdmVWaWV3KHRoaXMpOworfQor
Cit2b2lkIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKCkKK3sKKyAgICBtX2J1ZmZlciA9IDA7Cisg
ICAgbV9ieXRlT2Zmc2V0ID0gMDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTFhYzNhMzE0NzI0N2I1ODlj
NGUyYzU3MWJlN2M5YjRhNTU3OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEFycmF5QnVmZmVyVmlld19oCisjZGVmaW5lIEFycmF5QnVmZmVyVmlld19o
CisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2lu
Y2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1
ZmZlclZpZXc+IHsKK3B1YmxpYzoKKyAgICBlbnVtIFZpZXdUeXBlIHsKKyAgICAgICAgVHlwZUlu
dDgsCisgICAgICAgIFR5cGVVaW50OCwKKyAgICAgICAgVHlwZVVpbnQ4Q2xhbXBlZCwKKyAgICAg
ICAgVHlwZUludDE2LAorICAgICAgICBUeXBlVWludDE2LAorICAgICAgICBUeXBlSW50MzIsCisg
ICAgICAgIFR5cGVVaW50MzIsCisgICAgICAgIFR5cGVGbG9hdDMyLAorICAgICAgICBUeXBlRmxv
YXQ2NCwKKyAgICAgICAgVHlwZURhdGFWaWV3CisgICAgfTsKKyAgICB2aXJ0dWFsIFZpZXdUeXBl
IGdldFR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZm
ZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyOworICAgIH0KKworICAg
IHZvaWQqIGJhc2VBZGRyZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jhc2VB
ZGRyZXNzOworICAgIH0KKworICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgoKSBjb25zdCA9IDA7CisKKyAgICB2b2lkIHNldE5ldXRlcmFibGUoYm9v
bCBmbGFnKSB7IG1faXNOZXV0ZXJhYmxlID0gZmxhZzsgfQorICAgIGJvb2wgaXNOZXV0ZXJhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9pc05ldXRlcmFibGU7IH0KKworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKKworcHJvdGVjdGVkOgorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVu
c2lnbmVkIGJ5dGVPZmZzZXQpOworCisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKworICAgIGlubGluZSBib29sIHNldFJhbmdl
SW1wbChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpOworCisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRl
T2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKKworICAgIHN0YXRpYyBpbmxpbmUgdm9p
ZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBh
cnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOworCisgICAgLy8g
SGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVy
IGlzCisgICAgLy8gd2l0aGluIHJhbmdlLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMpCisgICAgeworICAg
ICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KHNpemVvZihUKSA+IDEgJiYgYnl0ZU9mZnNldCAlIHNpemVvZihUKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBidWZmZXItPmJ5dGVMZW5ndGgo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgcmVtYWluaW5n
RWxlbWVudHMgPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBieXRlT2Zmc2V0KSAvIHNpemVvZihU
KTsKKyAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8v
IElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3Mg
dmlldzsKKyAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRo
ZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyhQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwgdW5zaWduZWQgKm9mZnNl
dCwgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWF4T2Zm
c2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAg
aWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIt
PmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCAr
ICpvZmZzZXQgKiBzaXplb2YoVCk7CisgICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIt
PmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7CisgICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1l
bnRzID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAg
ICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVu
dHMpOworICAgIH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVy
KCk7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0
b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgorICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7CisK
KyAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyAgICBib29sIG1faXNOZXV0ZXJhYmxl
IDogMTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7CisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBBcnJheUJ1ZmZlclZpZXcqIG1fcHJldlZp
ZXc7CisgICAgQXJyYXlCdWZmZXJWaWV3KiBtX25leHRWaWV3OworfTsKKworYm9vbCBBcnJheUJ1
ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9m
ZnNldCkKK3sKKyAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKKyAgICAg
ICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIAorICAgIGNoYXIqIGJhc2UgPSBzdGF0aWNfY2FzdDxjaGFyKj4oYmFz
ZUFkZHJlc3MoKSk7CisgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VB
ZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK3sKKyAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5n
dGggPiBieXRlTGVuZ3RoKCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3Ro
IDwgYnl0ZU9mZnNldCkgeworICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJm
bG93CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY2hhciogYmFzZSA9
IHN0YXRpY19jYXN0PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKKyAgICBtZW1tb3ZlKGJhc2UgKyBi
eXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCit7CisgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVu
Z3RoKCkKKyAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5n
dGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNl
dCkgeworICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY2hhciogYmFzZSA9IHN0YXRpY19jYXN0
PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKKyAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAs
IHJhbmdlQnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXJyYXlCdWZm
ZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNp
Z25lZCBhcnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCit7Cisg
ICAgaWYgKHN0YXJ0IDwgMCkKKyAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOworICAgIGlmIChz
dGFydCA8IDApCisgICAgICAgIHN0YXJ0ID0gMDsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAg
ZW5kICs9IGFycmF5U2l6ZTsKKyAgICBpZiAoZW5kIDwgMCkKKyAgICAgICAgZW5kID0gMDsKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCisgICAgICAgIGVu
ZCA9IGFycmF5U2l6ZTsKKyAgICBpZiAoZW5kIDwgc3RhcnQpCisgICAgICAgIGVuZCA9IHN0YXJ0
OworICAgICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOworICAgICpsZW5n
dGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwordXNpbmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CisKKyNlbmRpZiAvLyBBcnJh
eUJ1ZmZlclZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RmxvYXQzMkFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDMyQXJy
YXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42YzUyNTc0MTdjYTI3NTJlNjYyODg5MzhmYmY2OTdlNzMzYjhlZDRi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQz
MkFycmF5LmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRmxvYXQzMkFycmF5
X2gKKyNkZWZpbmUgRmxvYXQzMkFycmF5X2gKKworI2luY2x1ZGUgIlR5cGVkQXJyYXlCYXNlLmgi
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEZsb2F0MzJBcnJheSA6IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxmbG9hdD4geworcHVibGljOgor
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNy
ZWF0ZShjb25zdCBmbG9hdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hv
dWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBi
ZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRv
IEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KTsKKworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6c2V0OworCisgICAgdm9pZCBz
ZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpbmRl
eCA+PSBUeXBlZEFycmF5QmFzZTxmbG9hdD46Om1fbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNf
Y2FzdDxmbG9hdD4odmFsdWUpOworICAgIH0KKworICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0
MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFzc1JlZlB0
cjxGbG9hdDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IFR5cGVGbG9hdDMyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgRmxvYXQzMkFycmF5
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgor
ICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxmbG9hdD47Cit9OworCitQYXNzUmVmUHRy
PEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGxl
bmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0
ZShjb25zdCBmbG9hdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8ZmxvYXQ+OjpjcmVhdGU8RmxvYXQzMkFycmF5PihhcnJheSwgbGVuZ3RoKTsK
K30KKworUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9h
dDMyQXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxG
bG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlVW5pbml0
aWFsaXplZDxGbG9hdDMyQXJyYXk+KGxlbmd0aCk7Cit9CisKK0Zsb2F0MzJBcnJheTo6RmxvYXQz
MkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogVHlwZWRBcnJheUJhc2U8ZmxvYXQ+KGJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxv
YXQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFy
cmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9h
dDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICByZXR1
cm4gc3ViYXJyYXlJbXBsPEZsb2F0MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkZsb2F0MzJBcnJheTsKKworI2VuZGlmIC8vIEZsb2F0
MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9h
dDY0QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zsb2F0NjRBcnJheS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY3N2VkYmQzYjhlNTljNTI4MTgzNzQxMTlmOGE5ZDk3YzIyNzFhNGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GbG9hdDY0QXJy
YXkuaApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZsb2F0NjRBcnJheV9oCisj
ZGVmaW5lIEZsb2F0NjRBcnJheV9oCisKKyNpbmNsdWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGbG9h
dDY0QXJyYXkgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8ZG91YmxlPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRl
KGNvbnN0IGRvdWJsZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBm
aWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEph
dmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsK
KworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OnNldDsKKworICAgIHZvaWQgc2V0
KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoaW5kZXgg
Pj0gVHlwZWRBcnJheUJhc2U8ZG91YmxlPjo6bV9sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KHZhbHVlKTsKKyAgICB9CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxGbG9h
dDY0QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQ
dHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisg
ICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBUeXBlRmxvYXQ2NDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIEZsb2F0NjRBcnJh
eShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICAKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJj
bGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8ZG91YmxlPjsKK307CisKK1Bh
c3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0
QXJyYXk+KGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJy
YXk6OmNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGFycmF5
LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5Ojpj
cmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46
OmNyZWF0ZTxGbG9hdDY0QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKK30KKwor
UGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT46
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8RmxvYXQ2NEFycmF5PihsZW5ndGgpOworfQorCitGbG9hdDY0
QXJyYXk6OkZsb2F0NjRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFR5cGVkQXJyYXlCYXNlPGRv
dWJsZT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8Rmxv
YXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxGbG9h
dDY0QXJyYXk+IEZsb2F0NjRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25z
dAoreworICAgIHJldHVybiBzdWJhcnJheUltcGw8RmxvYXQ2NEFycmF5PihzdGFydCwgZW5kKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpTQzo6RmxvYXQ2NEFycmF5OworCisj
ZW5kaWYgLy8gRmxvYXQ2NEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludDE2QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dDE2QXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDY2YWU0ZGE3ZTIzMmI1NjdmOWEyNGVmM2Y5YmM4ZjFm
YmEzMDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50MTZBcnJheS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQxNkFy
cmF5X2gKKyNkZWZpbmUgSW50MTZBcnJheV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xh
c3MgSW50MTZBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJy
YXk+IGNyZWF0ZShjb25zdCBpbnQxNl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAg
Ly8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkg
d2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVj
dGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCk7CisKKyAgICB1c2luZyBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6c2V0OworICAgIHVz
aW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OnNldDsKKworICAgIGlubGluZSBQ
YXNzUmVmUHRyPEludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5s
aW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdDsKKworICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gVHlwZUludDE2OworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgSW50
MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBl
cmNsYXNzLgorICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQxNl90PjsKK307CisK
K1Bhc3NSZWZQdHI8SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJbnQxNkFy
cmF5PihsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNy
ZWF0ZShjb25zdCBpbnQxNl90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVy
biBUeXBlZEFycmF5QmFzZTxpbnQxNl90Pjo6Y3JlYXRlPEludDE2QXJyYXk+KGFycmF5LCBsZW5n
dGgpOworfQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50MTZfdD46OmNyZWF0ZTxJ
bnQxNkFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8
SW50MTZBcnJheT4gSW50MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+OjpjcmVhdGVVbmluaXRp
YWxpemVkPEludDE2QXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDE2QXJyYXk6OkludDE2QXJyYXko
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDE2X3Q+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IElu
dDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJy
YXkoc3RhcnQsIGxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFy
cmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1
YmFycmF5SW1wbDxJbnQxNkFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKK3VzaW5nIEpTQzo6SW50MTZBcnJheTsKKworI2VuZGlmIC8vIEludDE2QXJyYXlfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJm
NjU5Mjc4ODI2YjNmMjZiMzExOTRkMDIyYThlOGM2YTI2YzU3NTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQzMkFycmF5LmgKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgSW50MzJBcnJheV9oCisjZGVmaW5lIEludDMyQXJyYXlf
aAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSW50MzJBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGlu
dD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBj
cmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50
MzJBcnJheT4gY3JlYXRlKGNvbnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAg
IC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5
IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJl
Y3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0OworICAgIHVzaW5n
IEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0OworCisgICAgaW5saW5lIFBhc3NSZWZQ
dHI8SW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKKyAgICBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Owor
CisgICAgdmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBUeXBlSW50MzI7CisgICAgfQorCitwcml2YXRlOgorICAgIGlubGluZSBJbnQzMkFycmF5
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgor
ICAgIGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTxpbnQ+OworfTsKKworUGFzc1JlZlB0cjxJ
bnQzMkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4obGVuZ3RoKTsKK30K
KworUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGUoY29uc3QgaW50KiBh
cnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+
OjpjcmVhdGU8SW50MzJBcnJheT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50
MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTxpbnQ+OjpjcmVhdGU8SW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTxpbnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPEludDMyQXJyYXk+KGxlbmd0aCk7Cit9CisK
K0ludDMyQXJyYXk6OkludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBJbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlPGludD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NS
ZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAor
eworICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRy
PEludDMyQXJyYXk+IEludDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDMyQXJyYXk+KHN0YXJ0LCBlbmQpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpJbnQzMkFycmF5OworCisjZW5k
aWYgLy8gSW50MzJBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnQ4QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludDhBcnJh
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkwZjIyODY2NjU5NDZiM2QzOThjOTkyYWU4NTgwYmM1N2NiNGNlYzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnQ4QXJy
YXkuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbnQ4QXJyYXlfaAorI2Rl
ZmluZSBJbnQ4QXJyYXlfaAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIEludDhBcnJh
eSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPGludDhfdD4geworcHVibGljOgorICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShjb25z
dCBpbnQ4X3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBvbmx5IGJl
IHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBE
bworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0
IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50
OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB1c2lu
ZyBUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZTxpbnQ4X3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+
IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFy
cmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBW
aWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlSW50ODsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIEludDhBcnJheShQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8v
IE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgorICAgIGZyaWVuZCBjbGFz
cyBUeXBlZEFycmF5QmFzZTxpbnQ4X3Q+OworfTsKKworUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IElu
dDhBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJh
eUJhc2U8aW50OF90Pjo6Y3JlYXRlPEludDhBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1JlZlB0
cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKGNvbnN0IGludDhfdCogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90Pjo6Y3JlYXRl
PEludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5PiBJ
bnQ4QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8aW50OF90Pjo6Y3JlYXRlPEludDhBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
OworfQorCitQYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50OF90
Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJbnQ4QXJyYXk+KGxlbmd0aCk7Cit9CisKK0ludDhBcnJh
eTo6SW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxp
bnQ4X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPElu
dDhBcnJheT4gSW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8SW50OEFycmF5
PiBJbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3ViYXJyYXlJbXBsPEludDhBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkludDhBcnJheTsKKworI2VuZGlmIC8vIEludDhBcnJh
eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTljOTg5ZWM3ZjIzMDdkODc4ZmExMmViNWJlMGNk
NDk2OWUxZmIxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgSW50ZWdyYWxUeXBlZEFy
cmF5QmFzZV9oCisKKyNpbmNsdWRlICJUeXBlZEFycmF5QmFzZS5oIgorI2luY2x1ZGUgPGxpbWl0
cz4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCisvLyBCYXNlIGNsYXNzIGZvciBhbGwg
V2ViR0w8VD5BcnJheSB0eXBlcyBob2xkaW5nIGludGVncmFsCisvLyAobm9uLWZsb2F0aW5nLXBv
aW50KSB2YWx1ZXMuCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIEludGVncmFsVHlwZWRBcnJheUJhc2UgOiBwdWJsaWMgVHlwZWRBcnJheUJhc2U8VD4g
eworcHVibGljOgorICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCisg
ICAgeworICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8VD46Om1fbGVuZ3RoKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpIC8vIENs
YW1wIE5hTiB0byAwCisgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgIC8vIFRoZSBkb3Vi
bGUgY2FzdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHdyYXBwaW5nCisgICAgICAg
IC8vIGZvciBvdXQtb2YtcmFuZ2UgdmFsdWVzIHdpdGggSW50MzJBcnJheSBhbmQgVWludDMyQXJy
YXkuCisgICAgICAgIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nh
c3Q8VD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoK
KyAgICBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IFR5cGVk
QXJyYXlCYXNlPFQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQorICAgIHsKKyAgICB9CisK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSW50ZWdyYWxUeXBlZEFycmF5
QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFy
cmF5QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZmU3YTZjMWE1NjY5NTc4ZWUxZDVhNjA2Y2NkZDhkNjQwZGMxMTg3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJh
eUJhc2UuaApAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVHlwZWRBcnJheUJh
c2VfaAorI2RlZmluZSBUeXBlZEFycmF5QmFzZV9oCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5o
IgorI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1
ZmZlclZpZXcgeworcHVibGljOgorICAgIFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxUKj4oYmFzZUFkZHJlc3MoKSk7IH0KKworICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNl
PFQ+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNldElt
cGwoYXJyYXksIG9mZnNldCAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgYm9vbCBzZXRSYW5n
ZShjb25zdCBUKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHNldFJhbmdlSW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgZGF0YUxlbmd0aCAqIHNpemVvZihUKSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsK
KyAgICB9CisKKyAgICBib29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpCisgICAgeworICAgICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQgKiBzaXplb2Yo
VCksIGxlbmd0aCAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgLy8gT3ZlcnJpZGRlbiBmcm9t
IEFycmF5QnVmZmVyVmlldy4gVGhpcyBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIG9mCisgICAgLy8g
cnVsZXMgYWJvdXQgaW5oZXJpdGFuY2Ugb2YgbWVtYmVycyBpbiB0ZW1wbGF0ZSBjbGFzc2VzLCBh
bmQKKyAgICAvLyBiZWNhdXNlIGl0IGlzIGFjY2Vzc2VkIHZpYSBwb2ludGVycyB0byBzdWJjbGFz
c2VzLgorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9sZW5ndGg7CisgICAgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xlbmd0aCAqIHNpemVvZihUKTsKKyAgICB9CisK
KyAgICAvLyBJbnZva2VkIGJ5IHRoZSBpbmRleGVkIGdldHRlci4gRG9lcyBub3QgcGVyZm9ybSBy
YW5nZSBjaGVja3M7IGNhbGxlcgorICAgIC8vIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBzbyBh
bmQgcmV0dXJuaW5nIHVuZGVmaW5lZCBhcyBuZWNlc3NhcnkuCisgICAgVCBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oaW5kZXggPCBUeXBlZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpOworICAgICAgICByZXR1
cm4gVHlwZWRBcnJheUJhc2U8VD46OmRhdGEoKVtpbmRleF07CisgICAgfQorCisgICAgYm9vbCBj
aGVja0luYm91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgcG9zKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbV9sZW5ndGgKKyAgICAgICAgICAgICYmIG9m
ZnNldCArIHBvcyA8PSBtX2xlbmd0aAorICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKKyAg
ICAgICAgICAgICYmIG9mZnNldCArIHBvcyA+PSBvZmZzZXQpOworICAgIH0KKworcHJvdGVjdGVk
OgorICAgIFR5cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IEFycmF5QnVmZmVy
VmlldyhidWZmZXIsIGJ5dGVPZmZzZXQpCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAg
IHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobGVuZ3Ro
LCBzaXplb2YoVCkpOworICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0
aCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoY29uc3QgVCogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxTdWJjbGFzcz4gYSA9IGNyZWF0ZTxTdWJjbGFzcz4o
bGVuZ3RoKTsKKyAgICAgICAgaWYgKGEpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgYS0+c2V0KGksIGFycmF5W2ldKTsK
KyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNz
PgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisg
ICAgeworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZihidWZmZXIpOworICAgICAgICBp
ZiAoIXZlcmlmeVN1YlJhbmdlPFQ+KGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSkKKyAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVm
LCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3Vi
Y2xhc3M+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihU
KSk7CisgICAgICAgIGlmICghYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CisgICAgUGFzc1JlZlB0cjxTdWJjbGFz
cz4gc3ViYXJyYXlJbXBsKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKKyAgICB7CisgICAgICAg
IHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOworICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5n
dGgoc3RhcnQsIGVuZCwgbV9sZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOworICAgICAgICBjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQs
ICZsZW5ndGgpOworICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zm
c2V0LCBsZW5ndGgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQorICAgIHsK
KyAgICAgICAgQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKTsKKyAgICAgICAgbV9sZW5ndGggPSAw
OworICAgIH0KKworICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMg
dmlhIGEgdmlydHVhbCBmdW5jdGlvbiBpbiBzdWJjbGFzc2VzLAorICAgIC8vIHdoaWNoIGlzIHdo
eSBpdCBpcyBwcm90ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZS4KKyAgICB1bnNpZ25lZCBtX2xl
bmd0aDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlR5cGVkQXJyYXlC
YXNlOworCisjZW5kaWYgLy8gVHlwZWRBcnJheUJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDE2QXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1VpbnQxNkFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYyZmFiMWIyN2I4NjJhOWEwOGQ5
MTkxYzhiNDI4MzQ1NGNiZGRlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VpbnQxNkFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgVWludDE2QXJyYXlfaAorI2RlZmluZSBVaW50MTZBcnJheV9oCisKKyNpbmNsdWRlICJJ
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJh
eUJ1ZmZlcjsKKworY2xhc3MgVWludDE2QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5
QmFzZTx1aW50MTZfdD4geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxV
aW50MTZBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQxNkFycmF5PiBjcmVhdGUoY29uc3QgdWludDE2X3QqIGFycmF5LCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4g
Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtu
b3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVy
biB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZp
cnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8
dWludDE2X3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZf
dD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShp
bnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJh
cnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAgdmlydHVhbCBWaWV3VHlwZSBn
ZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlVWludDE2OworICAgIH0K
KworcHJpdmF0ZToKKyAgICBpbmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgLy8gTWFrZSBj
b25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCisgICAgZnJpZW5kIGNsYXNzIFR5cGVk
QXJyYXlCYXNlPHVpbnQxNl90PjsKK307CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQx
NkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTx1aW50MTZfdD46OmNyZWF0ZTxVaW50MTZBcnJheT4obGVuZ3RoKTsKK30KKworUGFzc1Jl
ZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZShjb25zdCB1aW50MTZfdCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dWludDE2
X3Q+OjpjcmVhdGU8VWludDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRy
PFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJl
dHVybiBUeXBlZEFycmF5QmFzZTx1aW50MTZfdD46OmNyZWF0ZTxVaW50MTZBcnJheT4oYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50
MTZBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQxNl90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50MTZB
cnJheT4obGVuZ3RoKTsKK30KKworVWludDE2QXJyYXk6OlVpbnQxNkFycmF5KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MTZfdD4oYnVmZmVyLCBieXRlT2Zm
c2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5
OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0
LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5
SW1wbDxVaW50MTZBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
Cit1c2luZyBKU0M6OlVpbnQxNkFycmF5OworCisjZW5kaWYgLy8gVWludDE2QXJyYXlfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDMyQXJyYXkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVi
MDFlMDFhMWNhZDRlYmRlNDk5ZGExMzJmMzk3MGE1OTEyODNlYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5LmgKQEAgLTAsMCArMSwx
MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgVWludDMyQXJyYXlfaAorI2RlZmluZSBVaW50MzJBcnJh
eV9oCisKKyNpbmNsdWRlICJJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKKworY2xhc3MgVWludDMyQXJyYXkgOiBwdWJsaWMg
SW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJfdD4geworcHVibGljOgorICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoY29uc3QgdWlu
dDMyX3QqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gU2hvdWxkIG9ubHkgYmUg
dXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERv
CisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQg
d2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50
MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdXNp
bmcgVHlwZWRBcnJheUJhc2U8dWludDMyX3Q+OjpzZXQ7CisgICAgdXNpbmcgSW50ZWdyYWxUeXBl
ZEFycmF5QmFzZTx1aW50MzJfdD46OnNldDsKKworICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQz
MkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVmUHRy
PFVpbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OworCisgICAg
dmlydHVhbCBWaWV3VHlwZSBnZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBU
eXBlVWludDMyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgVWludDMyQXJyYXkoUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCisgICAg
ZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90PjsKK307CisKK1Bhc3NSZWZQdHI8
VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxVaW50MzJBcnJheT4obGVu
Z3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJyYXk6OmNyZWF0ZShj
b25zdCB1aW50MzJfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8dWludDMyX3Q+OjpjcmVhdGU8VWludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgp
OworfQorCitQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50MzJfdD46OmNyZWF0ZTxV
aW50MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRy
PFVpbnQzMkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQzMl90Pjo6Y3JlYXRlVW5p
bml0aWFsaXplZDxVaW50MzJBcnJheT4obGVuZ3RoKTsKK30KKworVWludDMyQXJyYXk6OlVpbnQz
MkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50MzJf
dD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMy
QXJyYXk+IFVpbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDMyQXJy
YXk+IFVpbnQzMkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50MzJBcnJheT4oc3RhcnQsIGVuZCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OlVpbnQzMkFycmF5OworCisjZW5kaWYgLy8g
VWludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VWludDhBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhBcnJheS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU2NWY5ZTE3MDUzOGRjMGMyNmFmODE1NGU2OWRkZTBhZjZiMDJiY2UKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50OEFycmF5
LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVWludDhBcnJheV9oCisjZGVm
aW5lIFVpbnQ4QXJyYXlfaAorCisjaW5jbHVkZSAiSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXJyYXlCdWZmZXI7CisKK2NsYXNzIFVpbnQ4QXJy
YXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1aW50OF90PiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGUo
Y29uc3QgdWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIFNob3VsZCBv
bmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmls
bGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZh
U2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8VWludDhBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisg
ICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dWludDhfdD46OnNldDsKKyAgICB1c2luZyBJbnRlZ3Jh
bFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpzZXQ7CisKKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxV
aW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OworICAgIGlubGluZSBQYXNzUmVm
UHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IFR5cGVVaW50ODsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBpbmxpbmUgVWludDhBcnJheShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAg
ICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dWludDhfdD47Cit9OworCitQYXNzUmVmUHRy
PFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4obGVuZ3Ro
KTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoY29uc3Qg
dWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJh
eUJhc2U8dWludDhfdD46OmNyZWF0ZTxVaW50OEFycmF5PihhcnJheSwgbGVuZ3RoKTsKK30KKwor
UGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGU8VWludDhBcnJheT4o
YnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+
IFVpbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxVaW50
OEFycmF5PihsZW5ndGgpOworfQorCitVaW50OEFycmF5OjpVaW50OEFycmF5KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+KGJ1ZmZlciwgYnl0ZU9mZnNldCwg
bGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFVpbnQ4QXJyYXk6OnN1YmFy
cmF5KGludCBzdGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0
aCgpKTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFycmF5OjpzdWJhcnJheShp
bnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50
OEFycmF5PihzdGFydCwgZW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3VzaW5nIEpT
Qzo6VWludDhBcnJheTsKKworI2VuZGlmIC8vIFVpbnQ4QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZm
ZmFlNzQ3Y2FlZThhZTNiMGQ1ZTE0MTEwYWUxMThjOGQ5ZmQyNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTAs
MCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVWludDhDbGFtcGVkQXJy
YXlfaAorI2RlZmluZSBVaW50OENsYW1wZWRBcnJheV9oCisKKyNpbmNsdWRlICJVaW50OEFycmF5
LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIFVpbnQ4Q2xhbXBlZEFycmF5IDogcHVibGljIFVpbnQ4QXJyYXkgeworcHVibGljOgorICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRlKHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBjcmVhdGUoY29uc3QgdWludDhfdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
CisKKyAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGly
ZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3Vs
dHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBJdCdzIG9ubHkgbmVlZGVkIHRvIHBvdGVu
dGlhbGx5IGNhbGwgdGhpcyBtZXRob2QgaWYgdGhlIGFycmF5CisgICAgLy8gd2FzIGNyZWF0ZWQg
dW5pbml0aWFsaXplZCAtLSB0aGUgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBwYXRocworICAgIC8v
IHplcm8gdGhlIGFsbG9jYXRlZCBtZW1vcnkuCisgICAgaW5saW5lIHZvaWQgemVyb0ZpbGwoKTsK
KworICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpzZXQ7CisgICAgaW5saW5lIHZv
aWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpOworCisgICAgaW5saW5lIFBhc3NS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CisgICAg
aW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwg
aW50IGVuZCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7CisgICAgfQorCitwcml2YXRl
OgorICAgIGlubGluZSBVaW50OENsYW1wZWRBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAvLyBNYWtlIGNvbnN0
cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KKyAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJh
eUJhc2U8dWludDhfdD47Cit9OworCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50
OENsYW1wZWRBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8dWludDhfdD46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4obGVuZ3RoKTsK
K30KKworUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZShjb25zdCB1aW50OF90KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVy
biBUeXBlZEFycmF5QmFzZTx1aW50OF90Pjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihhcnJh
eSwgbGVuZ3RoKTsKK30KKworUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFt
cGVkQXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8dWludDhfdD46OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHVpbnQ4X3Q+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQ4Q2xh
bXBlZEFycmF5PihsZW5ndGgpOworfQorCit2b2lkIFVpbnQ4Q2xhbXBlZEFycmF5Ojp6ZXJvRmls
bCgpCit7CisgICAgemVyb1JhbmdlKDAsIGxlbmd0aCgpKTsKK30KKwordm9pZCBVaW50OENsYW1w
ZWRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCit7CisgICAgaWYgKGlu
ZGV4ID49IG1fbGVuZ3RoKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHN0ZDo6aXNuYW4odmFs
dWUpIHx8IHZhbHVlIDwgMCkKKyAgICAgICAgdmFsdWUgPSAwOworICAgIGVsc2UgaWYgKHZhbHVl
ID4gMjU1KQorICAgICAgICB2YWx1ZSA9IDI1NTsKKyAgICBkYXRhKClbaW5kZXhdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4obHJpbnQodmFsdWUpKTsKK30KKworVWludDhDbGFtcGVkQXJyYXk6OlVp
bnQ4Q2xhbXBlZEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorOiBVaW50OEFycmF5KGJ1ZmZlciwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKQoreworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50
OENsYW1wZWRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBz
dWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBVaW50OENsYW1wZWRBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25z
dAoreworICAgIHJldHVybiBzdWJhcnJheUltcGw8VWludDhDbGFtcGVkQXJyYXk+KHN0YXJ0LCBl
bmQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpVaW50OENsYW1wZWRB
cnJheTsKKworI2VuZGlmIC8vIFVpbnQ4Q2xhbXBlZEFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IGU0ODQzYjE5YzJlOGYzOWQ3MDYyZTY3Mzg0MmM3ZTViODMwZWRhYTQu
LmUyMjdlMjRmOWFlY2Y0YzBjYzgyZDY5YWQ1MzVhNzdkMjU2YWRiYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtNjksOCArNjksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogICAgIGNsYXNz
IEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBGbG9hdDMyQXJyYXk7CisgICAgY2xhc3MgRmxvYXQ2NEFy
cmF5OwogICAgIGNsYXNzIEhhbmRsZVN0YWNrOwogICAgIGNsYXNzIElkZW50aWZpZXJUYWJsZTsK
KyAgICBjbGFzcyBJbnQ4QXJyYXk7CisgICAgY2xhc3MgSW50MTZBcnJheTsKKyAgICBjbGFzcyBJ
bnQzMkFycmF5OwogICAgIGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwpAQCAtODgsNiArOTMsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIGNsYXNzIFJlZ0V4cDsKICNlbmRp
ZgorICAgIGNsYXNzIFVpbnQ4QXJyYXk7CisgICAgY2xhc3MgVWludDhDbGFtcGVkQXJyYXk7Cisg
ICAgY2xhc3MgVWludDE2QXJyYXk7CisgICAgY2xhc3MgVWludDMyQXJyYXk7CiAgICAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwogICAg
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDY3NDljNmFjMDZkYmUxZThjODlkOWM3NThjODZmN2Q0Yjg0ZWU2NDQuLmY2YTM4MGJmYTNm
ZmE5ZDViZTkyNzU5OTY2NjViNDU5ODgyYTc3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTQsMTAgKzQsNiBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvQVNDSUlD
VHlwZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9BVkxUcmVlLmggXAogICAgIFNvdXJjZS9XVEYv
d3RmL0FsaWdubWVudC5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAgXAot
ICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0Fy
cmF5QnVmZmVyVmlldy5jcHAgXAotICAgIFNvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5o
IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBcCiAgICAgU291cmNlL1dURi93
dGYvQXNzZXJ0aW9ucy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmNwcCBcCkBAIC01
Niw4ICs1Miw2IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJp
bnRTdHJlYW0uY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBcCiAg
ICAgU291cmNlL1dURi93dGYvRml4ZWRBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9GbG9h
dDMyQXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBcCiAgICAgU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNw
YXRjaGVyLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmggXApA
QCAtNzYsMTAgKzcwLDYgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0hl
eE51bWJlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCBcCiAgICAgU291cmNl
L1dURi93dGYvSW5zZXJ0aW9uLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL0ludDE2QXJyYXkuaCBc
Ci0gICAgU291cmNlL1dURi93dGYvSW50MzJBcnJheS5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9J
bnQ4QXJyYXkuaCBcCi0gICAgU291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5o
IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9MaXN0RHVtcC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9M
aXN0SGFzaFNldC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9MTFZNSGVhZGVycy5oIFwKQEAgLTE4
OSwxMSArMTc5LDYgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL1RyaVN0
YXRlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1R5cGVUcmFpdHMuY3BwIFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9UeXBlVHJhaXRzLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNl
LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmggXAotICAgIFNvdXJjZS9XVEYv
d3RmL1VpbnQzMkFycmF5LmggXAotICAgIFNvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaCBcCi0g
ICAgU291cmNlL1dURi93dGYvVWludDhDbGFtcGVkQXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93
dGYvVW5pb25GaW5kLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1VuaVN0ZEV4dHJhcy5oIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9WTVRhZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5w
cm8gYi9Tb3VyY2UvV1RGL1dURi5wcm8KaW5kZXggMTZhOWM4YmM2NjhlZDExNDA0NzE2ZmEzZDhm
NTRjOTgyN2VjOWU3Mi4uNGEwYTY4MjI4NmViNTQ5NjI5OTI0MzE4MzI3MDQxNWM1MDM3NjI4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYucHJvCisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpA
QCAtMjEsOCArMjEsNiBAQCB3aW5jZSogewogCiBIRUFERVJTICs9IFwKICAgICBBbGlnbm1lbnQu
aCBcCi0gICAgQXJyYXlCdWZmZXIuaCBcCi0gICAgQXJyYXlCdWZmZXJWaWV3LmggXAogICAgIEFT
Q0lJQ1R5cGUuaCBcCiAgICAgQXNzZXJ0aW9ucy5oIFwKICAgICBBdG9taWNzLmggXApAQCAtNjQs
OCArNjIsNiBAQCBIRUFERVJTICs9IFwKICAgICBGZWF0dXJlRGVmaW5lcy5oIFwKICAgICBGaWxl
UHJpbnRTdHJlYW0uaCBcCiAgICAgRml4ZWRBcnJheS5oIFwKLSAgICBGbG9hdDMyQXJyYXkuaCBc
Ci0gICAgRmxvYXQ2NEFycmF5LmggXAogICAgIEZvcndhcmQuaCBcCiAgICAgRnVuY3Rpb25EaXNw
YXRjaGVyLmggXAogICAgIEZ1bmN0aW9uYWwuaCBcCkBAIC03OSw5ICs3NSw2IEBAIEhFQURFUlMg
Kz0gXAogICAgIEhhc2hUYWJsZS5oIFwKICAgICBIYXNoVHJhaXRzLmggXAogICAgIEhleE51bWJl
ci5oIFwKLSAgICBJbnQxNkFycmF5LmggXAotICAgIEludDMyQXJyYXkuaCBcCi0gICAgSW50OEFy
cmF5LmggXAogICAgIExpc3RIYXNoU2V0LmggXAogICAgIExvY2tlci5oIFwKICAgICBNYWluVGhy
ZWFkLmggXApAQCAtMTYzLDEwICsxNTYsNiBAQCBIRUFERVJTICs9IFwKICAgICBUaHJlYWRTYWZl
UmVmQ291bnRlZC5oIFwKICAgICBUaHJlYWRTcGVjaWZpYy5oIFwKICAgICBUeXBlVHJhaXRzLmgg
XAotICAgIFVpbnQxNkFycmF5LmggXAotICAgIFVpbnQzMkFycmF5LmggXAotICAgIFVpbnQ4QXJy
YXkuaCBcCi0gICAgVWludDhDbGFtcGVkQXJyYXkuaCBcCiAgICAgdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oIFwKICAgICB1bmljb2RlL0NvbGxhdG9yLmggXAogICAgIHVuaWNvZGUvaWN1L1VuaWNv
ZGVJY3UuaCBcCkBAIC0xODQsOCArMTczLDYgQEAgSEVBREVSUyArPSBcCiB1bml4OiBIRUFERVJT
ICs9IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaAogCiBTT1VSQ0VTICs9IFwKLSAgICBB
cnJheUJ1ZmZlci5jcHAgXAotICAgIEFycmF5QnVmZmVyVmlldy5jcHAgXAogICAgIEFzc2VydGlv
bnMuY3BwIFwKICAgICBBdG9taWNzLmNwcCBcCiAgICAgQml0VmVjdG9yLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qIGIvU291cmNlL1dURi9XVEYu
dmN4cHJvai9XVEYudmN4cHJvagppbmRleCAzZjA1MDE5OWFhODNhM2MxMTc0Zjk5YmE4MmZkMWZk
MmIxYmFkNTQ1Li5lNGY1YzU1NmMyMDUzMDNmNGZhYjQ4ODU1MTVlNDZmNDdkOTJiNTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCisrKyBiL1NvdXJjZS9X
VEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKQEAgLTUxLDggKzUxLDYgQEAKICAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPg0KICAgPC9JdGVtR3JvdXA+DQogICA8SXRlbUdyb3VwPg0KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxBcnJheUJ1ZmZlci5jcHAiIC8+DQotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cd3RmXEFycmF5QnVmZmVyVmlldy5jcHAiIC8+DQogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cd3RmXEFzc2VydGlvbnMuY3BwIiAvPg0KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHd0ZlxCaXRWZWN0b3IuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHd0ZlxDb21waWxhdGlvblRocmVhZC5jcHAiIC8+DQpAQCAtMTIyLDggKzEyMCw2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQ29tcGlsYXRpb25UaHJlYWQuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxXVEZcY29uZmlnLmgiIC8+DQogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEFsaWdubWVudC5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHd0ZlxBcnJheUJ1ZmZlci5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxBcnJheUJ1ZmZlclZpZXcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcQVNDSUlDVHlwZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxB
c3NlcnRpb25zLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEF0b21pY3Mu
aCIgLz4NCkBAIC0xNjgsOCArMTY0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxGZWF0dXJlRGVmaW5lcy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxG
aWxlUHJpbnRTdHJlYW0uaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRml4
ZWRBcnJheS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGbG9hdDMyQXJy
YXkuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRmxvYXQ2NEFycmF5Lmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEZvcndhcmQuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRnVuY3Rpb25EaXNwYXRjaGVyLmgiIC8+DQogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEZ1bmN0aW9uYWwuaCIgLz4NCkBAIC0xODMsOSAr
MTc3LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxIYXNoVGFibGUuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcSGFzaFRyYWl0cy5oIiAvPg0KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxIZXhOdW1iZXIuaCIgLz4NCi0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcSW50MTZBcnJheS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0ZlxJbnQzMkFycmF5LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEludDhBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxMaXN0
SGFzaFNldC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxMb2NrZXIuaCIg
Lz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcTWFpblRocmVhZC5oIiAvPg0KQEAg
LTI3MCw5ICsyNjEsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRocmVhZHNw
ZWNpZmljLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRocmVhZHNcQmlu
YXJ5U2VtYXBob3JlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFR5cGVU
cmFpdHMuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDE2QXJyYXku
aCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDMyQXJyYXkuaCIgLz4N
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDhBcnJheS5oIiAvPg0KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx1bmljb2RlXENoYXJhY3Rlck5hbWVzLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHVuaWNvZGVcQ29sbGF0b3IuaCIgLz4NCiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdW5pY29kZVxpY3VcVW5pY29kZUljdS5oIiAv
Pg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVy
cyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwppbmRleCBhOTcx
MDM1MzM2ZThmMTcwNmZhMWU2ZTNjMzY3Mzc4NDc1MDY4YjZjLi44M2NmMDgxNDM1ODZlYTljOWE5
ZWNmNmI1MWMwYTBmYjI3ZTFiMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9q
L1dURi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4
cHJvai5maWx0ZXJzCkBAIC05NiwxMiArOTYsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cd3RmXHVuaWNvZGVcVVRGOC5jcHAiPg0KICAgICAgIDxGaWx0ZXI+d3RmXHVuaWNvZGU8L0Zp
bHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3Rm
XEFycmF5QnVmZmVyLmNwcCI+DQotICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0gICAgPC9D
bENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXEFycmF5QnVmZmVyVmll
dy5jcHAiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxBc3NlcnRpb25zLmNwcCI+DQogICAgICAg
PEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQpAQCAtMzM4LDEyICszMzIs
NiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFdURlRocmVhZERhdGEuaCI+DQog
ICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEFycmF5QnVmZmVyLmgiPg0KLSAgICAgIDxGaWx0ZXI+d3Rm
PC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHd0ZlxBcnJheUJ1ZmZlclZpZXcuaCI+DQotICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0g
ICAgPC9DbEluY2x1ZGU+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEFTQ0lJQ1R5
cGUuaCI+DQogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpA
QCAtNDM3LDEyICs0MjUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEZpeGVk
QXJyYXkuaCI+DQogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+
DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEZsb2F0MzJBcnJheS5oIj4NCi0gICAg
ICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcRmxvYXQ2NEFycmF5LmgiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9G
aWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxGb3J3YXJkLmgiPg0KICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQogICAgIDwvQ2xJbmNs
dWRlPg0KQEAgLTQ3OSwxNSArNDYxLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxIZXhOdW1iZXIuaCI+DQogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbElu
Y2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEludDE2QXJyYXkuaCI+DQot
ICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEludDMyQXJyYXkuaCI+DQotICAgICAgPEZpbHRlcj53dGY8
L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEludDhBcnJheS5oIj4NCi0gICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0Ns
SW5jbHVkZT4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcTGlzdEhhc2hTZXQuaCI+
DQogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpAQCAtNjgw
LDE1ICs2NTMsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFR5cGVUcmFpdHMu
aCI+DQogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFVpbnQxNkFycmF5LmgiPg0KLSAgICAgIDxGaWx0
ZXI+d3RmPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0ZlxVaW50MzJBcnJheS5oIj4NCi0gICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0K
LSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVWludDhB
cnJheS5oIj4NCi0gICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcVmFsdWVDaGVjay5oIj4NCiAgICAgICA8
RmlsdGVyPnd0ZjwvRmlsdGVyPg0KICAgICA8L0NsSW5jbHVkZT4NCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMmFmNjhmNWQwZjg1NDNhMTAyY2U4Mzk1Yzhm
NzA4M2NkODczY2Q4Li43NDkxZmZhMWZjOTg0NTE3OWRlODRlMTY4OTVjZTgxMzg1MTg0YTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3LDEwICs2Nyw2
IEBACiAJCUE3NDg3NDU0MTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NDg3NDUx
MTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCAqLzsgfTsKIAkJQTg3
NkRCRDgxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxh
dGZvcm0uaCAqLzsgfTsKIAkJQThBNDczN0YxNTFBODI1QjAwNDEyM0ZGIC8qIEFsaWdubWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTQx
NTFBODI1QTAwNDEyM0ZGIC8qIEFsaWdubWVudC5oICovOyB9OwotCQlBOEE0NzM4MTE1MUE4MjVC
MDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVy
LmNwcCAqLzsgfTsKLQkJQThBNDczODIxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1NzE1
MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuaCAqLzsgfTsKLQkJQThBNDczODMxNTFBODI1
QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1ODE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCAqLzsgfTsKLQkJQThBNDczODQxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5
QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyNTkxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oICovOyB9Owog
CQlBOEE0NzM4NTE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlDVHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNUExNTFBODI1QTAwNDEyM0ZG
IC8qIEFTQ0lJQ1R5cGUuaCAqLzsgfTsKIAkJQThBNDczODYxNTFBODI1QjAwNDEyM0ZGIC8qIEFz
c2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyNUIxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwICovOyB9OwogCQlB
OEE0NzM4NzE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8q
IEFzc2VydGlvbnMuaCAqLzsgfTsKQEAgLTEyOCw4ICsxMjQsNiBAQAogCQlBOEE0NzNDMzE1MUE4
MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxv
Yy5jcHAgKi87IH07CiAJCUE4QTQ3M0M0MTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBMjE1
MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovOyB9OwogCQlBOEE0NzNDNTE1MUE4MjVC
MDA0MTIzRkYgLyogRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDcyQTMxNTFBODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAq
LzsgfTsKLQkJQThBNDczQzYxNTFBODI1QjAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTQxNTFBODI1
QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oICovOyB9OwotCQlBOEE0NzNDNzE1MUE4MjVCMDA0
MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzJBNTE1MUE4MjVBMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5Lmgg
Ki87IH07CiAJCUE4QTQ3M0M4MTUxQTgyNUIwMDQxMjNGRiAvKiBGb3J3YXJkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNjE1MUE4MjVBMDA0
MTIzRkYgLyogRm9yd2FyZC5oICovOyB9OwogCQlBOEE0NzNDOTE1MUE4MjVCMDA0MTIzRkYgLyog
RnVuY3Rpb25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAqLzsgfTsKIAkJQThB
NDczQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIEdldFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdldFB0
ci5oICovOyB9OwpAQCAtMTQzLDEwICsxMzcsNiBAQAogCQlBOEE0NzNEQTE1MUE4MjVCMDA0MTIz
RkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThBNDcyQkExNTFBODI1QTAwNDEyM0ZGIC8qIEhhc2hUcmFpdHMuaCAqLzsgfTsK
IAkJQThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQkIxNTFBODI1QTAwNDEyM0ZG
IC8qIEhleE51bWJlci5oICovOyB9OwogCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyogSW5s
aW5lQVNNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzJCQzE1MUE4MjVBMDA0MTIzRkYgLyogSW5saW5lQVNNLmggKi87IH07Ci0JCUE4QTQ3M0RE
MTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkJEMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQ4QXJy
YXkuaCAqLzsgfTsKLQkJQThBNDczREUxNTFBODI1QjAwNDEyM0ZGIC8qIEludDE2QXJyYXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkJFMTUx
QTgyNUEwMDQxMjNGRiAvKiBJbnQxNkFycmF5LmggKi87IH07Ci0JCUE4QTQ3M0RGMTUxQTgyNUIw
MDQxMjNGRiAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzJCRjE1MUE4MjVBMDA0MTIzRkYgLyogSW50MzJBcnJheS5oICov
OyB9OwotCQlBOEE0NzNFMDE1MUE4MjVCMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcy
QzAxNTFBODI1QTAwNDEyM0ZGIC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLzsgfTsKIAkJ
QThBNDczRTExNTFBODI1QjAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJDMTE1MUE4MjVBMDA0MTIzRkYg
LyogTGlzdEhhc2hTZXQuaCAqLzsgfTsKIAkJQThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExv
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThB
NDcyQzMxNTFBODI1QTAwNDEyM0ZGIC8qIExvY2tlci5oICovOyB9OwogCQlBOEE0NzNFNDE1MUE4
MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhy
ZWFkTWFjLm1tICovOyB9OwpAQCAtMjUwLDEzICsyNDAsOCBAQAogCQlBOEE0NzQ1MjE1MUE4MjVC
MDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMzQjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2Vt
YXBob3JlLmggKi87IH07CiAJCUE4QTQ3NDU0MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTYWZl
UmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDczM0UxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi87
IH07CiAJCUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczM0YxNTFBODI1
QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmljLmggKi87IH07Ci0JCUE4QTQ3NDU3MTUxQTgyNUIw
MDQxMjNGRiAvKiBUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDczNDExNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlC
YXNlLmggKi87IH07CiAJCUE4QTQ3NDU4MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQy
MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmNwcCAqLzsgfTsKIAkJQThBNDc0NTkxNTFB
ODI1QjAwNDEyM0ZGIC8qIFR5cGVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQzMTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRz
LmggKi87IH07Ci0JCUE4QTQ3NDVBMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFycmF5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0NDE1MUE4
MjVCMDA0MTIzRkYgLyogVWludDhBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1QjE1MUE4MjVCMDA0
MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OENsYW1w
ZWRBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1QzE1MUE4MjVCMDA0MTIzRkYgLyogVWludDE2QXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MzQ2MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MTZBcnJheS5oICovOyB9OwotCQlBOEE0NzQ1RDE1
MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50MzJB
cnJheS5oICovOyB9OwogCQlBOEE0NzQ1RTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFt
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MzQ5MTUxQTgyNUIwMDQxMjNGRiAvKiBDaGFyYWN0ZXJOYW1lcy5oICovOyB9OwogCQlBOEE0NzQ1
RjE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRBMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRv
ci5oICovOyB9OwogCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MzRCMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovOyB9OwpAQCAtMzQ5
LDEwICszMzQsNiBAQAogCQlBNzQ4NzQ1MTE3QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1
bXBDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0hhc2hE
dW1wQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODc2REJENzE1MTgx
NkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNTQxNTFB
ODI1QTAwNDEyM0ZGIC8qIEFsaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBbGlnbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTYx
NTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQThBNDcyNTcxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE4QTQ3MjU4MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlclZpZXcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJWaWV3
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyNTkxNTFBODI1QTAwNDEy
M0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcnJheUJ1ZmZlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcy
NUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVNDSUlDVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3NlcnRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDEzLDggKzM5NCw2IEBACiAJCUE4QTQ3MkExMTUxQTgyNUEwMDQx
MjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZhc3RNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJB
MjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGYXN0TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QTQ3MkEzMTUxQTgyNUEwMDQxMjNGRiAvKiBGaXhlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZpeGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQThBNDcyQTQxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdDMyQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQThBNDcyQTUxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0NjRBcnJheS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdDY0QXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9yd2FyZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0UHRyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjgsMTAgKzQwNyw2IEBACiAJCUE4QTQ3MkJBMTUxQTgy
NUEwMDQxMjNGRiAvKiBIYXNoVHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhhc2hUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQkIx
NTFBODI1QTAwNDEyM0ZGIC8qIEhleE51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIZXhOdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcy
QkMxNTFBODI1QTAwNDEyM0ZGIC8qIElubGluZUFTTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmxpbmVBU00uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDcyQkQxNTFBODI1QTAwNDEyM0ZGIC8qIEludDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnQ4QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QThBNDcyQkUxNTFBODI1QTAwNDEyM0ZGIC8qIEludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50MTZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBOEE0NzJCRjE1MUE4MjVBMDA0MTIzRkYgLyogSW50MzJBcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE4QTQ3MkMwMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVncmFsVHlwZWRBcnJh
eUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzExNTFBODI1QTAw
NDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExpc3RIYXNoU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkMzMTUx
QTgyNUEwMDQxMjNGRiAvKiBMb2NrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTG9ja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkM1MTUxQTgy
NUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWFpblRocmVhZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTUzNSwxMyArNTEwLDggQEAKIAkJQThBNDczM0IxNTFBODI1QjAwNDEyM0ZGIC8qIEJp
bmFyeVNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaW5hcnlT
ZW1hcGhvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczM0UxNTFBODI1
QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRocmVhZFNhZmVSZWZDb3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QTQ3MzNGMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRTcGVjaWZpYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM0MTE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRB
cnJheUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheUJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNDIxNTFBODI1QjAwNDEy
M0ZGIC8qIFR5cGVUcmFpdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVHlwZVRyYWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzQz
MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFR5cGVUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDczNDQxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVWludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBOEE0NzM0NTE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhDbGFtcGVkQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczNDYxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFy
cmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQxNkFycmF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBV
aW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MzJBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM0OTE1MUE4MjVCMDA0MTIz
RkYgLyogQ2hhcmFjdGVyTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2hhcmFjdGVyTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNEEx
NTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbGxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzRC
MTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29sbGF0b3JEZWZhdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYyNiwxMCArNTk2LDYgQEAKIAkJCQlBOEE0NzMzOTE1MUE4MjVCMDA0
MTIzRkYgLyogdGhyZWFkcyAqLywKIAkJCQlBOEE0NzM0ODE1MUE4MjVCMDA0MTIzRkYgLyogdW5p
Y29kZSAqLywKIAkJCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi8s
Ci0JCQkJQThBNDcyNTYxNTFBODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLywKLQkJ
CQlBOEE0NzI1NzE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuaCAqLywKLQkJCQlBOEE0
NzI1ODE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKLQkJCQlBOEE0
NzI1OTE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZmZXJWaWV3LmggKi8sCiAJCQkJQThBNDcy
NUExNTFBODI1QTAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCAqLywKIAkJCQlBOEE0NzI1QjE1MUE4
MjVBMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkJQThBNDcyNUMxNTFBODI1QTAw
NDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLywKQEAgLTY4Miw4ICs2NDgsNiBAQAogCQkJCTBGOUQz
MzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBGOUQz
MzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKIAkJCQlBOEE0NzJB
MzE1MUE4MjVBMDA0MTIzRkYgLyogRml4ZWRBcnJheS5oICovLAotCQkJCUE4QTQ3MkE0MTUxQTgy
NUEwMDQxMjNGRiAvKiBGbG9hdDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzJBNTE1MUE4MjVBMDA0
MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEyM0ZG
IC8qIEZvcndhcmQuaCAqLywKIAkJCQlBOEE0NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rp
b25hbC5oICovLAogCQkJCTFBMUQ4QjlEMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3Bh
dGNoZXIuY3BwICovLApAQCAtNzAyLDEwICs2NjYsNiBAQAogCQkJCUE4QTQ3MkJCMTUxQTgyNUEw
MDQxMjNGRiAvKiBIZXhOdW1iZXIuaCAqLywKIAkJCQlBOEE0NzJCQzE1MUE4MjVBMDA0MTIzRkYg
LyogSW5saW5lQVNNLmggKi8sCiAJCQkJQTcwREEwODIxNzk5RjA0RDAwNTI5QTlCIC8qIEluc2Vy
dGlvbi5oICovLAotCQkJCUE4QTQ3MkJFMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQxNkFycmF5Lmgg
Ki8sCi0JCQkJQThBNDcyQkYxNTFBODI1QTAwNDEyM0ZGIC8qIEludDMyQXJyYXkuaCAqLywKLQkJ
CQlBOEE0NzJCRDE1MUE4MjVBMDA0MTIzRkYgLyogSW50OEFycmF5LmggKi8sCi0JCQkJQThBNDcy
QzAxNTFBODI1QTAwNDEyM0ZGIC8qIEludGVncmFsVHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQlB
NzBEQTA4MzE3OTlGMDREMDA1MjlBOUIgLyogTGlzdER1bXAuaCAqLywKIAkJCQlBOEE0NzJDMTE1
MUE4MjVBMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCAqLywKIAkJCQlBNzM2QjM1ODE3OTlFMTFB
MDBDNkYwNUUgLyogTExWTUhlYWRlcnMuaCAqLywKQEAgLTgxNiwxMyArNzc2LDggQEAKIAkJCQlB
OEE0NzMzRTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCAqLywKIAkJ
CQlBOEE0NzMzRjE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCAqLywKIAkJCQkx
NDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCAqLywKLQkJCQlBOEE0NzM0MTE1
MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRBcnJheUJhc2UuaCAqLywKIAkJCQlBOEE0NzM0MjE1MUE4
MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5jcHAgKi8sCiAJCQkJQThBNDczNDMxNTFBODI1QjAw
NDEyM0ZGIC8qIFR5cGVUcmFpdHMuaCAqLywKLQkJCQlBOEE0NzM0NjE1MUE4MjVCMDA0MTIzRkYg
LyogVWludDE2QXJyYXkuaCAqLywKLQkJCQlBOEE0NzM0NzE1MUE4MjVCMDA0MTIzRkYgLyogVWlu
dDMyQXJyYXkuaCAqLywKLQkJCQlBOEE0NzM0NDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDhBcnJh
eS5oICovLAotCQkJCUE4QTQ3MzQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OENsYW1wZWRBcnJh
eS5oICovLAogCQkJCUE4QTQ3MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywK
IAkJCQlBOEE0NzM2RjE1MUE4MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLAogCQkJCUE4
QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKQEAgLTk0NSw4ICs5MDAsNiBA
QAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUE4
QTQ3MzdGMTUxQTgyNUIwMDQxMjNGRiAvKiBBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUE4QTQ3MzgyMTUxQTgyNUIwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQThBNDczODQxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczODUxNTFBODI1QjAwNDEyM0ZGIC8qIEFTQ0lJQ1R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDM0MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZhc3RQ
YXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzM4NzE1MUE4MjVCMDA0MTIzRkYgLyogQXNz
ZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA1LDggKzk1OCw2IEBACiAJCQkJMEY5RDMz
NjExNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczQjYxNTFBODI1QjAwNDEyM0ZGIC8qIGZpeGVkLWR0b2EuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4QTQ3M0M1MTUxQTgyNUIwMDQxMjNGRiAvKiBGaXhlZEFycmF5LmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBOEE0NzNDNjE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggaW4g
SGVhZGVycyAqLywKLQkJCQlBOEE0NzNDNzE1MUE4MjVCMDA0MTIzRkYgLyogRmxvYXQ2NEFycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNDODE1MUE4MjVCMDA0MTIzRkYgLyogRm9yd2Fy
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzkxNTFBODI1QjAwNDEyM0ZGIC8qIEZ1bmN0
aW9uYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUQ4QjlDMTczMTg2Q0UwMDE0MURBNCAvKiBG
dW5jdGlvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyMiwxMSArOTczLDcgQEAK
IAkJCQlBOEE0NzNEQjE1MUE4MjVCMDA0MTIzRkYgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyogSW5saW5lQVNNLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzBEQTA4NDE3OTlGMDREMDA1MjlBOUIgLyogSW5zZXJ0aW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlBOEE0NzNERTE1MUE4MjVCMDA0MTIzRkYgLyogSW50MTZBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQThBNDczREYxNTFBODI1QjAwNDEyM0ZGIC8qIEludDMyQXJyYXku
aCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3M0REMTUxQTgyNUIwMDQxMjNGRiAvKiBJbnQ4QXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzNFMDE1MUE4
MjVCMDA0MTIzRkYgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTcwREEwODUxNzk5RjA0RDAwNTI5QTlCIC8qIExpc3REdW1wLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFMTE1MUE4MjVCMDA0MTIzRkYgLyogTGlzdEhhc2hTZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3M0UzMTUxQTgyNUIwMDQxMjNGRiAvKiBMb2NrZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTExNywxMiArMTA2NCw3IEBACiAJCQkJQThBNDc0NTQxNTFBODI1QjAwNDEyM0ZG
IC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NTE1
MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
OUVGMTYzMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QThBNDc0NTcxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQ1OTE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQThBNDc0NUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVpbnQxNkFycmF5LmggaW4g
SGVhZGVycyAqLywKLQkJCQlBOEE0NzQ1RDE1MUE4MjVCMDA0MTIzRkYgLyogVWludDMyQXJyYXku
aCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3NDVBMTUxQTgyNUIwMDQxMjNGRiAvKiBVaW50OEFy
cmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOEE0NzQ1QjE1MUE4MjVCMDA0MTIzRkYgLyogVWlu
dDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDY3MTUxQTgyNUIwMDQx
MjNGRiAvKiBVbmljb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ2NDE1MUE4MjVCMDA0
MTIzRkYgLyogVW5pY29kZUljdS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NjgxNTFBODI1
QjAwNDEyM0ZGIC8qIFVuaWNvZGVNYWNyb3NGcm9tSUNVLmggaW4gSGVhZGVycyAqLywKQEAgLTEy
MDgsOCArMTE1MCw2IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlBOEE0NzM4MTE1MUE4
MjVCMDA0MTIzRkYgLyogQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDcz
ODMxNTFBODI1QjAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzM4NjE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQzNTE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbWljU3RyaW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJp
bmdUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fy
cmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDViNTdmZTljNmZiY2EwNjY0ODg2ODdkY2E3MDA2YzI4MjMz
MTI4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgi
Ci0KLSNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1ib29sIEFy
cmF5QnVmZmVyOjp0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQsIFZlY3RvcjxS
ZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiA+JiBuZXV0ZXJlZFZpZXdzKQotewotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4ga2VlcEFsaXZlKHRoaXMpOwotCi0gICAgaWYgKCFtX2NvbnRlbnRzLm1fZGF0
YSkgewotICAgICAgICByZXN1bHQubV9kYXRhID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGJvb2wgYWxsVmlld3NBcmVOZXV0ZXJhYmxlID0gdHJ1ZTsKLSAgICBmb3Ig
KEFycmF5QnVmZmVyVmlldyogaSA9IG1fZmlyc3RWaWV3OyBpOyBpID0gaS0+bV9uZXh0Vmlldykg
ewotICAgICAgICBpZiAoIWktPmlzTmV1dGVyYWJsZSgpKQotICAgICAgICAgICAgYWxsVmlld3NB
cmVOZXV0ZXJhYmxlID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGFsbFZpZXdzQXJlTmV1dGVy
YWJsZSkKLSAgICAgICAgbV9jb250ZW50cy50cmFuc2ZlcihyZXN1bHQpOwotICAgIGVsc2Ugewot
ICAgICAgICBtX2NvbnRlbnRzLmNvcHlUbyhyZXN1bHQpOwotICAgICAgICBpZiAoIXJlc3VsdC5t
X2RhdGEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgd2hpbGUgKG1f
Zmlyc3RWaWV3KSB7Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldyogY3VycmVudCA9IG1fZmlyc3RW
aWV3OwotICAgICAgICByZW1vdmVWaWV3KGN1cnJlbnQpOwotICAgICAgICBpZiAoYWxsVmlld3NB
cmVOZXV0ZXJhYmxlIHx8IGN1cnJlbnQtPmlzTmV1dGVyYWJsZSgpKQotICAgICAgICAgICAgY3Vy
cmVudC0+bmV1dGVyKCk7Ci0gICAgICAgIG5ldXRlcmVkVmlld3MuYXBwZW5kKGN1cnJlbnQpOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBcnJheUJ1ZmZlcjo6YWRkVmlldyhB
cnJheUJ1ZmZlclZpZXcqIHZpZXcpCi17Ci0gICAgdmlldy0+bV9idWZmZXIgPSB0aGlzOwotICAg
IHZpZXctPm1fcHJldlZpZXcgPSAwOwotICAgIHZpZXctPm1fbmV4dFZpZXcgPSBtX2ZpcnN0Vmll
dzsKLSAgICBpZiAobV9maXJzdFZpZXcpCi0gICAgICAgIG1fZmlyc3RWaWV3LT5tX3ByZXZWaWV3
ID0gdmlldzsKLSAgICBtX2ZpcnN0VmlldyA9IHZpZXc7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXI6
OnJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3KiB2aWV3KQotewotICAgIEFTU0VSVCh0aGlzID09
IHZpZXctPm1fYnVmZmVyKTsKLSAgICBpZiAodmlldy0+bV9uZXh0VmlldykKLSAgICAgICAgdmll
dy0+bV9uZXh0Vmlldy0+bV9wcmV2VmlldyA9IHZpZXctPm1fcHJldlZpZXc7Ci0gICAgaWYgKHZp
ZXctPm1fcHJldlZpZXcpCi0gICAgICAgIHZpZXctPm1fcHJldlZpZXctPm1fbmV4dFZpZXcgPSB2
aWV3LT5tX25leHRWaWV3OwotICAgIGlmIChtX2ZpcnN0VmlldyA9PSB2aWV3KQotICAgICAgICBt
X2ZpcnN0VmlldyA9IHZpZXctPm1fbmV4dFZpZXc7Ci0gICAgdmlldy0+bV9wcmV2VmlldyA9IHZp
ZXctPm1fbmV4dFZpZXcgPSAwOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9B
cnJheUJ1ZmZlci5oIGIvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2UwYTFiM2MzZTNkNjM1MTdjNjcyYWFkYWI3YTc3NzE2NDQwODg4
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9BcnJheUJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaWZuZGVmIEFycmF5QnVmZmVyX2gKLSNkZWZpbmUgQXJyYXlCdWZmZXJfaAotCi0j
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBBcnJheUJ1ZmZlclZpZXc7
Ci0KLWNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFycmF5QnVmZmVyQ29udGVudHMpOwotcHVibGljOgotICAgIEFycmF5QnVmZmVyQ29udGVudHMo
KSAKLSAgICAgICAgOiBtX2RhdGEoMCkKLSAgICAgICAgLCBtX3NpemVJbkJ5dGVzKDApCi0gICAg
eyB9Ci0KLSAgICBpbmxpbmUgfkFycmF5QnVmZmVyQ29udGVudHMoKTsKLQotICAgIHZvaWQqIGRh
dGEoKSB7IHJldHVybiBtX2RhdGE7IH0KLSAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIHsgcmV0
dXJuIG1fc2l6ZUluQnl0ZXM7IH0KLQotcHJpdmF0ZToKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
KHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzKSAKLSAgICAgICAgOiBtX2RhdGEoZGF0
YSkKLSAgICAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQotICAgIHsgfQotCi0gICAg
ZnJpZW5kIGNsYXNzIEFycmF5QnVmZmVyOwotCi0gICAgZW51bSBJbml0aWFsaXphdGlvblBvbGlj
eSB7Ci0gICAgICAgIFplcm9Jbml0aWFsaXplLAotICAgICAgICBEb250SW5pdGlhbGl6ZQotICAg
IH07Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3ksIEFy
cmF5QnVmZmVyQ29udGVudHMmKTsKLSAgICB2b2lkIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVu
dHMmIG90aGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFvdGhlci5tX2RhdGEpOwotICAgICAg
ICBvdGhlci5tX2RhdGEgPSBtX2RhdGE7Ci0gICAgICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBt
X3NpemVJbkJ5dGVzOwotICAgICAgICBtX2RhdGEgPSAwOwotICAgICAgICBtX3NpemVJbkJ5dGVz
ID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhl
cikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghb3RoZXIubV9kYXRhKTsKLSAgICAgICAgQXJyYXlC
dWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUobV9zaXplSW5CeXRlcywgc2l6ZW9mKGNoYXIpLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSwgb3RoZXIpOwotICAgICAgICBpZiAo
IW90aGVyLm1fZGF0YSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbWVtY3B5KG90aGVy
Lm1fZGF0YSwgbV9kYXRhLCBtX3NpemVJbkJ5dGVzKTsKLSAgICAgICAgb3RoZXIubV9zaXplSW5C
eXRlcyA9IG1fc2l6ZUluQnl0ZXM7Ci0gICAgfQotCi0gICAgdm9pZCogbV9kYXRhOwotICAgIHVu
c2lnbmVkIG1fc2l6ZUluQnl0ZXM7Ci19OwotCi1jbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXIqKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFy
cmF5QnVmZmVyQ29udGVudHMmKTsKLQotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0KLSAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwot
ICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVk
IGJ5dGVMZW5ndGgoKSBjb25zdDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBzbGljZShpbnQgYmVnaW4sIGludCBlbmQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4pIGNvbnN0OwotCi0gICAgdm9pZCBhZGRWaWV3
KEFycmF5QnVmZmVyVmlldyopOwotICAgIHZvaWQgcmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcq
KTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29u
dGVudHMmLCBWZWN0b3I8UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cyk7
Ci0gICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fY29udGVudHMubV9kYXRhOyB9Ci0K
LSAgICB+QXJyYXlCdWZmZXIoKSB7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSk7Ci0KLSAgICBpbmxpbmUgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYpOwot
ICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVn
aW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgo
aW50IGluZGV4KSBjb25zdDsKLSAgICBzdGF0aWMgaW5saW5lIGludCBjbGFtcFZhbHVlKGludCB4
LCBpbnQgbGVmdCwgaW50IHJpZ2h0KTsKLQotICAgIEFycmF5QnVmZmVyQ29udGVudHMgbV9jb250
ZW50czsKLSAgICBBcnJheUJ1ZmZlclZpZXcqIG1fZmlyc3RWaWV3OwotfTsKLQotaW50IEFycmF5
QnVmZmVyOjpjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KQotewotICAgIEFT
U0VSVChsZWZ0IDw9IHJpZ2h0KTsKLSAgICBpZiAoeCA8IGxlZnQpCi0gICAgICAgIHggPSBsZWZ0
OwotICAgIGlmIChyaWdodCA8IHgpCi0gICAgICAgIHggPSByaWdodDsKLSAgICByZXR1cm4geDsK
LX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQotewotICAgIHJldHVybiBj
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
WmVyb0luaXRpYWxpemUpOwotfQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKEFycmF5QnVmZmVyKiBvdGhlcikKLXsKLSAgICByZXR1cm4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShvdGhlci0+ZGF0YSgpLCBvdGhlci0+Ynl0ZUxlbmd0aCgpKTsKLX0KLQotUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi17Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50
czsKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6ZSwgY29udGVudHMpOwotICAgIGlmICgh
Y29udGVudHMubV9kYXRhKQotICAgICAgICByZXR1cm4gMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IGFkb3B0UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOwotICAgIG1l
bWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiBjb250ZW50cykKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlh
bGl6ZSk7Ci19Ci0KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQotewotICAgIEFycmF5QnVm
ZmVyQ29udGVudHMgY29udGVudHM7Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2Nh
dGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5LCBjb250ZW50cyk7Ci0gICAg
aWYgKCFjb250ZW50cy5tX2RhdGEpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVudHMpKTsKLX0KLQotQXJyYXlCdWZmZXI6OkFycmF5
QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmIGNvbnRlbnRzKQotICAgIDogbV9maXJzdFZpZXco
MCkKLXsKLSAgICBjb250ZW50cy50cmFuc2ZlcihtX2NvbnRlbnRzKTsKLX0KLQotdm9pZCogQXJy
YXlCdWZmZXI6OmRhdGEoKQotewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKLX0KLQot
Y29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2Nv
bnRlbnRzLm1fZGF0YTsKLX0KLQotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBj
b25zdAotewotICAgIHJldHVybiBtX2NvbnRlbnRzLm1fc2l6ZUluQnl0ZXM7Ci19Ci0KLVBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShpbnQgYmVnaW4sIGludCBlbmQp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJ
bmRleChlbmQpKTsKLX0KLQotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlKGludCBiZWdpbikgY29uc3QKLXsKLSAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgo
YmVnaW4pLCBieXRlTGVuZ3RoKCkpOwotfQotCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Ci17
Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKLSAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKSArIGJlZ2luLCBzaXplKTsKLX0KLQotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoaW50IGluZGV4KSBjb25zdAotewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRl
TGVuZ3RoKCk7Ci0gICAgaWYgKGluZGV4IDwgMCkKLSAgICAgICAgaW5kZXggPSBjdXJyZW50TGVu
Z3RoICsgaW5kZXg7Ci0gICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5n
dGgpOwotfQotCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVu
dHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVz
dWx0KQotewotICAgIC8vIERvIG5vdCBhbGxvdyAzMi1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFs
IHNpemUuCi0gICAgLy8gRklYTUU6IFdoeSBub3Q/IFRoZSB0cnlGYXN0Q2FsbG9jIGZ1bmN0aW9u
IGFscmVhZHkgY2hlY2tzIGl0cyBhcmd1bWVudHMsCi0gICAgLy8gYW5kIHdpbGwgZmFpbCBpZiB0
aGVyZSBpcyBhbnkgb3ZlcmZsb3csIHNvIHdoeSBzaG91bGQgd2UgaW5jbHVkZSBhCi0gICAgLy8g
cmVkdWRhbnQgdW5uZWNlc3NhcmlseSByZXN0cmljdGl2ZSBjaGVjayBoZXJlPwotICAgIGlmIChu
dW1FbGVtZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAq
IGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9
IGVsZW1lbnRCeXRlU2l6ZSkgewotICAgICAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IDA7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgYm9vbCBhbGxvY2F0aW9uU3Vj
Y2VlZGVkID0gZmFsc2U7Ci0gICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKLSAgICAg
ICAgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IFdURjo6dHJ5RmFzdENhbGxvYyhudW1FbGVtZW50cywg
ZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1bHQubV9kYXRhKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKHBvbGljeSA9PSBEb250SW5pdGlhbGl6ZSk7Ci0gICAgICAgIGFsbG9jYXRp
b25TdWNjZWVkZWQgPSBXVEY6OnRyeUZhc3RNYWxsb2MobnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0
ZVNpemUpLmdldFZhbHVlKHJlc3VsdC5tX2RhdGEpOwotICAgIH0KLQotICAgIGlmIChhbGxvY2F0
aW9uU3VjY2VlZGVkKSB7Ci0gICAgICAgIHJlc3VsdC5tX3NpemVJbkJ5dGVzID0gbnVtRWxlbWVu
dHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVzdWx0
Lm1fZGF0YSA9IDA7Ci19Ci0KLUFycmF5QnVmZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRl
bnRzKCkKLXsKLSAgICBXVEY6OmZhc3RGcmVlKG1fZGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgotCi11c2luZyBXVEY6OkFycmF5QnVmZmVyOwotCi0jZW5kaWYgLy8gQXJyYXlCdWZmZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDIwMmIzYTJlNDE3ZmRkZjE0YmZkMjEyMDhkMDg1YTYyNTVkMzVlNDIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvQXJyYXlC
dWZmZXJWaWV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLSNpbmNs
dWRlICJBcnJheUJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotQXJyYXlCdWZmZXJWaWV3
OjpBcnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KQotICAgICAgICA6IG1fYnl0ZU9m
ZnNldChieXRlT2Zmc2V0KQotICAgICAgICAsIG1faXNOZXV0ZXJhYmxlKHRydWUpCi0gICAgICAg
ICwgbV9idWZmZXIoYnVmZmVyKQotICAgICAgICAsIG1fcHJldlZpZXcoMCkKLSAgICAgICAgLCBt
X25leHRWaWV3KDApCi17Ci0gICAgbV9iYXNlQWRkcmVzcyA9IG1fYnVmZmVyID8gKHN0YXRpY19j
YXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSArIG1fYnl0ZU9mZnNldCkgOiAwOwotICAgIGlm
IChtX2J1ZmZlcikgCi0gICAgICAgIG1fYnVmZmVyLT5hZGRWaWV3KHRoaXMpOwotfQotCi1BcnJh
eUJ1ZmZlclZpZXc6On5BcnJheUJ1ZmZlclZpZXcoKQotewotICAgIGlmIChtX2J1ZmZlcikKLSAg
ICAgICAgbV9idWZmZXItPnJlbW92ZVZpZXcodGhpcyk7Ci19Ci0KLXZvaWQgQXJyYXlCdWZmZXJW
aWV3OjpuZXV0ZXIoKQotewotICAgIG1fYnVmZmVyID0gMDsKLSAgICBtX2J5dGVPZmZzZXQgPSAw
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaCBi
L1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzYjcwOGZiZGZmYWI5MWQ2ZjU2NDBiMWZkN2RlZjQxZTYzMDk2MTBlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fy
cmF5QnVmZmVyVmlldy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIEFycmF5QnVmZmVyVmlld19oCi0jZGVmaW5lIEFycmF5QnVmZmVyVmlld19oCi0K
LSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNp
bmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlC
dWZmZXJWaWV3PiB7Ci0gIHB1YmxpYzoKLSAgICBlbnVtIFZpZXdUeXBlIHsKLSAgICAgICAgVHlw
ZUludDgsCi0gICAgICAgIFR5cGVVaW50OCwKLSAgICAgICAgVHlwZVVpbnQ4Q2xhbXBlZCwKLSAg
ICAgICAgVHlwZUludDE2LAotICAgICAgICBUeXBlVWludDE2LAotICAgICAgICBUeXBlSW50MzIs
Ci0gICAgICAgIFR5cGVVaW50MzIsCi0gICAgICAgIFR5cGVGbG9hdDMyLAotICAgICAgICBUeXBl
RmxvYXQ2NCwKLSAgICAgICAgVHlwZURhdGFWaWV3Ci0gICAgfTsKLSAgICB2aXJ0dWFsIFZpZXdU
eXBlIGdldFR5cGUoKSBjb25zdCA9IDA7Ci0KLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyOwotICAgIH0KLQot
ICAgIHZvaWQqIGJhc2VBZGRyZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jh
c2VBZGRyZXNzOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCA9IDA7Ci0KLSAgICB2b2lkIHNldE5ldXRlcmFibGUo
Ym9vbCBmbGFnKSB7IG1faXNOZXV0ZXJhYmxlID0gZmxhZzsgfQotICAgIGJvb2wgaXNOZXV0ZXJh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc05ldXRlcmFibGU7IH0KLQotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKLQotICBwcm90ZWN0ZWQ6Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0KLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5
QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotCi0gICAgaW5saW5lIGJvb2wgc2V0
UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCk7Ci0KLSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGlu
ZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2ln
bmVkIGFycmF5U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7Ci0KLSAgICAvLyBIZWxwZXIgdG8g
dmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAv
LyB3aXRoaW4gcmFuZ2UuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJv
b2wgdmVyaWZ5U3ViUmFuZ2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMpCi0gICAgewotICAgICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHNp
emVvZihUKSA+IDEgJiYgYnl0ZU9mZnNldCAlIHNpemVvZihUKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxl
bWVudHMgPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBieXRlT2Zmc2V0KSAvIHNpemVvZihUKTsK
LSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIElu
cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3Mgdmll
dzsKLSAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1
bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAg
c3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyhQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQotICAgIHsKLSAgICAgICAgdW5z
aWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihU
KTsKLSAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKLSAgICAgICAgICAgICpvZmZz
ZXQgPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5
Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6
Om1pbihidWZmZXItPmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJl
bWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXpl
b2YoVCk7Ci0gICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRz
LCAqbnVtRWxlbWVudHMpOwotICAgIH0KLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFs
IHZvaWQgbmV1dGVyKCk7Ci0KLSAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJh
eUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgotICAgIHZvaWQqIG1fYmFz
ZUFkZHJlc3M7Ci0KLSAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKLSAgICBib29sIG1f
aXNOZXV0ZXJhYmxlIDogMTsKLQotICBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1
ZmZlcjsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwotICAgIEFycmF5QnVmZmVy
VmlldyogbV9wcmV2VmlldzsKLSAgICBBcnJheUJ1ZmZlclZpZXcqIG1fbmV4dFZpZXc7Ci19Owot
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1
bnNpZ25lZCBieXRlT2Zmc2V0KQotewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9m
ZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgY2hhciogYmFzZSA9IHN0YXRpY19j
YXN0PGNoYXIqPihiYXNlQWRkcmVzcygpKTsKLSAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0
LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQotewot
ICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQg
KyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsg
ZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBv
ZmZzZXQgb3Igb3ZlcmZsb3cKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAg
ICBjaGFyKiBiYXNlID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOwotICAgIG1l
bW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWdu
ZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKLXsKLSAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVu
Z3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5n
dGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3Zl
cmZsb3cKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBjaGFyKiBiYXNl
ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOwotICAgIG1lbXNldChiYXNlICsg
Ynl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3RhcnQs
IGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCkK
LXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCArPSBhcnJheVNpemU7Ci0gICAg
aWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAgIGlmIChlbmQgPCAwKQotICAg
ICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgPSAw
OwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAg
ICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFydCkKLSAgICAgICAgZW5kID0g
c3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydCk7Ci0gICAg
Kmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkFycmF5QnVmZmVyVmlldzsKLQotI2VuZGlmIC8v
IEFycmF5QnVmZmVyVmlld19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGM2MTM3MzZhYjVjMTVl
NzljZmE5MTE1NDExNTM5NGRlOTgxZjU4MTAuLjA4NjBlZTlhNjU1MDIwMGYyNTVhYTdjYjY3ZTRl
MmJkZDNhNDgwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNDUsOCArMTQ1LDYgQEAgc2V0
KFdURl9IRUFERVJTCiApCiAKIHNldChXVEZfU09VUkNFUwotICAgIEFycmF5QnVmZmVyLmNwcAot
ICAgIEFycmF5QnVmZmVyVmlldy5jcHAKICAgICBBc3NlcnRpb25zLmNwcAogICAgIEF0b21pY3Mu
Y3BwCiAgICAgQml0VmVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmxvYXQz
MkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjY3MmEwYWZmNjMyNjFhNTAzNmFhMjU3ZWUyMWE4NzU5NmE4NDQ2My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GbG9hdDMyQXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaWZuZGVmIEZsb2F0MzJBcnJheV9oCi0jZGVmaW5lIEZsb2F0MzJBcnJheV9oCi0KLSNp
bmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgRmxvYXQzMkFycmF5IDogcHVibGljIFR5cGVk
QXJyYXlCYXNlPGZsb2F0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEZsb2F0MzJBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3JlYXRlKGNvbnN0IGZsb2F0KiBhcnJheSwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5
PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMg
a25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0
dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcg
Zmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gY3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJh
c2U8ZmxvYXQ+OjpzZXQ7Ci0KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZh
bHVlKQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6
bV9sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFR5cGVkQXJyYXlCYXNlPGZs
b2F0Pjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSk7Ci0gICAgfQot
Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQp
IGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50
IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlwZSgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZUZsb2F0MzI7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIGlubGluZSBGbG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0g
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRv
IHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGZsb2F0PjsKLX07
Ci0KLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0Pjo6Y3JlYXRlPEZs
b2F0MzJBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0
MzJBcnJheTo6Y3JlYXRlKGNvbnN0IGZsb2F0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotewot
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGFy
cmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5
OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPGZsb2F0
Pjo6Y3JlYXRlPEZsb2F0MzJBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwotfQot
Ci1QYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8ZmxvYXQ+
OjpjcmVhdGVVbmluaXRpYWxpemVkPEZsb2F0MzJBcnJheT4obGVuZ3RoKTsKLX0KLQotRmxvYXQz
MkFycmF5OjpGbG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBUeXBlZEFycmF5QmFzZTxm
bG9hdD4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8Rmxv
YXQzMkFycmF5PiBGbG9hdDMyQXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9h
dDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25z
dAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8RmxvYXQzMkFycmF5PihzdGFydCwgZW5kKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6RmxvYXQzMkFycmF5OwotCi0j
ZW5kaWYgLy8gRmxvYXQzMkFycmF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zsb2F0
NjRBcnJheS5oIGIvU291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNhOTMwY2UwMDhlOWZkODZiNDljYjNlYjk0ZjQ4MzRkMjZlMjc4ZGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmxvYXQ2NEFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEZsb2F0NjRBcnJheV9oCi0jZGVmaW5lIEZsb2F0NjRBcnJheV9oCi0KLSNp
bmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgRmxvYXQ2NEFycmF5IDogcHVibGljIFR5cGVk
QXJyYXlCYXNlPGRvdWJsZT4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJy
YXk+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBp
cyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCBy
ZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGlu
ZyBmaXJzdC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5
QmFzZTxkb3VibGU+OjpzZXQ7Ci0KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91Ymxl
IHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPGRvdWJs
ZT46Om1fbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBUeXBlZEFycmF5QmFz
ZTxkb3VibGU+OjpkYXRhKClbaW5kZXhdID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Ci0g
ICAgfQotCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQg
c3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJy
YXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0
VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZUZsb2F0NjQ7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIGlubGluZSBGbG9hdDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sCi0gICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRv
IHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlCYXNlPGRvdWJsZT47Ci19
OwotCi1QYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8
RmxvYXQ2NEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxv
YXQ2NEFycmF5OjpjcmVhdGUoY29uc3QgZG91YmxlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQot
ewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5
PihhcnJheSwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IEZsb2F0NjRB
cnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxk
b3VibGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7
Ci19Ci0KLVBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxk
b3VibGU+OjpjcmVhdGVVbmluaXRpYWxpemVkPEZsb2F0NjRBcnJheT4obGVuZ3RoKTsKLX0KLQot
RmxvYXQ2NEFycmF5OjpGbG9hdDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBUeXBlZEFycmF5
QmFzZTxkb3VibGU+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVm
UHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEZsb2F0NjRBcnJheT4oc3RhcnQs
IGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkZsb2F0NjRBcnJh
eTsKLQotI2VuZGlmIC8vIEZsb2F0NjRBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggODJjMmUxODFhYzYy
ZTQ3NzgxMzJhMDM5MjcwMWFiMTlhNDNjMjliYy4uMmE0NzUwM2NiYzM0MDAzZWIwN2U0OWMzYmU2
ZDRjOWNjNDU5YzQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMzMsMzAgKzMzLDE5IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmUHRyOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBjbGFzcyBW
ZWN0b3I7Ci0gICAgCi0gICAgY2xhc3MgQXJyYXlCdWZmZXI7Ci0gICAgY2xhc3MgQXJyYXlCdWZm
ZXJWaWV3OworCiAgICAgY2xhc3MgQXRvbWljU3RyaW5nOwogICAgIGNsYXNzIEF0b21pY1N0cmlu
Z0ltcGw7CiAgICAgY2xhc3MgQmluYXJ5U2VtYXBob3JlOwogICAgIGNsYXNzIENTdHJpbmc7CiAg
ICAgY2xhc3MgRGVjb2RlcjsKICAgICBjbGFzcyBFbmNvZGVyOwotICAgIGNsYXNzIEZsb2F0MzJB
cnJheTsKLSAgICBjbGFzcyBGbG9hdDY0QXJyYXk7CiAgICAgY2xhc3MgRnVuY3Rpb25EaXNwYXRj
aGVyOwotICAgIGNsYXNzIEludDhBcnJheTsKLSAgICBjbGFzcyBJbnQxNkFycmF5OwotICAgIGNs
YXNzIEludDMyQXJyYXk7CiAgICAgY2xhc3MgUHJpbnRTdHJlYW07CiAgICAgY2xhc3MgU3RyaW5n
OwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiAgICAgY2xh
c3MgU3RyaW5nQnVpbGRlcjsKICAgICBjbGFzcyBTdHJpbmdJbXBsOwotICAgIGNsYXNzIFVpbnQ4
QXJyYXk7Ci0gICAgY2xhc3MgVWludDhDbGFtcGVkQXJyYXk7Ci0gICAgY2xhc3MgVWludDE2QXJy
YXk7Ci0gICAgY2xhc3MgVWludDMyQXJyYXk7CiB9CiAKIHVzaW5nIFdURjo6RnVuY3Rpb247CkBA
IC02OCwyOCArNTcsMTcgQEAgdXNpbmcgV1RGOjpQYXNzUmVmUHRyOwogdXNpbmcgV1RGOjpSZWZQ
dHI7CiB1c2luZyBXVEY6OlZlY3RvcjsKIAotdXNpbmcgV1RGOjpBcnJheUJ1ZmZlcjsKLXVzaW5n
IFdURjo6QXJyYXlCdWZmZXJWaWV3OwogdXNpbmcgV1RGOjpBdG9taWNTdHJpbmc7CiB1c2luZyBX
VEY6OkF0b21pY1N0cmluZ0ltcGw7CiB1c2luZyBXVEY6OkJpbmFyeVNlbWFwaG9yZTsKIHVzaW5n
IFdURjo6Q1N0cmluZzsKIHVzaW5nIFdURjo6RW5jb2RlcjsKIHVzaW5nIFdURjo6RGVjb2RlcjsK
LXVzaW5nIFdURjo6RmxvYXQzMkFycmF5OwotdXNpbmcgV1RGOjpGbG9hdDY0QXJyYXk7CiB1c2lu
ZyBXVEY6OkZ1bmN0aW9uRGlzcGF0Y2hlcjsKLXVzaW5nIFdURjo6SW50OEFycmF5OwotdXNpbmcg
V1RGOjpJbnQxNkFycmF5OwotdXNpbmcgV1RGOjpJbnQzMkFycmF5OwogdXNpbmcgV1RGOjpQcmlu
dFN0cmVhbTsKIHVzaW5nIFdURjo6U3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmdCdWZmZXI7CiB1
c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7Ci11c2luZyBX
VEY6OlVpbnQ4QXJyYXk7Ci11c2luZyBXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OwotdXNpbmcgV1RG
OjpVaW50MTZBcnJheTsKLXVzaW5nIFdURjo6VWludDMyQXJyYXk7CiAKICNlbmRpZiAvLyBXVEZf
Rm9yd2FyZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxNkFycmF5LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9JbnQxNkFycmF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdk
NWE1NzlhNzI4MWJhOGZmYjNmOTgxYTJlMDg0ZTJkZjVjNTQ4NmEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvSW50MTZBcnJheS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEludDE2
QXJyYXlfaAotI2RlZmluZSBJbnQxNkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsK
LQotY2xhc3MgSW50MTZBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHNob3J0
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQx
NkFycmF5PiBjcmVhdGUoY29uc3Qgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAg
ICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJh
eSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGly
ZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKTsKLQotICAgIHVzaW5nIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6c2V0OwotICAgIHVz
aW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8c2hvcnQ+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFz
c1JlZlB0cjxJbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGlu
ZSBQYXNzUmVmUHRyPEludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFR5cGVJbnQxNjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEludDE2
QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgLy8gTWFrZSBjb25zdHJ1Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5k
IGNsYXNzIFR5cGVkQXJyYXlCYXNlPHNob3J0PjsKLX07Ci0KLVBhc3NSZWZQdHI8SW50MTZBcnJh
eT4gSW50MTZBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8c2hvcnQ+OjpjcmVhdGU8SW50MTZBcnJheT4obGVuZ3RoKTsKLX0KLQotUGFz
c1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpjcmVhdGUoY29uc3Qgc2hvcnQqIGFycmF5
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNob3J0Pjo6
Y3JlYXRlPEludDE2QXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDE2
QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8c2hvcnQ+OjpjcmVhdGU8SW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5
QmFzZTxzaG9ydD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50MTZBcnJheT4obGVuZ3RoKTsKLX0K
LQotSW50MTZBcnJheTo6SW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVncmFsVHlw
ZWRBcnJheUJhc2U8c2hvcnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotewotfQotCi1Q
YXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCkgY29u
c3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotUGFzc1Jl
ZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJbnQxNkFycmF5PihzdGFydCwgZW5k
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6SW50MTZBcnJheTsKLQot
I2VuZGlmIC8vIEludDE2QXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50MzJB
cnJheS5oIGIvU291cmNlL1dURi93dGYvSW50MzJBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0NWE5OTc4MDlhMjkzZWZkZmJlZDk4NzA3Nzc2NDhjZWRjNDgxYzAxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0ludDMyQXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aWZuZGVmIEludDMyQXJyYXlfaAotI2RlZmluZSBJbnQzMkFycmF5X2gKLQotI2luY2x1ZGUgPHd0
Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBJ
bnQzMkFycmF5IDogcHVibGljIEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50PiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBjcmVh
dGUoY29uc3QgaW50KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9u
bHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxs
ZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFT
Y3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxJbnQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAg
ICB1c2luZyBUeXBlZEFycmF5QmFzZTxpbnQ+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBl
ZEFycmF5QmFzZTxpbnQ+OjpzZXQ7Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxJbnQzMkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPEludDMy
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFs
IFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQz
MjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIEludDMyQXJyYXkoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9y
IHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8
aW50PjsKLX07Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRl
PEludDMyQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJB
cnJheTo6Y3JlYXRlKGNvbnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMyQXJyYXk+KGFycmF5LCBsZW5n
dGgpOwotfQotCi1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OmNyZWF0ZShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlPEludDMy
QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQz
MkFycmF5PiBJbnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkK
LXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8aW50Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxJ
bnQzMkFycmF5PihsZW5ndGgpOwotfQotCi1JbnQzMkFycmF5OjpJbnQzMkFycmF5KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQotICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTxpbnQ+KGJ1ZmZlciwgYnl0ZU9mZnNl
dCwgbGVuZ3RoKQotewotfQotCi1QYXNzUmVmUHRyPEludDMyQXJyYXk+IEludDMyQXJyYXk6OnN1
YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxl
bmd0aCgpKTsKLX0KLQotUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBJbnQzMkFycmF5OjpzdWJhcnJh
eShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxJ
bnQzMkFycmF5PihzdGFydCwgZW5kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5n
IFdURjo6SW50MzJBcnJheTsKLQotI2VuZGlmIC8vIEludDMyQXJyYXlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvSW50OEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI5ZDJkOWFhYmEzMjI1ZTY0OTY4Y2NhMDQ0
MDQwMWUwOTczMzYzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbnQ4QXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEludDhBcnJheV9oCi0jZGVmaW5lIEludDhBcnJheV9o
Ci0KLSNpbmNsdWRlIDx3dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oPgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotY2xhc3MgQXJyYXlCdWZmZXI7Ci0KLWNsYXNzIEludDhBcnJheSA6IHB1YmxpYyBJ
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDhBcnJheT4gY3JlYXRlKGNvbnN0IHNpZ25l
ZCBjaGFyKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SW50OEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSB1
c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8K
LSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3
aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDhB
cnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcg
VHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBl
ZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPElu
dDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0
cjxJbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0KLSAgICB2
aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5
cGVJbnQ4OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbmxpbmUgSW50OEFycmF5KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+LAotICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
Ci0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0
cnVjdG9yIHZpc2libGUgdG8gc3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJh
eUJhc2U8c2lnbmVkIGNoYXI+OwotfTsKLQotUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IEludDhBcnJh
eTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8
c2lnbmVkIGNoYXI+OjpjcmVhdGU8SW50OEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRy
PEludDhBcnJheT4gSW50OEFycmF5OjpjcmVhdGUoY29uc3Qgc2lnbmVkIGNoYXIqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHNpZ25lZCBjaGFy
Pjo6Y3JlYXRlPEludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50
OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+OjpjcmVhdGU8SW50OEFycmF5PihidWZmZXIsIGJ5dGVP
ZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTxzaWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50OEFycmF5PihsZW5n
dGgpOwotfQotCi1JbnQ4QXJyYXk6OkludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVn
cmFsVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KQotewotfQotCi1QYXNzUmVmUHRyPEludDhBcnJheT4gSW50OEFycmF5OjpzdWJhcnJheShpbnQg
c3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19
Ci0KLVBhc3NSZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OnN1YmFycmF5KGludCBzdGFydCwg
aW50IGVuZCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXlJbXBsPEludDhBcnJheT4oc3Rh
cnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkludDhBcnJh
eTsKLQotI2VuZGlmIC8vIEludDhBcnJheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9J
bnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnRlZ3JhbFR5cGVkQXJy
YXlCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYWYxNGNhYjUxMzMzYjA2
YjIzNWMyNzZjYWZkMmQ5MTRhNjhjMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSW50ZWdyYWxU
eXBlZEFycmF5QmFzZV9oCi0jZGVmaW5lIEludGVncmFsVHlwZWRBcnJheUJhc2VfaAotCi0jaW5j
bHVkZSA8d3RmL1R5cGVkQXJyYXlCYXNlLmg+Ci0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIGFsbCBXZWJHTDxUPkFycmF5
IHR5cGVzIGhvbGRpbmcgaW50ZWdyYWwKLS8vIChub24tZmxvYXRpbmctcG9pbnQpIHZhbHVlcy4K
LQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgSW50ZWdy
YWxUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxUPiB7Ci0gIHB1YmxpYzoK
LSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKSAvLyBDbGFtcCBOYU4gdG8g
MAotICAgICAgICAgICAgdmFsdWUgPSAwOwotICAgICAgICAvLyBUaGUgZG91YmxlIGNhc3QgaXMg
bmVjZXNzYXJ5IHRvIGdldCB0aGUgY29ycmVjdCB3cmFwcGluZwotICAgICAgICAvLyBmb3Igb3V0
LW9mLXJhbmdlIHZhbHVlcyB3aXRoIEludDMyQXJyYXkgYW5kIFVpbnQzMkFycmF5LgotICAgICAg
ICBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0PFQ+KHN0YXRp
Y19jYXN0PGludDY0X3Q+KHZhbHVlKSk7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBJbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgICAgICA6IFR5cGVkQXJyYXlCYXNl
PFQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQotICAgIHsKLSAgICB9Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlOwotCi0j
ZW5kaWYgLy8gSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlODI0ZmE4MmM3YmFiOWM3ZjJlNTEyZDdk
M2I2YzU2NDE0NTJkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFR5cGVkQXJyYXlCYXNlX2gKLSNkZWZpbmUg
VHlwZWRBcnJheUJhc2VfaAotCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZlclZp
ZXcgewotICBwdWJsaWM6Ci0gICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFQqPihiYXNlQWRkcmVzcygpKTsgfQotCi0gICAgYm9vbCBzZXQoVHlwZWRBcnJheUJhc2U8VD4q
IGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0SW1wbChh
cnJheSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBib29sIHNldFJhbmdlKGNv
bnN0IFQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewot
ICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEpLCBkYXRhTGVuZ3RoICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBzaXplb2YoVCkpOwotICAg
IH0KLQotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGxlbmd0aCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAqIHNpemVvZihUKSwg
bGVuZ3RoICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICAvLyBPdmVycmlkZGVuIGZyb20gQXJy
YXlCdWZmZXJWaWV3LiBUaGlzIG11c3QgYmUgcHVibGljIGJlY2F1c2Ugb2YKLSAgICAvLyBydWxl
cyBhYm91dCBpbmhlcml0YW5jZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRlIGNsYXNzZXMsIGFuZAot
ICAgIC8vIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJzIHRvIHN1YmNsYXNzZXMu
Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xl
bmd0aDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQpOwotICAgIH0KLQotICAg
IC8vIEludm9rZWQgYnkgdGhlIGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5vdCBwZXJmb3JtIHJhbmdl
IGNoZWNrczsgY2FsbGVyCi0gICAgLy8gaXMgcmVzcG9uc2libGUgZm9yIGRvaW5nIHNvIGFuZCBy
ZXR1cm5pbmcgdW5kZWZpbmVkIGFzIG5lY2Vzc2FyeS4KLSAgICBUIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpbmRleCA8IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XTsKLSAgICB9Ci0KLSAgICBib29sIGNoZWNr
SW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3MpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0
ICsgcG9zIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAg
ICAgICAgJiYgb2Zmc2V0ICsgcG9zID49IG9mZnNldCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDogQXJyYXlCdWZmZXJWaWV3
KGJ1ZmZlciwgYnl0ZU9mZnNldCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgewot
ICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdWJjbGFzcz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShsZW5ndGgsIHNp
emVvZihUKSk7Ci0gICAgICAgIGlmICghYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZShjb25zdCBUKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPFN1YmNsYXNzPiBhID0gY3JlYXRlPFN1YmNsYXNzPihsZW5n
dGgpOwotICAgICAgICBpZiAoYSkKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBhLT5zZXQoaSwgYXJyYXlbaV0pOwotICAg
ICAgICByZXR1cm4gYTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWYo
YnVmZmVyKTsKLSAgICAgICAgaWYgKCF2ZXJpZnlTdWJSYW5nZTxUPihidWYsIGJ5dGVPZmZzZXQs
IGxlbmd0aCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN1YmNsYXNzKGJ1ZiwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNz
PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQobGVuZ3RoLCBzaXplb2YoVCkpOwotICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIs
IDAsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAg
IFBhc3NSZWZQdHI8U3ViY2xhc3M+IHN1YmFycmF5SW1wbChpbnQgc3RhcnQsIGludCBlbmQpIGNv
bnN0Ci0gICAgewotICAgICAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICAgICAgY2Fs
Y3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIG1fbGVuZ3RoLCAmb2Zmc2V0LCAmbGVu
Z3RoKTsKLSAgICAgICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxUPihidWZmZXIoKSwgbV9i
eXRlT2Zmc2V0LCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJj
bGFzcz4oYnVmZmVyKCksIG9mZnNldCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgbmV1dGVyKCkKLSAgICB7Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKCk7Ci0g
ICAgICAgIG1fbGVuZ3RoID0gMDsKLSAgICB9Ci0KLSAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBo
YXZlIHRvIGFjY2VzcyB0aGlzIHZpYSBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gc3ViY2xhc3NlcywK
LSAgICAvLyB3aGljaCBpcyB3aHkgaXQgaXMgcHJvdGVjdGVkIHJhdGhlciB0aGFuIHByaXZhdGUu
Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNp
bmcgV1RGOjpUeXBlZEFycmF5QmFzZTsKLQotI2VuZGlmIC8vIFR5cGVkQXJyYXlCYXNlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9V
aW50MTZBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2Y1ZjljOTlkNGE4
ZmYyOGI3YzU4NjBhNDQwOWRlN2VhNTllMmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVaW50MTZBcnJheV9oCi0j
ZGVmaW5lIFVpbnQxNkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3Mg
VWludDE2QXJyYXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9y
dD4gewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4g
Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVp
bnQxNkFycmF5PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRl
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRo
ZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVz
ZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0Lgot
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWdu
ZWQgc2hvcnQ+OjpzZXQ7Ci0gICAgdXNpbmcgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25l
ZCBzaG9ydD46OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJh
cnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotCi0gICAgdmlydHVhbCBWaWV3
VHlwZSBnZXRUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlVWludDE2Owot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbmxpbmUgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgpOwotICAgIC8v
IE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAgIGZyaWVuZCBjbGFz
cyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBzaG9ydD47Ci19OwotCi1QYXNzUmVmUHRyPFVpbnQx
NkFycmF5PiBVaW50MTZBcnJheTo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1
cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+OjpjcmVhdGU8VWludDE2QXJyYXk+KGxl
bmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUo
Y29uc3QgdW5zaWduZWQgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0Pjo6Y3JlYXRlPFVpbnQxNkFycmF5Pihh
cnJheSwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6
OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWdu
ZWQgc2hvcnQ+OjpjcmVhdGU8VWludDE2QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gVWludDE2QXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBzaG9ydD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDE2QXJyYXk+KGxlbmd0aCk7
Ci19Ci0KLVVpbnQxNkFycmF5OjpVaW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEludGVn
cmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgc2hvcnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVu
Z3RoKQotewotfQotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6c3ViYXJy
YXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3Ro
KCkpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBVaW50MTZBcnJheTo6c3ViYXJyYXko
aW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheUltcGw8VWlu
dDE2QXJyYXk+KHN0YXJ0LCBlbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcg
V1RGOjpVaW50MTZBcnJheTsKLQotI2VuZGlmIC8vIFVpbnQxNkFycmF5X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50MzJBcnJh
eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmFkZjZiZmMxOTUxMDZhOGI4Nzcx
NDAzZjc5MGQ4MmNjMTNlZGI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVaW50MzJBcnJheV9oCi0jZGVmaW5lIFVp
bnQzMkFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3MgVWludDMyQXJy
YXkgOiBwdWJsaWMgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGNyZWF0ZSh1bnNp
Z25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4g
Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAg
ICAvLyBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJh
eSB3aWxsIGJlIGZpbGxlZC4gRG8KLSAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGly
ZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCi0gICAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZD46OnNldDsKLSAg
ICB1c2luZyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkPjo6c2V0OwotCi0gICAgaW5s
aW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0g
ICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50
IGVuZCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFZpZXdUeXBlIGdldFR5cGUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIFR5cGVVaW50MzI7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlu
bGluZSBVaW50MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAvLyBNYWtlIGNvbnN0cnVjdG9yIHZpc2libGUgdG8g
c3VwZXJjbGFzcy4KLSAgICBmcmllbmQgY2xhc3MgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50
PjsKLX07Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFycmF5OjpjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+
OjpjcmVhdGU8VWludDMyQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJy
YXk+IFVpbnQzMkFycmF5OjpjcmVhdGUoY29uc3QgdW5zaWduZWQgaW50KiBhcnJheSwgdW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+Ojpj
cmVhdGU8VWludDMyQXJyYXk+KGFycmF5LCBsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQz
MkFycmF5PiBVaW50MzJBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBU
eXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGU8VWludDMyQXJyYXk+KGJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMy
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVy
biBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQz
MkFycmF5PihsZW5ndGgpOwotfQotCi1VaW50MzJBcnJheTo6VWludDMyQXJyYXkoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCi0gICAgOiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD4oYnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQz
MkFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5
KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVpbnQzMkFy
cmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1
YmFycmF5SW1wbDxVaW50MzJBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgotCi11c2luZyBXVEY6OlVpbnQzMkFycmF5OwotCi0jZW5kaWYgLy8gVWludDMyQXJyYXlf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWludDhBcnJheS5oIGIvU291cmNlL1dURi93
dGYvVWludDhBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2FmMDU0NzY2
NWI0ODg4N2E4OWQzYTRkMmU4NzRlZmJhOTNjOGI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaAorKysgL2Rl
di9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVpbnQ4QXJyYXlfaAot
I2RlZmluZSBVaW50OEFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBcnJheUJ1ZmZlcjsKLQotY2xhc3Mg
VWludDhBcnJheSA6IHB1YmxpYyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNoYXI+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4
QXJyYXk+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRp
cmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCi0gICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1
bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgotICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCk7Ci0KLSAgICB1c2luZyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFy
Pjo6c2V0OwotICAgIHVzaW5nIEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46
OnNldDsKLQotICAgIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBz
dGFydCkgY29uc3Q7Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gc3ViYXJyYXko
aW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5cGUgZ2V0VHlw
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQ4OwotICAgIH0KLQotcHJv
dGVjdGVkOgotICAgIGlubGluZSBVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgLy8gTWFrZSBjb25zdHJ1
Y3RvciB2aXNpYmxlIHRvIHN1cGVyY2xhc3MuCi0gICAgZnJpZW5kIGNsYXNzIFR5cGVkQXJyYXlC
YXNlPHVuc2lnbmVkIGNoYXI+OwotfTsKLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBVaW50OEFy
cmF5OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4QXJyYXk+KGxlbmd0aCk7Ci19Ci0KLVBhc3NS
ZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVu
c2lnbmVkIGNoYXI+OjpjcmVhdGU8VWludDhBcnJheT4oYXJyYXksIGxlbmd0aCk7Ci19Ci0KLVBh
c3NSZWZQdHI8VWludDhBcnJheT4gVWludDhBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotewot
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4QXJy
YXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFy
cmF5PiBVaW50OEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsK
LSAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQ8VWludDhBcnJheT4obGVuZ3RoKTsKLX0KLQotVWludDhBcnJheTo6VWludDhBcnJheShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKLTogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPihidWZm
ZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBV
aW50OEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFy
cmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4gVWludDhB
cnJheTo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHJldHVybiBz
dWJhcnJheUltcGw8VWludDhBcnJheT4oc3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgotCi11c2luZyBXVEY6OlVpbnQ4QXJyYXk7Ci0KLSNlbmRpZiAvLyBVaW50OEFycmF5X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmggYi9Tb3VyY2Uv
V1RGL3d0Zi9VaW50OENsYW1wZWRBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3NWNjMmQ4MmIyOTE0MmJkMzEyODM2YTUwNzk3Njg1MDhhZGIzMGM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xh
bXBlZEFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBVaW50OENsYW1wZWRBcnJheV9oCi0jZGVmaW5lIFVpbnQ4Q2xhbXBl
ZEFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotCi0jaW5jbHVkZSA8d3RmL1Vp
bnQ4QXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotY2xhc3MgVWludDhDbGFtcGVkQXJyYXkgOiBwdWJsaWMgVWludDhBcnJheSB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVh
dGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBhcnJheSwgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBr
bm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbwotICAgIC8vIG5vdCByZXR1
cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBm
aXJzdC4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIEl0J3Mgb25seSBu
ZWVkZWQgdG8gcG90ZW50aWFsbHkgY2FsbCB0aGlzIG1ldGhvZCBpZiB0aGUgYXJyYXkKLSAgICAv
LyB3YXMgY3JlYXRlZCB1bmluaXRpYWxpemVkIC0tIHRoZSBkZWZhdWx0IGluaXRpYWxpemF0aW9u
IHBhdGhzCi0gICAgLy8gemVybyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KLSAgICBpbmxpbmUgdm9p
ZCB6ZXJvRmlsbCgpOwotCi0gICAgdXNpbmcgVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46
OnNldDsKLSAgICBpbmxpbmUgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSk7
Ci0KLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3ViYXJyYXkoaW50
IHN0YXJ0KSBjb25zdDsKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLQotICAgIHZpcnR1YWwgVmlld1R5
cGUgZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gVHlwZVVpbnQ4Q2xhbXBl
ZDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgaW5saW5lIFVpbnQ4Q2xhbXBlZEFycmF5KFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIC8vIE1ha2UgY29uc3RydWN0b3IgdmlzaWJsZSB0byBzdXBlcmNsYXNzLgotICAg
IGZyaWVuZCBjbGFzcyBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjsKLX07Ci0KLVBhc3NS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6
Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihsZW5ndGgpOwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PHVuc2lnbmVkIGNoYXI+OjpjcmVhdGU8VWludDhDbGFtcGVkQXJyYXk+KGFycmF5LCBsZW5ndGgp
OwotfQotCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25l
ZCBjaGFyPjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxl
bmd0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFy
cmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4g
VHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDhD
bGFtcGVkQXJyYXk+KGxlbmd0aCk7Ci19Ci0KLXZvaWQgVWludDhDbGFtcGVkQXJyYXk6Onplcm9G
aWxsKCkKLXsKLSAgICB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOwotfQotCi12b2lkIFVpbnQ4Q2xh
bXBlZEFycmF5OjpzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKLXsKLSAgICBpZiAo
aW5kZXggPj0gbV9sZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoc3RkOjppc25hbih2
YWx1ZSkgfHwgdmFsdWUgPCAwKQotICAgICAgICB2YWx1ZSA9IDA7Ci0gICAgZWxzZSBpZiAodmFs
dWUgPiAyNTUpCi0gICAgICAgIHZhbHVlID0gMjU1OwotICAgIGRhdGEoKVtpbmRleF0gPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihscmludCh2YWx1ZSkpOwotfQotCi1VaW50OENsYW1wZWRB
cnJheTo6VWludDhDbGFtcGVkQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi06IFVpbnQ4QXJyYXkoYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5SW1wbDxVaW50OENsYW1wZWRBcnJheT4o
c3RhcnQsIGVuZCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OlVpbnQ4
Q2xhbXBlZEFycmF5OwotCi0jZW5kaWYgLy8gVWludDhDbGFtcGVkQXJyYXlfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9BcnJheUJ1ZmZlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY4N2Q5OGM4YWVlOGU5NDc3MjVhMWU3ZjI0MTg1Mjc0MDE3OWE3Y2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L0FycmF5QnVmZmVyLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0FycmF5
QnVmZmVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfQXJyYXlCdWZmZXJfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRlMzk1MjY2OTdjZDEwZGIzZjQ4ZjhiOTZkZDAwNGQ4YjNmOTQ4MmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9BcnJh
eUJ1ZmZlclZpZXdfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9BcnJheUJ1ZmZlclZpZXdfaAorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Zsb2F0MzJBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDMyQXJy
YXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMjQ1M2RkMjE2MDhkM2NjYzljZTQ4YzEwNTA2NGE3NzZmZWIzZDBl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9GbG9hdDMyQXJyYXkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0Rf
RmxvYXQzMkFycmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRmxvYXQzMkFycmF5X2gKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9GbG9hdDY0QXJyYXkuaCBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRmxvYXQ2NEFycmF5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTdlMzVhYWRjODhhZWJjOTU1MGFlNWY1ODFkMWI4ZDg5YzgzYTZlMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
RmxvYXQ2NEFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0Zsb2F0
NjRBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0Zsb2F0NjRBcnJheV9oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRmxvYXQ2NEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJheS5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnQxNkFycmF5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDVkMDAzOTlkYTM1NDk3OTNjZGI5YzFiN2VhMmUxNGE0ODdjODEyOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50MTZBcnJh
eS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnQxNkFycmF5X2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfSW50MTZBcnJheV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW50MTZBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSW50MzJBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNjU3NDFkNzY5YmNl
NjkwOTFmZGYyMGYxOGFhMGJlZGM2ZWEwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludDMyQXJyYXkuaApAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW50MzJBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X0ludDMyQXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDMyQXJyYXkuaD4KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9JbnQ4QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SW50OEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI2YWQ1Mjc0MGI1MWYxZmRmYjg4YWFlYWMzMWNjYTk1
Yjg5MTQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSW50OEFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVf
RldEX0ludDhBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0ludDhBcnJheV9oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSW50OEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRlZ3JhbFR5
cGVkQXJyYXlCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY3OWI1Njg0YzY2MDcxMzdjYzU4Yjc2N2FlNmZm
YTE2YmFmOGE2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlX2gKKyNkZWZpbmUgV2Vi
Q29yZV9GV0RfSW50ZWdyYWxUeXBlZEFycmF5QmFzZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1R5cGVkQXJyYXlCYXNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTY0MWE1N2MzYTY1OGJiYzVmMDAyZGYwMTY3OTcwZTYyZjVmMTQwZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVHlw
ZWRBcnJheUJhc2UuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVHlwZWRB
cnJheUJhc2VfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9UeXBlZEFycmF5QmFzZV9oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUJhc2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZBcnJheS5oIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MTZBcnJheS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNjY2VhMmMxYjBjMDczN2VjNmM4MGY0M2I2YTVlMWIwMzVkOTYyZTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1Vp
bnQxNkFycmF5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1VpbnQxNkFy
cmF5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVWludDE2QXJyYXlfaAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1VpbnQxNkFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVWludDMyQXJyYXkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NjAyNmYxNWMwNjM2MThjYzZiMmQ0MTYyZDhjYmVjOGFhN2IwYjI4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VaW50MzJBcnJheS5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VaW50MzJBcnJheV9oCisjZGVm
aW5lIFdlYkNvcmVfRldEX1VpbnQzMkFycmF5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9V
aW50MzJBcnJheS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvVWludDhBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOGRlNGVhNzhjY2Fk
ZTQ5MjNhODY5NjAxYjE1MGRkNTg1N2Q3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4QXJyYXkuaApAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVWludDhBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X1VpbnQ4QXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9VaW50OENsYW1wZWRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZDJlMDFkMWE4ZTU3MGQ4
YWE1Mjk1ODRlMTFhOTg2NTUzYzY5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5LmgKQEAgLTAsMCAr
MSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1VpbnQ4Q2xhbXBlZEFycmF5X2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfVWludDhDbGFtcGVkQXJyYXlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IDNiNzUzZGM1MzdhNzgxODY1ZTliNmUxM2FmZmQ2M2Q2
ZGZlZGNhYWIuLjNjNDBmOWNkNWI0YjM3YWExZGIxZjhiNjFhM2EwZWNiNTZlMDQxMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtMjgsOSArMjgs
OSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIAorI2luY2x1ZGUgPHJ1bnRp
bWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNz
YWdlRXZlbnQuY3BwCmluZGV4IDRhOWM4NDNhNjUyMWY5YjFjN2YyZDliYmJmMjAzNmM0M2U3YWNh
NzkuLjJiMzFiNDc5Yzc3ZDU2ZjI2Njg3Zjk1YjM3NWEyYTgxNDNlYjI5OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlN
ZXNzYWdlRXZlbnQuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYv
VWludDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwCmluZGV4IDVlMDZmOGQ1MDYz
MTdlYTNmYjlhODM3ODc5ZmY4MDFjOGY5NjdhMjUuLmRiMDYxNzM4YTAxMmIwYjk2NzJkMjcyZmJh
ZGQ1M2NjMTc2M2MzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKIAogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
VWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4
IDgzZDFmYmVlYWMzNzY2NGVkMGZkNGYyZWM1MDljZDYzMmY5ZmJkODYuLjA3NjY4NDQ3OTNmOGFh
MDg1NjhjNTU2MzNmZWYwYWI2MDA5ZWYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMzIsMTAgKzMy
LDEwIEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5k
ZXggNGZmM2UwNjllYTEyOTU1MjQ4YjA3MWFkYzEzMzM3Njg0YTJhNDg2Ni4uZjE2MmY5NjFiZjBk
NWMxYTVkOTEyYTkxZDQ5MTEwZWM2YzUxZWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC0zMSwxMCArMzEsMTAgQEAKICNp
bmNsdWRlICJDRE0uaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGVl
NjMyNjljNmU4YjgwNjRhYjY0MTNhMjIyODY2YTdiMTc3MDE5YTQuLjcwN2E4MzNmOTJkOTA0OTVl
OGJlMDI2MmQ0MWQ3ODlhYjY3NDI0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIK
ICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNp
bmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5j
cHAKaW5kZXggZmY4MGRmNTQ3NDRhNGEzMTM0ODljMjU2NzBhNzJkNjUxNDkzZWUyMS4uMjJlYjZh
ZGExYmJhZWI0YWNhNWY2YjdkMGMwNGU1NDQ5ODgxOTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMzYsNyArMzYs
NyBAQAogI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJh
eS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbC5jcHAKaW5kZXggZjIwMTg4M2NiNjBjZDYxYmQyYjQ2OGY1ZjAzODJlOGUwYzc2
YWQxZC4uMDQ1YzVkNzJkMDdhYTU2NDcxOGE1N2EzMjc5MzZiNTk1MmJkYmFlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5j
cHAKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05h
dmlnYXRvclZpYnJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9O
YXZpZ2F0b3JWaWJyYXRpb24uY3BwCmluZGV4IDk2ZTk3YTkxNWY1MjcxNmE2MGNlYmM5OWIzNjRl
NjgyZmU2MDMyZjguLjgzYjYwMjhiZDA4MDQzZjBiNGJlNjc1OTM1M2FhM2VkNWM5NGUyYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9y
VmlicmF0aW9uLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJWaWJyYXRpb24uaCIKLSNpbmNsdWRlIDx3dGYv
VWludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BbmFseXNlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmgKaW5kZXggOWYyZjBiODczMjA5MjM3NmVkZDc5ZGM3YzFhZWE1ZWE5N2NkODM0
NC4uYzNhYTVjNzc4MmMwNzdjNGQxNGJjMDBjMTVhN2I1MDFkYzMyMGRkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBAIC01OSw5ICs1OSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNtb290aGluZ1RpbWVDb25zdGFudChmbG9hdCBrLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgZmxvYXQgc21vb3RoaW5nVGltZUNvbnN0YW50KCkgY29uc3Qg
eyByZXR1cm4gbV9hbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQoKTsgfQogCi0gICAgdm9p
ZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoRmxvYXQzMkFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2Vy
LmdldEZsb2F0RnJlcXVlbmN5RGF0YShhcnJheSk7IH0KLSAgICB2b2lkIGdldEJ5dGVGcmVxdWVu
Y3lEYXRhKFVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURh
dGEoYXJyYXkpOyB9Ci0gICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSog
YXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkpOyB9CisgICAg
dm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoSlNDOjpGbG9hdDMyQXJyYXkqIGFycmF5KSB7IG1f
YW5hbHlzZXIuZ2V0RmxvYXRGcmVxdWVuY3lEYXRhKGFycmF5KTsgfQorICAgIHZvaWQgZ2V0Qnl0
ZUZyZXF1ZW5jeURhdGEoSlNDOjpVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5
dGVGcmVxdWVuY3lEYXRhKGFycmF5KTsgfQorICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRh
KEpTQzo6VWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRh
dGEoYXJyYXkpOyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IGYwMGJkMWFkY2YyMTA0
Y2ZkMmU5N2ZhMzUwMWI2MDNkYzdkYTI4OGEuLjA5MzgzZWY1ZjQ3OWYzNTQwN2ZmMTEzMDA4MGQz
ZTE2MjQ2YmJlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJB
dWRpb0J1ZmZlci5oIgogI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2suaCIKLSNpbmNsdWRl
IDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBjZWQ4MDU4YzBmNjAxNDNkMzMzNTFk
NGVjYTU2NWFiZDhkNzg0OGE3Li45Y2ZhODhlNWVjMGNiM2U2ZjcwNmJkYTI2NGYwZTkyNzVkMzJm
YjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVk
aW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1
ZGlvRGVjb2Rlci5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJy
YXlCdWZmZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7
CkBAIC00NywyMCArNTEsMjAgQEAgcHVibGljOgogICAgIH5Bc3luY0F1ZGlvRGVjb2RlcigpOwog
CiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGVj
b2RlQXN5bmMoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1Jl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVk
aW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBkZWNvZGVBc3luYyhK
U0M6OkFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVm
ZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwogCiBwcml2YXRlOgogICAgIGNsYXNzIERlY29k
aW5nVGFzayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlY29kaW5nVGFzayk7CiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0
ZShBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1
ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZl
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8RGVj
b2RpbmdUYXNrPiBjcmVhdGUoSlNDOjpBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1w
bGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKIAogICAgICAg
ICB2b2lkIGRlY29kZSgpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBEZWNvZGlu
Z1Rhc2soQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0
cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9C
dWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgICAgIERlY29kaW5nVGFzayhKU0M6
OkFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVk
aW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwogCi0gICAgICAgIEFycmF5QnVmZmVyKiBhdWRpb0Rh
dGEoKSB7IHJldHVybiBtX2F1ZGlvRGF0YS5nZXQoKTsgfQorICAgICAgICBKU0M6OkFycmF5QnVm
ZmVyKiBhdWRpb0RhdGEoKSB7IHJldHVybiBtX2F1ZGlvRGF0YS5nZXQoKTsgfQogICAgICAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgICAg
IEF1ZGlvQnVmZmVyQ2FsbGJhY2sqIHN1Y2Nlc3NDYWxsYmFjaygpIHsgcmV0dXJuIG1fc3VjY2Vz
c0NhbGxiYWNrLmdldCgpOyB9CiAgICAgICAgIEF1ZGlvQnVmZmVyQ2FsbGJhY2sqIGVycm9yQ2Fs
bGJhY2soKSB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2suZ2V0KCk7IH0KQEAgLTY5LDcgKzczLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIHZvaWQgbm90aWZ5Q29tcGxldGVEaXNwYXRjaCh2
b2lkKiB1c2VyRGF0YSk7CiAgICAgICAgIHZvaWQgbm90aWZ5Q29tcGxldGUoKTsKIAotICAgICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXVkaW9EYXRhOworICAgICAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gbV9hdWRpb0RhdGE7CiAgICAgICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAg
ICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogICAg
ICAgICBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCmluZGV4IDgyN2RmOWVi
Yjg0ZTZlMGEyN2JkZTJjZDgwMTUwMzE2ZWIwNjdkYWYuLjFjYTY3NjZiYzk5ZTJhMmFmMzk5OGUy
ZmRlOTg3YTA5NGIxZWUwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgQXVkaW9CdWZmZXJfaAog
I2RlZmluZSBBdWRpb0J1ZmZlcl9oCiAKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CmluZGV4IDJiNGQxNzk4OGEyYWYxNjIyMTQ3NDQ4NTU2OWNmYWI5ZWZmZjM1MjUuLjhhMGU4ZDVi
MmI2MTUwZWRjZDI0YzRkZmNjMDViM2ZmZmM5YjdlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAKICNp
bmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0Fy
cmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bS5oCmluZGV4IDUyNGY5OGYwN2Y4YzJhYWU2MzkwMzE5NmM3NDFmYzJiOTRjNDg5OTEuLjFlNDA3
YmEwYmE0ODUxM2VhODY0NTNhNzEyM2M2NDdiZjU0MDE2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVk
ZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5lLmgiCiAjaW5j
bHVkZSAiQXVkaW9TdW1taW5nSnVuY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJB
cnJheS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAppbmRleCBjMGE5
NjA4NzA0OTEzMDhlNzEwNDQwOWRhZDc5NDg2MDM1ZGMxYjExLi5lMGU1YTVkY2NiNTAyYmIzNzNl
ZGJkMDcyMDFiNTRkZWZiYTQ2Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZp
bmUgQXVkaW9QYXJhbVRpbWVsaW5lX2gKIAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgotI2lu
Y2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJh
eS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaAppbmRleCAzYjZkZTY4ZmUwZTBmYjMyOTA2YjBm
NzI4NDI2YWI5ODFiMDc5MGY2Li4xMjQzZDkwODBkMmRjZWU2NmMwNjNiZDg3MTc4OTZjNDJhMWJk
ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZl
LmgKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZpbmUgUGVyaW9kaWNXYXZlX2gKIAogI2luY2x1ZGUg
IkF1ZGlvQXJyYXkuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAK
aW5kZXggNjgxNjNjZTU1N2ExZmUxODAxOTEyZWEyOWZkYTdlZDBjNTgyMjk3Ni4uNjRhM2NmM2I5
NDk3MzEwM2NlMDhiYTBiOTFkYTI3YjJiNjFkZjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0zNCwxMCArMzQs
MTAgQEAKICNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPGNvbXBsZXg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
aAppbmRleCAwMmVhMDVmNWVlZWE1Y2ZhZWYyMDY1MzM1MGRmNDIzZjM5YTljMDBiLi4xZmJiNjhh
NTY2N2Q3MWFlY2QzOWY5NTM1OTE5NzA5YTNmYjFhMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaApAQCAtMzAsNiArMzAsMTEg
QEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRmxvYXQzMkFycmF5OworY2xhc3MgVWludDhBcnJh
eTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKQEAgLTU3LDkg
KzYyLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGZsb2F0
IGspIHsgbV9zbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSBrOyB9CiAgICAgZmxvYXQgc21vb3RoaW5n
VGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc21vb3Ro
aW5nVGltZUNvbnN0YW50KTsgfQogCi0gICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoRmxv
YXQzMkFycmF5Kik7Ci0gICAgdm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5Kik7
Ci0gICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSopOworICAgIHZvaWQg
Z2V0RmxvYXRGcmVxdWVuY3lEYXRhKEpTQzo6RmxvYXQzMkFycmF5Kik7CisgICAgdm9pZCBnZXRC
eXRlRnJlcXVlbmN5RGF0YShKU0M6OlVpbnQ4QXJyYXkqKTsKKyAgICB2b2lkIGdldEJ5dGVUaW1l
RG9tYWluRGF0YShKU0M6OlVpbnQ4QXJyYXkqKTsKIAogICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQg
d3JpdGVzIGlucHV0IGRhdGEgaGVyZS4KICAgICB2b2lkIHdyaXRlSW5wdXQoQXVkaW9CdXMqLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDRlMzZlODc5N2E2ZWRk
OTJmNzExOTFjMDM5MDQwYTllMWU4M2M4OTYuLmFiMWQyZWUwZmIyODQ1Zjk2YjFhOWRmOTUxNGQ1
MGMzYTIzNDA3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUg
IkF1ZGlvTm9kZU91dHB1dC5oIgogI2luY2x1ZGUgIkF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCmluZGV4IDU1OTdhOTRjMWU3Mjc0M2Fk
ZjdmODRhYmYyOGYyNzRkY2YzOTA5NzcuLjYzNWFjNzVkOTRiMjNkMzFmOGE5ZDY5Y2E5NzU0N2Ri
MWE5MzJjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlclByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlclByb2Nlc3Nvci5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQXVkaW9E
U1BLZXJuZWwuaCIKICNpbmNsdWRlICJBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oIgogI2luY2x1
ZGUgIkF1ZGlvTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXgg
MThkOTlhOWYwYWFmMDJkNWU5NGY1ZDVlOGVhNGU4M2Y1MzI4NGJhYS4uZmY3MjgzZDg1N2Y4ZTJj
ZGUzOGNmMDIzMzU4NDliYjdiZTQxZWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgK
QEAgLTM3LDYgKzM3LDExIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZl
cjsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBCbG9iOwpAQCAtNjAsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
c3VicHJvdG9jb2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3Qo
KSBjYWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSA9
IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBp
bnZva2VkLgogICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgPSAwOwotICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgPSAwOworICAgIHZpcnR1
YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCBTZW5kUmVzdWx0
IHNlbmQoY29uc3QgQmxvYiYpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBiNGI0OWMxMGU5NDk0ZGQ1MjZkYWI4MWE1OWYw
N2Q5YTk5MWFlZTVlLi41ZmEzZDlmNmEwZDFjOGRmMTgxZjBkMjQyOTBkNTgxMjNmMjkzNDA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApA
QCAtNTQsOCArNTQsOCBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVs
LmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVm
ZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggZTY0NzkwMzE1
NTY3MGVjOWM5MDdhNWE5YTI0MTMxNWQ3Y2VmNmE4My4uOWE1ODIzNzBmZmQ4NjQwYzQwMWYyZDM3
ZTFiOWNkOWFiZGYzYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZW5kKEFycmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBzZW5kKEpTQzo6QXJyYXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBz
ZW5kKEpTQzo6QXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2Vu
ZChCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA1YmU5
OWE5MTJlNTk3ZWI4OGU1OTk1YjNlYTk3NmNhMTk3ZDA5MWEwLi4zNGY0YWJlNjIwZjhlMmVhM2Zj
MGQwMTBiMDEwOWJiZGFhYjE1NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAj
aW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhh
bmRzaGFrZS5oIgogCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDE3
MGFiMTgzYWQ0ODNlOTk0MzQ5MTlmZTI5ZGVhMTAzYTY2MDg1OTIuLmYxNDhjZDkxYjA4MTAwOGY4
YmFmNTAwNWZlMDlhNDk3NDgzNzE1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJl
c3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pIE9WRVJSSURFOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU2N2I5Nzk1MjI1MmY0
M2ZkN2M1MTlkYTNmNDdjMjMyNGEyNjY2MzUuLjc4YjViMTAzYTI0MjVlOWY2NTI1YTdjMTE4NjY1
NWNmNGU2YTljZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5j
bHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotI2luY2x1
ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDI0MjEzNDM1ZDEzZDZiNTUwZmE2NGRmYjIyYzc4ZmU2YjY0
NjMwMzMuLjQxOWFjNDJkNmJjMzlkODZmYjZjYzJmYjc3OWZjMWM2OWVmMmRiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVz
dWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikgT1ZFUlJJREU7CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAg
ICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgdm9pZCBzZW5k
KGNvbnN0IEFycmF5QnVmZmVyJik7CisgICAgICAgIHZvaWQgc2VuZChjb25zdCBKU0M6OkFycmF5
QnVmZmVyJik7CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBCbG9iJik7CiAgICAgICAgIHZvaWQg
YnVmZmVyZWRBbW91bnQoKTsKICAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
aW5pdGlhbGl6ZSgpOwogICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpOwogICAgICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgICAgIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVy
JiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwog
ICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZvaWQgY2xv
c2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5k
ZXggNGYyYzcwNzMxOTJmYWM0MWRjMzU1YzJmOTM5YTA3NmM4NzY1YzkzYS4uYjFmZjIxNjk3ZDY1
ZmE3ZDdkNzYxNTFkMjI0OTNlOGQ0YmVkZWI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTcy
MCw3ICs3MjAsNyBAQCBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlckQyRXYKIF9f
Wk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVl
SlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVlCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0SlNHbG9iYWxPYmpl
Y3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0RUVFTG0xRU5TNl8x
NUNyYXNoT25PdmVyZmxvd0VFRU5TXzIyU2VyaWFsaXphdGlvbkVycm9yTW9kZUUKIF9fWk43V2Vi
Q29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVQSzE1T3BhcXVlSlNDb250ZXh0UEsx
M09wYXF1ZUpTVmFsdWVQUzZfCi1fX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZj
cmVhdGVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzFfN0pTVmFsdWVFUE4zV1RGNlZlY3RvcklOUzVfNlJl
ZlB0cklOU18xMU1lc3NhZ2VQb3J0RUVFTG0xRU5TNV8xNUNyYXNoT25PdmVyZmxvd0VFRVBOUzZf
SU5TN19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFU0FfRUVOU18yMlNlcmlhbGl6YXRpb25FcnJv
ck1vZGVFCitfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUE4zSlND
OUV4ZWNTdGF0ZUVOUzFfN0pTVmFsdWVFUE4zV1RGNlZlY3RvcklOUzVfNlJlZlB0cklOU18xMU1l
c3NhZ2VQb3J0RUVFTG0xRU5TNV8xNUNyYXNoT25PdmVyZmxvd0VFRVBOUzZfSU5TN19JTlMxXzEx
QXJyYXlCdWZmZXJFRUVMbTFFU0FfRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVFCiBfX1pO
N1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUMxRVJOM1dURjZWZWN0b3JJaExtMEVO
UzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZh
bHVlRDFFdgpAQCAtOTA3LDcgKzkwNyw3IEBAIF9fWk43V2ViQ29yZTRQYXRoQzFFdgogX19aTjdX
ZWJDb3JlNFBhdGhEMUV2CiBfX1pON1dlYkNvcmU0Y29yZUVQMjBOU1VSTFByb3RlY3Rpb25TcGFj
ZQogX19aTjdXZWJDb3JlNGNvcmVFUDI4TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQotX19a
TjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
TjNXVEYxMUFycmF5QnVmZmVyRQorX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlMwXzExQXJyYXlCdWZmZXJFCiBfX1pON1dlYkNvcmU0
dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVu
dFJlY3RFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBOU18xM0RPTVN0cmluZ0xpc3RFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5
RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xNENsaWVudFJlY3RMaXN0RQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNw
cAppbmRleCAyZmEzMDZhOWQzOGMyYzM5YjM3MmU1OTRhNmY4MjgyOWE0NjM1ODllLi5kZmQ1MmFi
NzhmY2M2N2U3ZDJiNDYzYTA1ZjY1YjZmNDA3ZjYwYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtMjcsOCArMjcsOCBA
QAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZm
ZXJWaWV3SGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVy
Vmlld0hlbHBlci5oCmluZGV4IDlhZjNmOGFkZDdkNjk1N2I1ZWQwYjk1MDY1NzVhM2E0YWE5Yjc1
MjYuLjg3YjZlNGM5MTdkYzQ1NDg3OTk4MmUyNzg4ODljY2EwNzFlZmEwY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaApA
QCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgotI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvVHlwZWRBcnJheUJhc2UuaD4K
KyNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRl
eHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRD
dXN0b20uY3BwCmluZGV4IGQ3MzAzNmZmOTFiMTBlZTY2ZTcwM2Q3YWMzZjY1MDk1NDczMmM2ZWQu
LmFiNjg1MjZlYzYyNTRkMjZlMWMyZmRiMzNmMGYxMmRiZjliYzcxNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM0
LDggKzM0LDggQEAKICNpbmNsdWRlICJKU0F1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTT2Zm
bGluZUF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0NvbnRleHQuaCIKKyNp
bmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKaW5kZXgg
YTk2M2E3NDY4NzY1NGEyZWM4MDA4ZDRmYzM3MjIxODMxYTliNWJhNS4uZDllOTI5ODFhNmEzOTFj
Njk5ODQzNWU2NjY4NDlhMWVkYjBiZTM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogCisjaW5jbHVkZSA8
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0j
aW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4IDFmODY4NGZm
MGMxMzc1MWNiMWI3ZmYwMjhlYTgwNDllZjYwODRmMDYuLjA1MTlmZTI2NWRmZTA5NDQ1MmNkNmEy
M2E5MWZhMjIzNDEwYWNiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2
b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSGFzaFNldDxB
dG9taWNTdHJpbmc+JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgQXJyYXlWYWx1ZSYgcmVzdWx0KTsKLSAgICBzdGF0
aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0
cjxVaW50OEFycmF5PiYgcmVzdWx0KTsKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiByZXN1
bHQpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgc3RhdGljIHZvaWQgY29udmVy
dFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8TWVkaWFLZXlFcnJv
cj4mIHJlc3VsdCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ZpbGVSZWFkZXJDdXN0b20uY3BwCmluZGV4IDhiNDkzY2ExNzY5ZjJlZDk5N2E5ZTUwNTU3ZjBj
NTRkNTQwMzJjMzcuLmU4NTEyMTlhZmE3NDg4YjMzNTkxZjQ2Y2JhNjRkODAzYTUwOTE3OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlUmVhZGVyQ3VzdG9tLmNw
cApAQCAtMzYsNyArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmlsZVJlYWRlci5oIgogI2luY2x1ZGUg
IkpTQXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAppbmRleCA1ZWQ1M2U3YjUzZDI5MzA0ZGIzM2FlZGMyNzkyMTBlMjAx
MTNlMTBjLi4yMmJmMWFhYzdjMTIwNjk0MmY1N2VmMmFlMmVkZWZiNmQ0NWFkMmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCkBAIC04NSwxMSArODUsMTEgQEAKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFy
cmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0FycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1
ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAKICNp
ZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApp
bmRleCAyYjc5OWM1MGVlYmMwYjFjNDkzMjRkNTZlYzE5YWE5YWVmZDAwZTZiLi44ZGQ4YmY1NTky
MmY2NTQ0NzU5NDViMDRhYzE0MmM4NTk0MmE2YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtNDgsOCArNDgs
OCBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1
ZXN0LmgiCiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvU3RhY2tJdGVyYXRvci5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5j
bHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CmluZGV4IDEyNmEwNGJmYmExMTk0NDU4NDE1ODc5ODVhMzU4NTJmNGE3MGU5OGUuLjM4MmNiMjdl
YjNlZDRiMmIwNTNkMmU1YTY4NzFjZDU3MTRhYzBkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNTgsNiArNTgs
NyBAQAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJU2hpbXMuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Cb29sZWFuT2JqZWN0Lmg+CiAj
aW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+CkBAIC02Nyw5ICs2OCw4IEBACiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJh
eS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUmVnRXhwLmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdF
eHBPYmplY3QuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNp
bmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC05NzgsNyArOTc4LDcgQEAgU2VyaWFsaXphdGlv
blJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICBy
ZXR1cm4gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkOwogfQogCi10eXBlZGVmIFZlY3RvcjxXVEY6OkFy
cmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsKK3R5cGVkZWYgVmVj
dG9yPEpTQzo6QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5Owog
CiBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6CkBAIC0xNzc3
LDcgKzE3NzcsNyBAQCBQYXNzT3duUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdQogICAgIFZlY3RvcjxSZWZQdHI8
RE9NV3JhcHBlcldvcmxkPiA+IHdvcmxkczsKICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGll
bnREYXRhKj4oZXhlYy0+dm0oKS5jbGllbnREYXRhKS0+Z2V0QWxsV29ybGRzKHdvcmxkcyk7CiAK
LSAgICBIYXNoU2V0PFdURjo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOworICAgIEhhc2hTZXQ8SlND
OjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRl
eCA9IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZl
ckluZGV4KyspIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ID4gbmV1
dGVyZWRWaWV3czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCBkM2NkODgwOGQ4NDZiM2U3N2M4MDAzNTA2NmRlNWY1NGM3
YTA3N2M5Li42MTExMmU3YzY4NTAwOWU2NzRmNjM3MDQzNzgyNGI2YjMyYTQ0NzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApA
QCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxo
ZWFwL1N0cm9uZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNZXNzYWdlUG9ydDsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7Ci10eXBlZGVmIFZlY3RvcjxSZWZQdHI8V1RGOjpB
cnJheUJ1ZmZlcj4sIDE+IEFycmF5QnVmZmVyQXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4sIDE+IEFycmF5QnVmZmVyQXJyYXk7CiAgCiBlbnVtIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgcHVibGljOgogICAgIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAogcHJpdmF0
ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxXVEY6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheTsKKyAgICB0eXBlZGVmIFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29u
dGVudHM+IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsKICAgICBzdGF0aWMgdm9pZCBtYXliZVRo
cm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFs
aXphdGlvblJldHVybkNvZGUpOwogICAgIHN0YXRpYyBib29sIHNlcmlhbGl6YXRpb25EaWRDb21w
bGV0ZVN1Y2Nlc3NmdWxseShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiB0cmFuc2ZlckFycmF5QnVmZmVycyhK
U0M6OkV4ZWNTdGF0ZSosIEFycmF5QnVmZmVyQXJyYXkmLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCAwZjI4ZjZlZTUyOTJiNDIyZTQwYzVkZjYxZmFhM2JjZjYxZTBkNTcyLi42
ZDU4OTJkNzk1NjdmMzlmYjg5NjM5MDU4ZTI2ZmFlMDI4ZmNkNzI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjI2LDcg
KzIyNiw3IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICB9IGVsc2lmICgkaXNDYWxsYmFj
ayAmJiAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkpIHsKICAgICAgICAgJGlu
Y2x1ZGVzUmVmLT57IkpTJHt0eXBlfS5oIn0gPSAxOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSkgewotICAgICAgICAkaW5jbHVkZXNSZWYtPnsi
PHd0Zi8ke3R5cGV9Lmg+In0gPSAxOworICAgICAgICAkaW5jbHVkZXNSZWYtPnsiPHJ1bnRpbWUv
JHt0eXBlfS5oPiJ9ID0gMTsKICAgICB9IGVsc2UgewogICAgICAgICAjIGRlZmF1bHQsIGluY2x1
ZGUgdGhlIHNhbWUgbmFtZWQgZmlsZQogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiJHt0eXBlfS5o
In0gPSAxOwpAQCAtNjgzLDcgKzY4Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYg
KCRoYXNQYXJlbnQgJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJh
dGVUb05hdGl2ZU9iamVjdCJ9KSB7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNUeXBl
ZEFycmF5VHlwZSgkaW50ZXJmYWNlTmFtZSkpIHsKLSAgICAgICAgICAgICRoZWFkZXJJbmNsdWRl
c3siPHd0Zi8kaW50ZXJmYWNlTmFtZS5oPiJ9ID0gMTsKKyAgICAgICAgICAgICRoZWFkZXJJbmNs
dWRlc3siPHJ1bnRpbWUvJGludGVyZmFjZU5hbWUuaD4ifSA9IDE7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAkaGVhZGVySW5jbHVkZXN7IiRpbnRlcmZhY2VOYW1lLmgifSA9IDE7CiAg
ICAgICAgIH0KQEAgLTM2MTIsNyArMzYxMiw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAg
ICAgIyBEZWZhdWx0LCBpbmNsdWRlIGhlYWRlciB3aXRoIHNhbWUgbmFtZS4KICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCI8d3RmLyR0eXBlLmg+IiwgJGNvbmRpdGlvbmFsKSBpZiBub3QgJGNv
ZGVHZW5lcmF0b3ItPlNraXBJbmNsdWRlSGVhZGVyKCR0eXBlKTsKKyAgICAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCI8cnVudGltZS8kdHlwZS5oPiIsICRjb25kaXRpb25hbCkgaWYgbm90ICRj
b2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHR5cGUuaCIsICRjb25kaXRpb25hbCkg
aWYgbm90ICRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhlYWRlcigkdHlwZSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDgyN2I2YmFkZWI3M2JlNGJmZWZjOWIwMzE5Mzg2
Y2Q0M2ZiMGUzODguLjAxNTJmOGJkMzU0YjBhOGQwMjQyN2FkYjRhNzdmY2FmOWVlZjA0MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0
NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiSlNGbG9h
dDMyQXJyYXkuaCIKICNpbmNsdWRlICJKU0ludDMyQXJyYXkuaCIKICNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDY0QXJyYXkuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0ludDMyQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5
Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0NjRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNG
bG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0Zsb2F0NjRBcnJheS5oCmluZGV4IDFkN2RmZDczZTMwNDI0NWJiNjZmMTFmNDUxMmZlNzdhZmQx
MTdkNGEuLmYzNDljNGQ4MjBkZWNmMjA1MzI2YWIyNTMxOTdjYzNlYWU4MzBmZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJh
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0
NjRBcnJheS5oCkBAIC0yMyw4ICsyMyw4IEBACiAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmll
dy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQ2
NEFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHd0Zi9G
bG9hdDY0QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGRj
YTZhNTkxZjQyNjllOGQ3YTUwOGY3NGQyODRhNWQ5ZjhjYWY5YzguLjliMDZiYWE4YzE0Yzg4NWZk
ZjJlNTE4Y2Q4ZWRjZDBjMTQxNjRhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC01NCw5ICs1NCw5IEBACiAj
aW5jbHVkZSAiVGVzdE9iai5oIgogI2luY2x1ZGUgImJvb2wuaCIKICNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogI2lmIEVO
QUJMRShDb25kaXRpb24xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmlu
ZGV4IGQzODI0NjJhYzMyMDc3MGEzYWQ1MDU0Y2MwZTlmZmI4MDg2MGRmMDMuLmE0ODE1MWY2NGJk
YjFjMDMxNzFhODhhOWFiNzViOTA0MGE5YWE0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5jcHAKQEAgLTQ5NCw3ICs0OTQsNyBAQCBRVmFyaWFudCBjb252ZXJ0VmFsdWVU
b1FWYXJpYW50KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBRTWV0YVR5
cAogCiAgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpRQnl0ZUFycmF5OiB7CiAgICAgICAgICAgICBp
ZiAodHlwZSA9PSBSVFVpbnQ4QXJyYXkpIHsKLSAgICAgICAgICAgICAgICBXVEY6OlVpbnQ4QXJy
YXkqIGFyciA9IHRvVWludDhBcnJheSh0b0pTKHRvSlMoY29udGV4dCksIHZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgSlNDOjpVaW50OEFycmF5KiBhcnIgPSB0b1VpbnQ4QXJyYXkodG9KUyh0b0pT
KGNvbnRleHQpLCB2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHJldCA9IFFWYXJpYW50KFFCeXRl
QXJyYXkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYXJyLT5kYXRhKCkpLCBhcnItPmxl
bmd0aCgpKSk7CiAgICAgICAgICAgICAgICAgZGlzdCA9IDA7CiAgICAgICAgICAgICB9IGVsc2Ug
ewpAQCAtNzI5LDcgKzcyOSw3IEBAIEpTVmFsdWVSZWYgY29udmVydFFWYXJpYW50VG9WYWx1ZShK
U0NvbnRleHRSZWYgY29udGV4dCwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByCiAKICAgICBpZiAo
dHlwZSA9PSBRTWV0YVR5cGU6OlFCeXRlQXJyYXkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBxdEJ5
dGVBcnJheSA9IHZhcmlhbnQudmFsdWU8UUJ5dGVBcnJheT4oKTsKLSAgICAgICAgV1RGOjpSZWZQ
dHI8V1RGOjpVaW50OENsYW1wZWRBcnJheT4gd3RmQnl0ZUFycmF5ID0gV1RGOjpVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChxdEJ5dGVBcnJheS5sZW5ndGgoKSk7CisgICAg
ICAgIFdURjo6UmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IHd0ZkJ5dGVBcnJheSA9IEpT
Qzo6VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocXRCeXRlQXJyYXkubGVu
Z3RoKCkpOwogICAgICAgICBtZW1jcHkod3RmQnl0ZUFycmF5LT5kYXRhKCksIHF0Qnl0ZUFycmF5
LmNvbnN0RGF0YSgpLCBxdEJ5dGVBcnJheS5sZW5ndGgoKSk7CiAgICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IHRvSlMoY29udGV4dCk7CiAgICAgICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhl
Yyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjU5OGVmYjdmYjYwZTNkMDYzN2Uy
ZDEyNzM2YmI5YWJhMjExMGYxMi4uZjA0ZmJiMmQzMzg4ODA4NmI1ZGZkODgyNGM0ZTBmYWVmMmE5
YWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzQsNyArMzQsNyBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggYmY4YzMzZDk2ZDM4NmE5
MTU5OWUzNjBkMWEwYTA3Y2I1MDY2NzE3Zi4uZjY5Njc3NWIzYjhkNWRjMDI2ZDNmMTIwNTBkNmIz
OWE3Mjk5MDhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00MCw3
ICs0MCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0Fy
cmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAppbmRleCA3ZjIxMzNkZTA4YTFlMTQ3MWNiYTljM2Rm
ZTBlNzk5NDA0MDNlM2ExLi5jMjBmOTdhOWZiZjNkZjkzYTI1NGM1M2IwYzNlYTU5MDMxY2JjOTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaApAQCAtNDIsNiArNDIsMTAgQEAKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC03Myw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAgICAgUGFz
c1JlZlB0cjxGaWxlRXJyb3I+IGVycm9yKCkgeyByZXR1cm4gbV9lcnJvcjsgfQogICAgIEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkVHlw
ZTsgfQotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29u
c3Q7CisgICAgUGFzc1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgp
IGNvbnN0OwogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA3N2Mw
NWZlODEzYjc4NzA0ZGE0M2Y5M2NhMmE5NTAyZTQyYTM1NWQ0Li4yNDQ3YzMwZWE1MTRhZmM4YWYy
MjViNGVhNmVmMDRjMjJkYTU3Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUg
IlRocmVhZGFibGVMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCBlYzFiZGZkYjJkNTEyOTU3
YTM4M2JlNjVhZGYxYTVmZmE5ODY5ZDc4Li4yNGYxZTdmMWJkYTg2YTM0Nzc3MThmMTcxYWYwNzJj
YmVjOWY5NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApA
QCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVy
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC03Miw3ICs3Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKICAgICBTdHJpbmcgc3RyaW5nUmVzdWx0KCk7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXJSZXN1bHQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNUUkVBTSkK
ICAgICBQYXNzUmVmUHRyPEJsb2I+IGJsb2JSZXN1bHQoKTsKICNlbmRpZiAvLyBFTkFCTEUoU1RS
RUFNKQpAQCAtMTA1LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgS1VSTCBtX3VybEZvclJlYWRp
bmc7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCi0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBtX3Jhd0RhdGE7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1f
cmF3RGF0YTsKICAgICBib29sIG1faXNSYXdEYXRhQ29udmVydGVkOwogCiAgICAgU3RyaW5nIG1f
c3RyaW5nUmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcApp
bmRleCA3OWU1MjAwZWE3YWZiZGNjZTk3MjJhOGYxZmYyNjUxYzA4YjRiNTc0Li4yZDUzYWZkMWI5
ZTcyMThiNTJkMzM1MjgwOTYwMTYyZGI2NDNiMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJTeW5jLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkJsb2JVUkwu
aCIKICNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRl
ci5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5j
LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgKaW5kZXggOWZlNWMz
MDAzYjVkZTc4YjMzMTJjOGIwM2ZjOGU3NzJjOTRjNDlkZC4uNTAxNDBlZmNkZDYwZDY1OTg1NDNm
ZmM3ZWNiYjNiZDc4MDZhMDE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5
bmMuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFy
cmF5QnVmZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CkBAIC01
NCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZpbGVSZWFkZXJTeW5jKCkgeyB9
CiAKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+IHJlYWRBc0FycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyByZWFkQXNCaW5hcnlTdHJp
bmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
U3RyaW5nIHJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAppbmRleCAxNjIyZTJmZTQyYjBi
OTNhYjkwZDgzZjFkZjFhNDc0MWZlNDNjMWJmLi40YjNhMmVhN2FhZjE2Mjk3YjU1OTlkYjhmZjA3
NjZiM2NiOTliNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJs
b2JCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWls
ZGVyLmNwcApAQCAtNDAsOCArNDAsOCBAQAogI2luY2x1ZGUgIkxpbmVFbmRpbmcuaCIKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+
CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmgKaW5kZXggMzM1YmM3NjZkZWE1ZDYy
YjllNzA0Njc1YjFmYThkMDBmNTcyZTQ3Yy4uYmNjYzI3ODAyMDEyZGUzMDkyYzk1MTVjMmZhZWZl
ZWRmOWM0ZGJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9i
QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIu
aApAQCAtMzQsNiArMzQsMTEgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFz
cyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6
IE1vdmUgdGhpcyBmaWxlIHRvIEJsb2JCdWlsZGVyLmgKQEAgLTUwLDggKzU1LDggQEAgcHVibGlj
OgogICAgIHZvaWQgYXBwZW5kKEJsb2IqKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nKTsKICNpZiBFTkFCTEUoQkxPQikKLSAgICB2b2lk
IGFwcGVuZChBcnJheUJ1ZmZlciopOwotICAgIHZvaWQgYXBwZW5kKEFycmF5QnVmZmVyVmlldyop
OworICAgIHZvaWQgYXBwZW5kKEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFwcGVuZChK
U0M6OkFycmF5QnVmZmVyVmlldyopOwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPEJsb2I+IGdl
dEJsb2IoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCAzYTlhNmQ5MzJjNmY2MDI3YjNiYjI0YjQwNWVkODRiNWZl
ZGFhYWY2Li45NjMyNDkzYmI1M2QxZWI3NjNhMmViY2FmNmNlMTEwZjQ4Mzc1YTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQAog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVk
ZSA8bGltaXRzPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL05vbkNvcHlpbmdTb3J0Lmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCA3NjE2ODcwNjNhNTVlNTQ1ZmJjZGRjNjhm
YjA4OTJmNDllNDljYTlhLi44MGIzZWIwY2RmYjZmODkwYWMyMDNkNDM2ZmI1NjhhZmE2MDI1YWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTMwLDkgKzMwLDkgQEAKICNkZWZpbmUgSW1h
Z2VEYXRhX2gKIAogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4
Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtl
eUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaAppbmRleCA0OWUz
ODQzZTMyOGIzOTA4NzhlNjVlMTJjMTFlMDY5NWQ5NzE4ZDgyLi40OGViMjZkZmYwOWFjNWQ2ZDg2
ZjRiZWQ3ZDNlYWI4YzdjN2I1MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhS2V5RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5jcHAKaW5kZXggMmY2MmRiYzQ5MDllYjIz
ZTMxYzljNzU3N2Y4YzI0M2UyMjIyYjdjNy4uMDNiMjUxMmRlOTkxOTA3ODlhYjEwNzU3ZmYyYTgw
MzA2MjY0ZGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlFdmVudC5oIgogCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9V
aW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsCmluZGV4IDBmNzBhZjY0ZGExN2NmMzBkMDBmNGRiYWFk
NWYwOWI2OTVmZjY2ZjQuLjgzNjMxMzdhOGE2MWQ2NjFmYTk5ZjQ0OWFlMTBiZTA3OGFiNjE1ZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwKQEAgLTI4LDcg
KzI4LDcgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgQ3VzdG9tQ29uc3Ry
dWN0b3IodW5zaWduZWQgbG9uZyBsZW5ndGgpLAogICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAg
SW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGLAorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNl
PUpTQywKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBBcnJheUJ1
ZmZlciB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYnl0ZUxlbmd0aDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRsCmluZGV4
IDNkNmZhZTJhNDBlOGI1Mzk5ZGExZTU3YThhNDQ2MzVhMzAyNmU0NGMuLmZjNjFhNWU4MjdmMDg2
YmRlMmQzZTljZWUyZjUzYTAzOTBmMTdmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQXJyYXlCdWZmZXJWaWV3LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIEN1c3Rv
bVRvSlNPYmplY3QsCiAgICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBJbXBsZW1lbnRhdGlvbk5h
bWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNl
IEFycmF5QnVmZmVyVmlldyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFycmF5QnVmZmVyIGJ1
ZmZlcjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKaW5kZXggY2FhZTBiYTI1NjhlNTBlM2Y2YjA2ZGRiMWNkNWY5ZDYyZTI5ZGZk
My4uODUxYzAzNGNkNzEwODBhYTRjYjQ1Y2M0M2U0NWMxZDVkZDI0MTQzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCkBAIC02MiwxMCArNjIsMTEgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2VuZGlm
CiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisKICNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBVU0UoQ0cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaAppbmRleCAwMGQ1NmQ4ZjE4N2Y5Zjk2ZTdmZDBi
NzQ1OGI3ZDI0ODQwYmQ1MDQyLi4wMGRkNmU0Y2EwODhkMWU4OTc1Yzc2OWVmY2RhODcxMmExYzA0
MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmgKQEAgLTI2LDcgKzI2LDcg
QEAKICNpZm5kZWYgRGF0YVZpZXdfaAogI2RlZmluZSBEYXRhVmlld19oCiAKLSNpbmNsdWRlIDx3
dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbAppbmRleCBhYzI1OGQ1
NTU2MWM1YzU5YzBmZGYzZTY0MzYxOWFiMzc1MmQ2MWFlLi44MzNkMDExMWFhZWE5ODcyNWE2MzBl
OThlYTBiMGM0NDk2NWNkODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9GbG9hdDMyQXJyYXkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0
MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAg
IERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1mbG9hdCwKLSAgICBJbXBsZW1l
bnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0g
aW50ZXJmYWNlIEZsb2F0MzJBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5z
aWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9GbG9hdDY0QXJyYXkuaWRsCmluZGV4IGRlZTQ0ZjZjNDBhYTUwMmRhNzFmNzkxMjA4
ZDYyYmRiYjViZTU0YWYuLmM5OGMwMzJjYzBiZmZjYzhlNTc4MTIzNDg3YTIxM2Y2MjYzMGJhMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmlkbApAQCAtMzMs
NyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50
cywKICAgICBUeXBlZEFycmF5PWRvdWJsZSwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1X
VEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIEZsb2F0NjRB
cnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19Q
RVJfRUxFTUVOVCA9IDg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0ludDE2QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5p
ZGwKaW5kZXggMDU3NjQ2MGRiNjAyZGJmNDY4YjFmYzRiOWU2ZDI3YTkyNmU5MjFiNC4uNDMzZjM2
ZjcyOWRhNjJjNTNlYzY3N2VkZjk3ZTg3Mjg5NzMzNjMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvSW50MTZBcnJheS5pZGwKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBDdXN0b21Ub0pT
T2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT1zaG9ydCwK
LSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVz
cGFjZT1KU0MKIF0gaW50ZXJmYWNlIEludDE2QXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewogICAg
IGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSAyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCmluZGV4IGQ4NjdlNjVkZDI5ZDAwZDQxZTRi
YTdhYjk2ZmQ0ZDMxYTcyZTdmMGMuLjUzYTcwYjcyNjFkZDUxZjU1NmYwNWJjZmQ2MTZlM2RjN2Ez
OTFjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXku
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCkBAIC0z
Myw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3Rh
bnRzLAogICAgIFR5cGVkQXJyYXk9aW50LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdU
RgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgSW50MzJBcnJh
eSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJf
RUxFTUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0lu
dDhBcnJheS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsCmlu
ZGV4IDZjYjIwYTE0NmUzNjkyNDAxMWQ5ZDg3NGFjZmM3YTUwNmUzOWMzYjYuLjVkYjAyYWQzMjk4
OTA0YTA3NTY4NGZkMzIxMzhlYWViNDkxZmUzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvSW50OEFycmF5LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3Qs
CiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBUeXBlZEFycmF5PXNpZ25lZCBjaGFyLAot
ICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFtZXNw
YWNlPUpTQwogXSBpbnRlcmZhY2UgSW50OEFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBj
b25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gMTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCmluZGV4IDcwOGNkYjMwMTViNzM2YmY5MGU4
MTY1Mzc3M2YwZmMxOWY3OGRjOGYuLjgyOTJiM2I5ZDQyMmNlN2ZlZjUwY2RjMmNiY2MyZGNiN2Mx
YmZmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwKQEAg
LTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25z
dGFudHMsCiAgICAgVHlwZWRBcnJheT11bnNpZ25lZCBzaG9ydCwKLSAgICBJbXBsZW1lbnRhdGlv
bk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJm
YWNlIFVpbnQxNkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICBjb25zdCB1bnNpZ25lZCBs
b25nIEJZVEVTX1BFUl9FTEVNRU5UID0gMjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
VWludDMyQXJyYXkuaWRsCmluZGV4IDY0M2MwOTJkZTNhYjE4YTk1ODZiNjc1OGU2NDQ2Y2MzYzNh
Yzk4NmMuLmI1YzA1NWQ0MzEyZDkzN2QzY2I2MzM5NTE1ZTIzNzFiNWFjNTI3MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAK
ICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlw
ZWRBcnJheT11bnNpZ25lZCBpbnQsCi0gICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9V1RGCisg
ICAgSW1wbGVtZW50YXRpb25OYW1lc3BhY2U9SlNDCiBdIGludGVyZmFjZSBVaW50MzJBcnJheSA6
IEFycmF5QnVmZmVyVmlldyB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxF
TUVOVCA9IDQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4
QXJyYXkuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKaW5k
ZXggZGFmM2Y4MDU3MzAzMGUyZjg2ZjFhNDU3NWIzMjk1ODljZTA0MTcxYi4uMjQxNmE0N2RmNjQ4
YjM3ODcyMDFlOTM4ZDZjNDkwOTBjNmZhMmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvVWludDhBcnJheS5pZGwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0
LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgVHlwZWRBcnJheT11bnNpZ25lZCBjaGFy
LAotICAgIEltcGxlbWVudGF0aW9uTmFtZXNwYWNlPVdURgorICAgIEltcGxlbWVudGF0aW9uTmFt
ZXNwYWNlPUpTQwogXSBpbnRlcmZhY2UgVWludDhBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAg
ICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDE7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbAppbmRleCBiMTdm
MTM1NzJjZWI5NTBmNTU2N2JmODJjYzA3N2JlNGZlYmQwZjhmLi41YTk5OTVlODA4MzQ4ODZlY2M0
M2Q3MzA2OWU5YThkMDg2MmZhN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgQ3VzdG9tVG9K
U09iamVjdCwKICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAogICAgIFR5cGVkQXJyYXk9dW5zaWdu
ZWQgY2hhciwKLSAgICBJbXBsZW1lbnRhdGlvbk5hbWVzcGFjZT1XVEYKKyAgICBJbXBsZW1lbnRh
dGlvbk5hbWVzcGFjZT1KU0MKIF0gaW50ZXJmYWNlIFVpbnQ4Q2xhbXBlZEFycmF5IDogVWludDhB
cnJheSB7CiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDE7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDA1MTI0NTBkNzYy
ZGNhYTRlMTI5YmE5Yjc2MzFjZjM5ZjkyM2E2ZDAuLjk0NjViNjc0YWQ4NjgwNDllMDU0NTNkYjg0
ZTE3MWYzMjQyMmNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
aApAQCAtMzAsNiArMzAsMTEgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xCdWZmZXIgOiBwdWJsaWMgV2Vi
R0xTaGFyZWRPYmplY3QgewpAQCAtMzksMTMgKzQ0LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwog
CiAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEdDM0RzaXplaXB0ciBzaXplKTsKLSAgICBi
b29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXIqKTsKLSAgICBib29sIGFzc29jaWF0
ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXJWaWV3Kik7Ci0gICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJT
dWJEYXRhKEdDM0RpbnRwdHIgb2Zmc2V0LCBBcnJheUJ1ZmZlciopOwotICAgIGJvb2wgYXNzb2Np
YXRlQnVmZmVyU3ViRGF0YShHQzNEaW50cHRyIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3Kik7Cisg
ICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICBib29s
IGFzc29jaWF0ZUJ1ZmZlckRhdGEoSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBib29sIGFz
c29jaWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGludHB0ciBvZmZzZXQsIEpTQzo6QXJyYXlCdWZmZXIq
KTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoR0MzRGludHB0ciBvZmZzZXQsIEpT
Qzo6QXJyYXlCdWZmZXJWaWV3Kik7CiAKICAgICBHQzNEc2l6ZWlwdHIgYnl0ZUxlbmd0aCgpIGNv
bnN0OwotICAgIGNvbnN0IEFycmF5QnVmZmVyKiBlbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2VsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IEpTQzo6QXJy
YXlCdWZmZXIqIGVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFy
cmF5QnVmZmVyLmdldCgpOyB9CiAKICAgICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZv
ciB0aGUgZ2l2ZW4gdHlwZS4gUmV0dXJucyAtMSBpZgogICAgIC8vIG5vbmUgaGFzIGJlZW4gc2V0
LgpAQCAtNjgsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgR0MzRGVudW0gbV90YXJnZXQ7CiAK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fZWxlbWVudEFycmF5QnVmZmVyOworICAgIFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPiBtX2VsZW1lbnRBcnJheUJ1ZmZlcjsKICAgICBHQzNEc2l6ZWlw
dHIgbV9ieXRlTGVuZ3RoOwogCiAgICAgLy8gT3B0aW1pemF0aW9uIGZvciBpbmRleCB2YWxpZGF0
aW9uLiBGb3IgZWFjaCB0eXBlIG9mIGluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xHZXRJbmZvLmNwcAppbmRleCBmNzE2NmM0MTkzMmRjMzQ3NmQ4YjVjMmUxMWEzZWM0MmU0
NDI1YjFkLi44ZTI3ZDNiOWExMTIwYTc2ZjdjMzBhYzAxZTFiODA0YmQwNjYyNmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKQEAgLTM2LDEwICszNiwx
MCBAQAogI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xUZXh0
dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgotI2luY2x1ZGUg
PHd0Zi9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgotI2luY2x1
ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJy
YXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAppbmRleCA3ZjliMDQyNjZhMGVhNjY3ODViMGJjOTFi
NjBmYmE4ZTFiZjQ0NWU0Li4wODI2MTJhYzllMWM4NzI4MTBhODk2MTI4NjlhNTU1N2U3OTVmYWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaApAQCAtMzMsMTIg
KzMzLDEyIEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJXZWJH
TFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCi0jaW5j
bHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMy
QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVu
dGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8
d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOGZmMDkxYmM5MmEyYjRkYmQ1NDY0MjVkMjkz
ZjkxODE4NjA4NGNkOC4uZDFlMjEyMTc3YWQwNzg0M2M0M2IzMmRkNTc2MTczZjk3OTRjZGFjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC03NCw5ICs3NCw5IEBACiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCiAj
aW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWlu
dDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093bkFycmF5UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaAppbmRleCA5NzIzY2E3NzZiMDg0ODlhOWRkNjQwYTM2NWI0YWNjNmNhZmVkNDhjLi44
YjVjYjY5Y2E5NjBlZmUwMzA3NWYxOWNmNjc1NjQwZmFkMDJmM2I1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzQsOCAr
MzQsOCBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgiCiAK
LSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0ludDMyQXJyYXku
aD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA4OGYzZDYwZTE2NzZlMjMxN2NmMTM3YWRhOWQy
NDZkNmVlYWU3YmY3Li4xZGMzZTEyZWNhNDcwZmU2NGIxNTQwMjhkZGE4OGY3NmRjMDE1NWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRHQ0V2ZW50LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCi0jaW5jbHVk
ZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uQ29weWlu
Z1NvcnQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKaW5k
ZXggYWU0MTZlZTE3NzdlZTg2MzliZmFmZTA4Y2I0NzQ2YzU3YmZmMzVjYS4uZjBlNGI1ZGE4YmNm
Mjg4OWZlMTM4MmE2NzI0MWMwYzI2NDFiNjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcApAQCAt
MzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNj
cmlwdFdyYXBwYWJsZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+
CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvQ3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ3J5cHRvLmgKaW5kZXggMTcyNWFmODZlYjIxYTQ4MTY0ZDcwZDhhZmUyYmFiNjFmY2MzMDIz
MC4uODY1NTJiYzYxMDViZWNhYTZjYzI2YjVjNWM4Yzc2MjNjNDc1YTI2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ny
eXB0by5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJh
eUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKQEAgLTQyLDcgKzQ2LDcgQEAgY2xhc3MgQ3J5cHRvIDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8Q3J5cHRvPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q3J5cHRvPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ3J5
cHRvKCkpOyB9CiAKLSAgICB2b2lkIGdldFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcqLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMoSlNDOjpBcnJheUJ1ZmZl
clZpZXcqLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5jcHAKaW5kZXggNWEyNDhkMGE1YzczMTJlZWUxYmM3MWI0MjdmNGY4NWIwMDQ2ZGU2OC4uNjEx
MDU2ZGQ3OTczNjRjN2IxNjQyMjI0YmRmNzViYmMwZWE4N2Q4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAt
NDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNETkVPTi5oIgogI2VuZGlm
CiAKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDg3MWQ3YzA1NTUwZTk4NTlkMGMxYWZhNzYzNDhi
MTUwNTU2NzE4YjQuLmRjOGM2NDM3YWQ4MzMyMTBhZDExZDVhMjU5ZTQwNGVhZmNkYTA4YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAt
MzksMTEgKzM5LDExIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA5MjczNGNhYjUw
Y2MzMDM0ZTRhY2UyYjMwOGQ1Zjc4NzljYTg1Yzk4Li5iMjRhYjRhZjE3MTEzMDI3ODJkMDg4NDdh
YjllN2ExZWYxNzA2ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQppbmRleCAxZTJiODhjNWVmZWE0NTY1NzhjYjgzMWEzODc0Y2JkOTRlMWMz
NjYxLi40YWY0OTE2ZWNiZmMyYmQ3NDEzYmMwODA1OTZlMjFmYjdmZWRhYWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KQEAgLTQ3LDEwICs0NywxMCBAQAogI2ltcG9ydCAiV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvVWludDE2QXJyYXkuaD4KKyNp
bXBvcnQgPHJ1bnRpbWUvVWludDMyQXJyYXkuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvVWludDhBcnJh
eS5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW1wb3J0IDx3dGYvVWludDE2QXJy
YXkuaD4KLSNpbXBvcnQgPHd0Zi9VaW50MzJBcnJheS5oPgotI2ltcG9ydCA8d3RmL1VpbnQ4QXJy
YXkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2ltcG9ydCA8QVZGb3VuZGF0
aW9uL0FWRm91bmRhdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJ1ZmZlckRhdGFCbGFja0JlcnJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyRGF0YUJsYWNr
QmVycnkuaAppbmRleCA4ZGEzMzBlOTMwMjA3NGU2M2QzYWY4NGEyNGYxM2FkNWRlNTA0MjI4Li44
YTg1YWZkYTljZmExNjk5NzBkNDA2ZWRjMTRiZGM2NGEzZWY3NTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyRGF0YUJs
YWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0ltYWdlQnVmZmVyRGF0YUJsYWNrQmVycnkuaApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3MuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1HdWFyZGVkUG9pbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJh
eS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCA4ZTYxZWRmZjljODZjZmNmYTQxYWI3MzMx
OGQ5Njk5M2RhYzIxOWQyLi43OTNlYjdiYzg5YTBjM2I4OGEzYWJkYzlmYjc4MTA4ZDg4MTQyMjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YUNHLmgKQEAgLTI1LDEwICsyNSwxMCBAQAogICovCiAKICNpbmNsdWRlICJJ
bWFnZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5o
PgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzApKQogI2RlZmluZSBXVEZfVVNF
X0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBiZjUyN2ZmNTNi
NjMxNjdjMmI4NWExNWVmNDNkMjQwZTY2NzQ2ZjZhLi44MTQ1MzkwYjgxNDNmODdkNzkyMzI3MmRj
ZThlNjZkZWI1YTFiMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8
d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRB
cnJheS5oPgogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgKCpCbGVuZFR5cGUpKHVuc2lnbmVkIGNo
YXIgY29sb3JBLCB1bnNpZ25lZCBjaGFyIGNvbG9yQiwgdW5zaWduZWQgY2hhciBhbHBoYUEsIHVu
c2lnbmVkIGNoYXIgYWxwaGFCKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggYmRmNTU1MmFl
MTg5ODEwNDNmNTI2MmI4NGI5MjBjMjI3MWNmYzJmYS4uNGQ1MmY4ZjU3Yzc4YTY3MjJmYzRmYTY0
MWY2ZmM2ZGI2YmViNzQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCkBAIC0zMCw4ICszMCw4IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
IAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCmluZGV4IDIy
OTQ0MjZkZWY5Y2UxNWE2NDEzNTkyMGY2NjNmMWFhNGNlZTJkMmQuLmU0OTRiMDhiZDFmMDY2Y2Yw
MmQ5OTEwMjc1NmUxMDc5YzI1YmY5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNw
cApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAyN2U3M2FhOWNmNTc1MTBlNDMyYjQ0ODU5
N2FlNGZiOTFjNjE5M2EwLi4wNjI5MWU3OWIyN2EzODczNDQ3NGZjZDEzMTRlZmJkMWE1YWU3Yzll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRy
ZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWlu
dDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXgg
ZmFkOTJjOTVhMWY1MGU0MGNmMTUzMDc4NmNiY2VmNjU1ZDhiZDc0YS4uNzM5NjhkODhiOWY2YzZi
ZmM4OGUzZWI3MjY0Nzg0YmFjYzJhODk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCkBA
IC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBl
ZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApp
bmRleCBjMjJmNTBlZjkwMTA5YzI4MGFiY2RmYmE0Njc0YTg4NDhmNzc0N2NkLi5jNDMwNmMwZmEx
NGE4MjQ0M2EzOTQyZDg1YzM3YmFiMDJmZjMwY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApA
QCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRl
ICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNp
bmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRleCAwMjVmZjY1YWMzYTg2YzM3Mjlj
ZDdlMDVlYzM0MTkwYmIwODdiYmE1Li44ZWI1NjQwZTI4YmM2ZWFiMmU1YmIxYWE4ZDliMmU2NWFm
YTUxNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAtMzEsNyArMzEsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAK
LSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwCmluZGV4IGMxZWZhMmFkZWFmNjUwMmY2NjgxMDEwNjFhZjhlNTU2OWQyMzRkYzguLjA5Nzdk
ZDJlZjc1ZWJiNmI0NjlmOWM0ZDI0MmQwMmIwNTlkMzlkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAK
QEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVk
ZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNp
bmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCA0NDZlMjVhMTBjNWU2MzQ3NWE1ZTQwYTQ3NGVk
ZGU0YTIzYjZjODRlLi42MWJhMzAyYTRhY2VkODE3ZTk0Mzg5NjU1OGJiNTNjOGM4ZWIyYzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJlbmRl
clRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFy
cmF5Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggYjQwYmIxMzA5
MGFiZjMxMjc2NDg5MTM3Njk2Nzc4NjNlYjBkZWI4ZS4uZWI3OWJiZGJjYjU0YjA1YzM4YTE5ODQy
YjA1MDc1NzQ3MDI0MDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRl
ICJMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlBvaW50TGlnaHRTb3VyY2UuaCIKICNpbmNsdWRl
ICJTcG90TGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4K
KyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIC8vIENvbW1vbiBiYXNl
IGNsYXNzIGZvciBGRURpZmZ1c2VMaWdodGluZyBhbmQgRkVTcGVjdWxhckxpZ2h0aW5nCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVN
b3JwaG9sb2d5LmNwcAppbmRleCA5ZTcyMGY3NGFjZWI5Nzg5NzFmNDJmMWU5NTE1MzczOGQyZjVj
ZDI4Li42YjAyOGVlMzkzNzY5MjlkZGVlYjdmMzRhYzE0Mjc4MjZmZDJlNmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5o
IgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFt
cGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2luZyBz
dGQ6Om1pbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAxNzY4ODc0NmY2ZjllNDQ2MjcxYTQxZmNi
MWUyNTExMWVhZDFjNWE1Li5jNGJkOTc5NWQ2Y2VkODMzZDRlN2ZiNjlmZTNiMWM1YWM5NzRmZjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiUmVuZGVy
VHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHJ1bnRp
bWUvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJy
YXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggNWRk
MDY1ZDk4ZGE3Yzc5ZjVjOWI3YjE3OThmZDAwMTE3YjNhN2NiNS4uZjFiNDVkNjk3MTEzMmJjOGRl
ZDQ0OWQxMDhlMWI1ZTRhNjBiZDQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjgsNyArMjgs
NyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogI2lmIEhBVkUoQVJNX05F
T05fSU5UUklOU0lDUykKICNpbmNsdWRlIDxhcm1fbmVvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXgg
Mjk2NDYxZjlmMTk3NGI4ODljMjNmZDgyMzZhZjg2N2FkNTJlY2FjZS4uY2RjN2E1MDEyZWY3OGNm
YWMxYjVlZGJkMTVhMThjOTgyODVjYjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yNywxMCArMjcs
MTEgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKKyNp
bmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShPUEVOQ0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0K
aW5kZXggMjYxM2FhYWE4NjQyZTk4NWE2YjkzNzZjYzI0NDY5NTkwNzg0NzAzMS4uYzJjNDNlOTQ2
MDE4MTcyYzNiZjY5NGNlNjM5NjZlZGFjZjQ5ODlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5t
bQpAQCAtNDMsMTEgKzQzLDExIEBACiAjaW5jbHVkZSA8T3BlbkdML2dsLmg+CiAjaW5jbHVkZSAi
V2ViR0xMYXllci5oIgogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0Fy
cmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUg
PHd0Zi9JbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1
ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9J
bnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRl
IDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwCmluZGV4IDlkNDZhNGMzZGUwYTA4M2UxODg5MDFhYjVlMjZhMDQ0MGU3ZWUw
NDkuLjY5MDJiNjEzNWVmYjFhNWY2ZTA1OGQwMzkzZmRiM2NhYzg3NzllOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNDQsMTMgKzQ0LDEz
IEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRl
IDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgot
I2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
ci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8cnVu
dGltZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KKyNp
bmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgVVNFKE9QRU5HTF9FU18y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZDRkYzI0MDFlYjliN2Y3YjZiZjgy
YWE3YzgwZTFjMDYxODFmMGIxOS4uZDFiNGI5Nzk3NzI3NjAxOTUxOWIzNjdmOTIxOTMxZDExNjg3
NDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zMSw4ICszMSw4IEBACiAj
aW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNLmNwcAppbmRleCAzZTZiZjhhMTRjYjU0OGM5MzlhMzZhYzc5MGY0NmI3MmU1NDU2OTJiLi5h
ZDc0YTI0NzkyN2MzYjZkMjY0ZDk1MjNmZjYxNjY5YzhjZmIwOTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNETS5oIgogI2lu
Y2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTgwLDcgKzgwLDcgQEAgc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkKIHN0YXRp
YyBVaW50OEFycmF5KiBrZXlQcmVmaXgoKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj
aGFyIHByZWZpeERhdGFbXSA9IHsnaycsICdlJywgJ3knfTsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCBwcmVmaXgsICgpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+LCBwcmVmaXgsICgpKTsKICAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAg
ICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgVWludDhB
cnJheSoga2V5UHJlZml4KCkKIHN0YXRpYyBVaW50OEFycmF5KiBrZXlSZXF1ZXN0KCkKIHsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciByZXF1ZXN0RGF0YVtdID0geydyJywgJ2UnLCAn
cScsICd1JywgJ2UnLCAncycsICd0J307Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8
V1RGOjpVaW50OEFycmF5PiwgcmVxdWVzdCwgKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UmVmUHRyPEpTQzo6VWludDhBcnJheT4sIHJlcXVlc3QsICgpKTsKICAgICBzdGF0aWMgYm9vbCBp
bml0aWFsaXplZCA9IGZhbHNlOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5p
dGlhbGl6ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXgg
MDllN2ZlNTgyNTJmOTE5Yjg2NzBkZTFkOGFmZGFlMTlmYjY3M2NmZi4uNGJjMDU5NmU3OGNlMDAx
Yzk2ZTk0MDdhYzA3MDI5MmQ0NTUxYmE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFVwbG9h
ZC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1l
L09wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3
dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDFjZDc2YmNkZDQ5
MDUyYjg4MDU4ZDhhZTNmMDNhYzVhMzZhOTM2ZGEuLjZhZmZmMzdlYTZjYjRkMDUxMDAxY2FmY2Y5
YWIyYWVkMDUyYTlhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0zNSw2
ICszNSwxMSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3Mg
QXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQmxvYjsKQEAgLTkxLDggKzk2LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2VuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKEJsb2Iq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKERPTUZvcm1EYXRhKiwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgc2VuZChBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIHNlbmQoQXJyYXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c2VuZChKU0M6OkFycmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChK
U0M6OkFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFib3J0KCk7
CiAgICAgdm9pZCBzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgb3ZlcnJpZGVNaW1l
VHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKQEAgLTEyMCw4ICsxMjUsOCBAQCBwdWJsaWM6
CiAgICAgUmVzcG9uc2VUeXBlQ29kZSByZXNwb25zZVR5cGVDb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZVR5cGVDb2RlOyB9CiAgICAgCiAgICAgLy8gcmVzcG9uc2UgYXR0cmlidXRlIGhh
cyBjdXN0b20gZ2V0dGVyLgotICAgIEFycmF5QnVmZmVyKiByZXNwb25zZUFycmF5QnVmZmVyKEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBBcnJheUJ1ZmZlciogb3B0aW9uYWxSZXNwb25zZUFycmF5QnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUFycmF5QnVmZmVyLmdldCgpOyB9CisgICAg
SlNDOjpBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlcihFeGNlcHRpb25Db2RlJik7Cisg
ICAgSlNDOjpBcnJheUJ1ZmZlciogb3B0aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZUFycmF5QnVmZmVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNldExh
c3RTZW5kTGluZU51bWJlcih1bnNpZ25lZCBsaW5lTnVtYmVyKSB7IG1fbGFzdFNlbmRMaW5lTnVt
YmVyID0gbGluZU51bWJlcjsgfQogICAgIHZvaWQgc2V0TGFzdFNlbmRVUkwoY29uc3QgU3RyaW5n
JiB1cmwpIHsgbV9sYXN0U2VuZFVSTCA9IHVybDsgfQpAQCAtMjIyLDcgKzIyNyw3IEBAIHByaXZh
dGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKICAg
ICAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKLSAg
ICBtdXRhYmxlIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9yZXNwb25zZUFycmF5QnVmZmVyOworICAg
IG11dGFibGUgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmVzcG9uc2VBcnJheUJ1ZmZlcjsK
IAogICAgIGJvb2wgbV9lcnJvcjsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>