<?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>148055</bug_id>
          
          <creation_ts>2015-08-15 07:17:51 -0700</creation_ts>
          <short_desc>[ES6] Arrow function syntax. Arrow function specific features. Lexical bind &quot;new.target&quot;</short_desc>
          <delta_ts>2016-02-21 11:33:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>149338</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149338</dependson>
    
    <dependson>154514</dependson>
          <blocked>140855</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117933</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-15 07:17:51 -0700</bug_when>
    <thetext>Implement lexical bind of &apos;super&apos; &amp; &apos;new.target&apos; in call arrow function inside of the class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117934</commentid>
    <comment_count>1</comment_count>
      <attachid>259091</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-15 07:24:58 -0700</bug_when>
    <thetext>Created attachment 259091
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117935</commentid>
    <comment_count>2</comment_count>
      <attachid>259092</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-15 07:53:18 -0700</bug_when>
    <thetext>Created attachment 259092
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117937</commentid>
    <comment_count>3</comment_count>
      <attachid>259093</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-15 08:19:29 -0700</bug_when>
    <thetext>Created attachment 259093
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117952</commentid>
    <comment_count>4</comment_count>
      <attachid>259096</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-15 10:48:31 -0700</bug_when>
    <thetext>Created attachment 259096
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117958</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 11:06:34 -0700</bug_when>
    <thetext>Attachment 259096 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSArrowFunction.cpp:50:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117978</commentid>
    <comment_count>6</comment_count>
      <attachid>259103</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-15 13:26:16 -0700</bug_when>
    <thetext>Created attachment 259103
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117979</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 13:30:13 -0700</bug_when>
    <thetext>Attachment 259103 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSArrowFunction.cpp:50:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118030</commentid>
    <comment_count>8</comment_count>
      <attachid>259122</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-16 04:25:47 -0700</bug_when>
    <thetext>Created attachment 259122
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118031</commentid>
    <comment_count>9</comment_count>
      <attachid>259123</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-16 06:45:24 -0700</bug_when>
    <thetext>Created attachment 259123
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118032</commentid>
    <comment_count>10</comment_count>
      <attachid>259124</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-16 07:14:18 -0700</bug_when>
    <thetext>Created attachment 259124
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118045</commentid>
    <comment_count>11</comment_count>
      <attachid>259127</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-16 11:45:12 -0700</bug_when>
    <thetext>Created attachment 259127
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118052</commentid>
    <comment_count>12</comment_count>
      <attachid>259128</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-16 12:30:44 -0700</bug_when>
    <thetext>Created attachment 259128
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118079</commentid>
    <comment_count>13</comment_count>
      <attachid>259135</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-16 23:47:22 -0700</bug_when>
    <thetext>Created attachment 259135
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118080</commentid>
    <comment_count>14</comment_count>
      <attachid>259136</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 00:13:05 -0700</bug_when>
    <thetext>Created attachment 259136
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118085</commentid>
    <comment_count>15</comment_count>
      <attachid>259137</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 00:44:36 -0700</bug_when>
    <thetext>Created attachment 259137
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118090</commentid>
    <comment_count>16</comment_count>
      <attachid>259139</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 01:16:07 -0700</bug_when>
    <thetext>Created attachment 259139
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118096</commentid>
    <comment_count>17</comment_count>
      <attachid>259143</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 06:13:32 -0700</bug_when>
    <thetext>Created attachment 259143
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118097</commentid>
    <comment_count>18</comment_count>
      <attachid>259144</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 06:52:49 -0700</bug_when>
    <thetext>Created attachment 259144
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118103</commentid>
    <comment_count>19</comment_count>
      <attachid>259146</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 07:23:24 -0700</bug_when>
    <thetext>Created attachment 259146
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118106</commentid>
    <comment_count>20</comment_count>
      <attachid>259148</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 07:51:20 -0700</bug_when>
    <thetext>Created attachment 259148
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118107</commentid>
    <comment_count>21</comment_count>
      <attachid>259149</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 08:14:59 -0700</bug_when>
    <thetext>Created attachment 259149
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118108</commentid>
    <comment_count>22</comment_count>
      <attachid>259150</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 08:30:12 -0700</bug_when>
    <thetext>Created attachment 259150
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118112</commentid>
    <comment_count>23</comment_count>
      <attachid>259151</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 08:42:41 -0700</bug_when>
    <thetext>Created attachment 259151
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118117</commentid>
    <comment_count>24</comment_count>
      <attachid>259152</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 09:03:48 -0700</bug_when>
    <thetext>Created attachment 259152
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118157</commentid>
    <comment_count>25</comment_count>
      <attachid>259162</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-17 11:01:12 -0700</bug_when>
    <thetext>Created attachment 259162
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148154</commentid>
    <comment_count>26</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-10 06:42:46 -0800</bug_when>
    <thetext>Issue is implemented in 149338, so can be closed https://bugs.webkit.org/show_bug.cgi?id=149338</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148155</commentid>
    <comment_count>27</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-10 06:43:18 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 149338 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259091</attachid>
            <date>2015-08-15 07:24:58 -0700</date>
            <delta_ts>2015-08-15 07:53:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150815172439.patch</filename>
            <type>text/plain</type>
            <size>28849</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi5iMDRhNmRjMTY5M2ZhN2Iy
NTQyYWQ0OTE3N2E5Njc2YTllMzA3ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTQgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjhhYjE1NWU1YTMwZmI0NzdmZWQ0M2IzZDE1MzZiY2Y4
NTQ2NzQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uOTA1N2ZiZjgxYzQ0N2YyYTEw
M2FiMjZmZDk1YTE5YjE2ZmZjNWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjkwLDYgKzY5MCw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXkuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0JvdW5kRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMjc5Miw2ICsyNzk1LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3Vu
ZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBjZGRhOGVj
MzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUxM2MwYmRl
Y2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYgKzExMzgs
OCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNFRUI2MTY4
NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZBOUU5MTE0
MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyog
SlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi87
IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQyNEIxQUJE
NkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQxODZEMUI2
MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQjEy
M0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkwMjEzRTNF
MTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyog
TWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1MkMzMjBG
Qjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2ICsyOTU3
LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRjaGVzQXJy
YXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJCQjJEMDAx
NzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fycm93RnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJvd0Z1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNBNDBDMjAw
RDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNl
ckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFy
ZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1Miw4IEBA
CiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovLAog
CQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAog
CQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKKwkJ
CQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAqLywKKwkJ
CQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8sCiAJCQkJ
NjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2NTdDRjQ1
NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVG
MDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJCQkJQTUw
M0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjggLyogSlNB
cnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgw
MDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
QEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4IC8qIERG
R011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkRDMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRMT3V0cHV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJDNDc4MDA4
NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk1MWMyNjBlMTZhMjBlMmI4NDA5YWViYjlhMmU1OWRiOWIzZGY0ODYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxw
ZXJzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1
ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNBcnJvd0Z1
bmN0aW9uOjpzX2luZm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0Fycm93RnVuY3Rpb24pIH07CisKK3ZvaWQgSlNBcnJvd0Z1bmN0
aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0Fycm93RnVu
Y3Rpb24qPihjZWxsKS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7Cit9CisK
K0pTQXJyb3dGdW5jdGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhp
cykKK3sKKyAgICBKU0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0
aW9uKCktPm5vdGlmeVdyaXRlKHZtLCByZXN1bHQsICJBbGxvY2F0aW5nIGFuIGFycm93IGZ1bmN0
aW9uIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNBcnJvd0Z1bmN0aW9uOjpKU0Fycm93
RnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUq
IHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNj
b3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSkKKyAg
ICAsIG1fYm91bmRUaGlzKHZtLCB0aGlzLCBib3VuZFRoaXMpCit7Cit9CisKK0pTQXJyb3dGdW5j
dGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3Bl
KiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgQVNTRVJUKGV4ZWN1dGFibGUtPnNp
bmdsZXRvbkZ1bmN0aW9uKCktPmhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICByZXR1cm4gY3Jl
YXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKK30KKwordm9pZCBKU0Fycm93
RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU0Fycm93RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJvd0Z1
bmN0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZFRoaXMpOworfQorCitD
b25zdHJ1Y3RUeXBlIEpTQXJyb3dGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJikKK3sKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cm93RnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTMxZmRhY2JmNzdlYzIxYWNlNDhhYzE4MzYxMTA2
ZmIwZjMwYTkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQXJyb3dGdW5j
dGlvbl9oCisjZGVmaW5lIEpTQXJyb3dGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKworcHVibGljOgorICAg
IHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiog
Y3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAg
IHN0YXRpYyBKU0Fycm93RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7
CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRpYyBz
aXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAg
ICAgcmV0dXJuIHNpemVvZihKU0Fycm93RnVuY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgewor
ICAgICAgICBKU0Fycm93RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNBcnJvd0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0aW9uKHZtLCBleGVj
dXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1
Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRp
b24odm0pOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CisgICAgfQorICAgIAorICAgIHN0YXRp
YyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYp
OworCisgICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsg
fQorICAgIAorICAgIERFQ0xBUkVfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dGdW5jdGlvbiwg
bV9ib3VuZFRoaXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVkOgorICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAg
Citwcml2YXRlOgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTU2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9i
b3VuZFRoaXM7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Fy
cm93RnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CmluZGV4IDBiODdkNzVjOTE0NTBjNWFmMWFhZWQyN2E2MWE3NDhlZjgwZjA5M2UuLjkyODM1MGUy
NDc4YzQ1ZjdiZjdlOGFhODRjOWVjM2E0ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKKyAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSosIFN0cnVjdHVyZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5h
dGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVz
aW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZjZjNmQ1OGVjNmU1YzExNjRjYjI3ZmE1
ZTQxNjE4YjRiODE0MmYwMi4uZjA1OTU4NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNiNjQ0YTg4NDQx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oCkBAIC00NCw2ICs0NCwxMyBAQCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihW
TSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgICwg
bV9yYXJlRGF0YSgpCiB7CiB9CisgICAgCitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihW
TSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKKyAg
ICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkKKyAgICAsIG1fcmFyZURhdGEo
KQoreworfQogCiBpbmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1
dGFibGUoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGNlZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAwNDQxN2MyMjlh
ZDA0MjMuLmRhMWFjMjVhYWIwMDg2MmNkNTM3MzBmOWE1YWQxMjVhMmRjMGZmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU5
LDYgKzU5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvci5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIGV4ZWMtPnNldENhbGxlZShtX2dsb2JhbENhbGxlZS5nZXQoKSk7CiAKICAg
ICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9hcnJv
d0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2Jv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1f
bmFtZWRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uKHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5h
bWVPZmZzZXQpKTsKICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpKTsKQEAgLTc5NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4
NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMwNTVlOWJhZTMw
YmI3M2ZkOTAxNWJjMDAzODM2M2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGVlU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5j
dGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFt
ZVN0cnVjdHVyZTsKQEAgLTQ2Miw2ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBj
YWxsZWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBuYW1lZEZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259092</attachid>
            <date>2015-08-15 07:53:18 -0700</date>
            <delta_ts>2015-08-15 08:19:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150815175259.patch</filename>
            <type>text/plain</type>
            <size>29027</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi5iMDRhNmRjMTY5M2ZhN2Iy
NTQyYWQ0OTE3N2E5Njc2YTllMzA3ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTQgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjhhYjE1NWU1YTMwZmI0NzdmZWQ0M2IzZDE1MzZiY2Y4
NTQ2NzQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uOTA1N2ZiZjgxYzQ0N2YyYTEw
M2FiMjZmZDk1YTE5YjE2ZmZjNWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjkwLDYgKzY5MCw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXkuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0JvdW5kRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMjc5Miw2ICsyNzk1LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3Vu
ZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBjZGRhOGVj
MzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUxM2MwYmRl
Y2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYgKzExMzgs
OCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNFRUI2MTY4
NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZBOUU5MTE0
MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyog
SlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi87
IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQyNEIxQUJE
NkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQxODZEMUI2
MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQjEy
M0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkwMjEzRTNF
MTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyog
TWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1MkMzMjBG
Qjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2ICsyOTU3
LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRjaGVzQXJy
YXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJCQjJEMDAx
NzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fycm93RnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJvd0Z1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNBNDBDMjAw
RDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNl
ckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFy
ZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1Miw4IEBA
CiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovLAog
CQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAog
CQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKKwkJ
CQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAqLywKKwkJ
CQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8sCiAJCQkJ
NjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2NTdDRjQ1
NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVG
MDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJCQkJQTUw
M0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjggLyogSlNB
cnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgw
MDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
QEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4IC8qIERG
R011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkRDMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRMT3V0cHV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJDNDc4MDA4
NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE1ZDZlZTliYTE5ZjJiMjQ3YTZmNTBmYzAxZTU0MjRlYTQ2M2NlOWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBKU0Fycm93RnVuY3Rpb246OnNfaW5mbyA9IHsgIkFycm93RnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXJyb3dGdW5jdGlvbikgfTsKKwor
dm9pZCBKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRp
Y19jYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpLT5KU0Fycm93RnVuY3Rpb246On5KU0Fycm93
RnVuY3Rpb24oKTsKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNyZWF0
ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUs
IEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEpTQXJyb3dGdW5jdGlvbiogcmVzdWx0ID0gY3Jl
YXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7CisgICAgZXhlY3V0YWJs
ZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIHJlc3VsdCwgIkFsbG9jYXRp
bmcgYW4gYXJyb3cgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0Fycm93
RnVuY3Rpb246OkpTQXJyb3dGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQorICAgIDogQmFzZSh2
bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXJyb3dGdW5jdGlv
blN0cnVjdHVyZSgpKQorICAgICwgbV9ib3VuZFRoaXModm0sIHRoaXMsIGJvdW5kVGhpcykKK3sK
K30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKK3sKKyAgICBBU1NF
UlQoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+aGFzQmVlbkludmFsaWRhdGVkKCkp
OworICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOwor
fQorCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXJyb3dGdW5jdGlvbiogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Jv
dW5kVGhpcyk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQoreworICAgIHJldHVybiBDb25zdHJ1Y3RU
eXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmN2I5NzcwYWQ4MzAy
N2FjOTM1MWJkODhmMzYwOTI1NGVlZDgyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaApAQCAtMCwwICsxLDkyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNBcnJvd0Z1bmN0aW9uX2gKKyNkZWZpbmUgSlNBcnJvd0Z1bmN0aW9uX2gKKworI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnRE
ZXNpcmVkT2Zmc2V0czsKKyAgICAKK2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1
bmN0aW9uIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwor
ICAgICAgICAKKyAgICAgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgSlNB
cnJvd0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgICAgICAK
KyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICAgICAgCisgICAgICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5l
Q2FwYWNpdHkpOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZihKU0Fycm93RnVuY3Rpb24pOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVh
dGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEpTQXJyb3dG
dW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Fycm93RnVu
Y3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBi
b3VuZFRoaXMpOworICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xv
YmFsT2JqZWN0KCkpOworICAgICAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1
Y3REYXRhJik7CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJu
IG1fYm91bmRUaGlzLmdldCgpOyB9CisgICAgICAgIAorICAgICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOworICAgICAgICAKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZU
aGlzVmFsdWUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEpTQXJyb3dGdW5jdGlvbiwgbV9ib3VuZFRoaXMpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKyAgICAgICAgCisgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIAorICAgIHByaXZh
dGU6CisgICAgICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
U2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAorICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4g
bV9ib3VuZFRoaXM7CisgICAgfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gSlNBcnJvd0Z1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAppbmRleCAwYjg3ZDc1YzkxNDUwYzVhZjFhYWVkMjdhNjFhNzQ4ZWY4MGYwOTNlLi45
MjgzNTBlMjQ3OGM0NWY3YmY3ZThhYTg0YzllYzNhNGUyNTJhODZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNDEsNiArMTQxLDcgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0
YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
ICAgICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGY2YzZkNThlYzZlNWMxMTY0
Y2IyN2ZhNWU0MTYxOGI0YjgxNDJmMDIuLmYwNTk1ODRjZjA3ZDdmZDY5ZWEyZGNmZTI3YjYzYjY0
NGE4ODQ0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaApAQCAtNDQsNiArNDQsMTMgQEAgaW5saW5lIEpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHMK
ICAgICAsIG1fcmFyZURhdGEoKQogewogfQorICAgIAoraW5saW5lIEpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNj
b3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHNjb3BlLCBzdHJ1Y3R1
cmUpCisgICAgLCBtX2V4ZWN1dGFibGUodm0sIHRoaXMsIGV4ZWN1dGFibGUpCisgICAgLCBtX3Jh
cmVEYXRhKCkKK3sKK30KIAogaW5saW5lIEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNGdW5jdGlvbjo6
anNFeGVjdXRhYmxlKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjZWU5YmJkOTQwNDQ5MTI4OTQzODI3MWQwMDQ0
MTdjMjI5YWQwNDIzLi5kYTFhYzI1YWFiMDA4NjJjZDUzNzMwZjlhNWFkMTI1YTJkYzBmZjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlJ
dGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NhbGxi
YWNrQ29uc3RydWN0b3IuaCIKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICBleGVjLT5zZXRDYWxsZWUobV9nbG9iYWxDYWxsZWUuZ2V0KCkp
OwogCiAgICAgbV9mdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAg
IG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQXJyb3dGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNCb3VuZEZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsK
ICAgICBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0sIG1fZnVu
Y3Rpb25OYW1lT2Zmc2V0KSk7CiAgICAgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CkBAIC03OTUsNiArNzk3LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxlZVN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDk5ODZiY2Y2MjQ1ZTJjYzQ2ODIwYjEzMTAyYjIzNDI5MDBlYzNkN2IuLmJkMTJiMjkzMDU1
ZTliYWUzMGJiNzNmZDkwMTViYzAwMzgzNjNjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjMyLDYgKzIzMiw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxlZVN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFByb3BlcnR5T2Zmc2V0
IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJp
dmF0ZU5hbWVTdHJ1Y3R1cmU7CkBAIC00NjIsNiArNDYzLDcgQEAgcHVibGljOgogICAgIFN0cnVj
dHVyZSogY2FsbGVlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYm91bmRGdW5j
dGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogYXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
bmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAgICAgU3RydWN0dXJlKiBu
dW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVj
dHVyZS5nZXQoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259093</attachid>
            <date>2015-08-15 08:19:29 -0700</date>
            <delta_ts>2015-08-15 10:48:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150815181910.patch</filename>
            <type>text/plain</type>
            <size>28928</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi5iMDRhNmRjMTY5M2ZhN2Iy
NTQyYWQ0OTE3N2E5Njc2YTllMzA3ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTQgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjhhYjE1NWU1YTMwZmI0NzdmZWQ0M2IzZDE1MzZiY2Y4
NTQ2NzQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uOTA1N2ZiZjgxYzQ0N2YyYTEw
M2FiMjZmZDk1YTE5YjE2ZmZjNWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjkwLDYgKzY5MCw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXkuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0JvdW5kRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMjc5Miw2ICsyNzk1LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3Vu
ZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBjZGRhOGVj
MzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUxM2MwYmRl
Y2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYgKzExMzgs
OCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNFRUI2MTY4
NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZBOUU5MTE0
MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyog
SlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi87
IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQyNEIxQUJE
NkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQxODZEMUI2
MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQjEy
M0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkwMjEzRTNF
MTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyog
TWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1MkMzMjBG
Qjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2ICsyOTU3
LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRjaGVzQXJy
YXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJCQjJEMDAx
NzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fycm93RnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJvd0Z1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNBNDBDMjAw
RDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNl
ckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFy
ZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1Miw4IEBA
CiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovLAog
CQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAog
CQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKKwkJ
CQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAqLywKKwkJ
CQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8sCiAJCQkJ
NjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2NTdDRjQ1
NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVG
MDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJCQkJQTUw
M0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjggLyogSlNB
cnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgw
MDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
QEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4IC8qIERG
R011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkRDMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRMT3V0cHV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJDNDc4MDA4
NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFkODk0ZTljN2ExNmYyOTNjMTRlYmIxODgwZTIwMTYzYzZlZDVlMDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNBcnJvd0Z1bmN0aW9uOjpzX2lu
Zm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0Fycm93RnVuY3Rpb24pIH07CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxs
KS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7Cit9CisKK0pTQXJyb3dGdW5j
dGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKK3sKKyAgICBK
U0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
LCBib3VuZFRoaXMpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlm
eVdyaXRlKHZtLCByZXN1bHQsICJBbGxvY2F0aW5nIGFuIGFycm93IGZ1bmN0aW9uIik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworSlNBcnJvd0Z1bmN0aW9uOjpKU0Fycm93RnVuY3Rpb24oVk0m
IHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1Zh
bHVlIGJvdW5kVGhpcykKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+
Z2xvYmFsT2JqZWN0KCktPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSkKKyAgICAsIG1fYm91bmRU
aGlzKHZtLCB0aGlzLCBib3VuZFRoaXMpCit7Cit9CisKK0pTQXJyb3dGdW5jdGlvbiogSlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZN
JiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNW
YWx1ZSBib3VuZFRoaXMpCit7CisgICAgQVNTRVJUKGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0
aW9uKCktPmhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHZtLCBleGVj
dXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKK30KKwordm9pZCBKU0Fycm93RnVuY3Rpb246OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U0Fycm93RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZFRoaXMpOworfQorCitDb25zdHJ1Y3RUeXBl
IEpTQXJyb3dGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
JikKK3sKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NmNhY2E4NDI1NzYzOWYxNzNhNjJhOGJjMjM5ZTNhMGVlNjBhZWE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1
bmN0aW9uLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbGVr
c2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQXJyb3dGdW5jdGlvbl9oCisjZGVm
aW5lIEpTQXJyb3dGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERl
c2lyZWRPZmZzZXRzOworICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVu
Y3Rpb24geworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7Cisg
ICAgICAgIAorICAgICAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgICAgIHN0YXRpYyBKU0Fy
cm93RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisKKyAgICAgICAg
Y29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CisKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICAgICAgCisg
ICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAh
aW5saW5lQ2FwYWNpdHkpOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZihKU0Fycm93RnVuY3Rp
b24pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9u
KiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Nj
b3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Fy
cm93RnVuY3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNj
b3BlLCBib3VuZFRoaXMpOworICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1Y3R1cmUo
KS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJik7CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsg
cmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGds
b2JhbE9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgaW5s
aW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNBcnJvd0Z1bmN0aW9uLCBtX2JvdW5kVGhpcyk7Cisg
ICAgICAgIH0KKworICAgICAgICBERUNMQVJFX0lORk87CisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAg
ICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAorICAgICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7CisgICAgfTsKKyAgICAKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gSlNBcnJvd0Z1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCAwYjg3ZDc1YzkxNDUwYzVhZjFhYWVkMjdhNjFh
NzQ4ZWY4MGYwOTNlLi45MjgzNTBlMjQ3OGM0NWY3YmY3ZThhYTg0YzllYzNhNGUyNTJhODZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNDEsNiAr
MTQxLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVu
Y3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIEpTRnVuY3Rpb24o
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgSlNGdW5jdGlvbihWTSYs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKICAgICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGY2
YzZkNThlYzZlNWMxMTY0Y2IyN2ZhNWU0MTYxOGI0YjgxNDJmMDIuLmYwNTk1ODRjZjA3ZDdmZDY5
ZWEyZGNmZTI3YjYzYjY0NGE4ODQ0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaApAQCAtNDQsNiArNDQsMTMgQEAgaW5saW5lIEpT
RnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHMKICAgICAsIG1fcmFyZURhdGEoKQogewogfQorICAgIAoraW5saW5lIEpT
RnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IHNjb3BlLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4ZWN1dGFibGUodm0sIHRoaXMsIGV4ZWN1dGFi
bGUpCisgICAgLCBtX3JhcmVEYXRhKCkKK3sKK30KIAogaW5saW5lIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogSlNGdW5jdGlvbjo6anNFeGVjdXRhYmxlKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjZWU5YmJkOTQwNDQ5
MTI4OTQzODI3MWQwMDQ0MTdjMjI5YWQwNDIzLi5kYTFhYzI1YWFiMDA4NjJjZDUzNzMwZjlhNWFk
MTI1YTJkYzBmZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBleGVjLT5zZXRDYWxsZWUobV9nbG9i
YWxDYWxsZWUuZ2V0KCkpOwogCiAgICAgbV9mdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOworICAgIG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT
QXJyb3dGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSk7CiAgICAgbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpKTsKICAgICBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgbV9mdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0sIG1fZnVuY3Rpb25OYW1lT2Zmc2V0KSk7CiAgICAgbV9pbnRlcm5hbEZ1bmN0aW9u
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CkBAIC03OTUsNiArNzk3LDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxl
ZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25T
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Fycm93RnVu
Y3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVk
RnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5
bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmVnRXhwU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IDk5ODZiY2Y2MjQ1ZTJjYzQ2ODIwYjEzMTAyYjIzNDI5MDBlYzNk
N2IuLmJkMTJiMjkzMDU1ZTliYWUzMGJiNzNmZDkwMTViYzAwMzgzNjNjNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjMyLDYgKzIz
Miw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxlZVN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsK
KyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlOwogICAg
IFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CkBAIC00NjIsNiArNDYzLDcgQEAgcHVi
bGljOgogICAgIFN0cnVjdHVyZSogY2FsbGVlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsZWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogYm91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5j
dGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogYXJyb3dGdW5jdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogbmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZWRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0
aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAg
ICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259096</attachid>
            <date>2015-08-15 10:48:31 -0700</date>
            <delta_ts>2015-08-15 13:26:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150815204810.patch</filename>
            <type>text/plain</type>
            <size>28981</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi5iMDRhNmRjMTY5M2ZhN2Iy
NTQyYWQ0OTE3N2E5Njc2YTllMzA3ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTQgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjhhYjE1NWU1YTMwZmI0NzdmZWQ0M2IzZDE1MzZiY2Y4
NTQ2NzQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uOTA1N2ZiZjgxYzQ0N2YyYTEw
M2FiMjZmZDk1YTE5YjE2ZmZjNWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjkwLDYgKzY5MCw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXkuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0JvdW5kRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMjc5Miw2ICsyNzk1LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3Vu
ZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBjZGRhOGVj
MzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUxM2MwYmRl
Y2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYgKzExMzgs
OCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNFRUI2MTY4
NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZBOUU5MTE0
MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyog
SlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi87
IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQyNEIxQUJE
NkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQxODZEMUI2
MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQjEy
M0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkwMjEzRTNF
MTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyog
TWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1MkMzMjBG
Qjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2ICsyOTU3
LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRjaGVzQXJy
YXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJCQjJEMDAx
NzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fycm93RnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJvd0Z1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNBNDBDMjAw
RDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNl
ckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFy
ZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1Miw4IEBA
CiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovLAog
CQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAog
CQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKKwkJ
CQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAqLywKKwkJ
CQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8sCiAJCQkJ
NjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2NTdDRjQ1
NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVG
MDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJCQkJQTUw
M0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjggLyogSlNB
cnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgw
MDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
QEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4IC8qIERG
R011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkRDMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRMT3V0cHV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJDNDc4MDA4
NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUyZTQwMTJhMTg0YWEzNDc0OWNhNThjYWVlNjdmYTUyMTM2YzhiYTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNBcnJvd0Z1bmN0aW9uOjpzX2lu
Zm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0Fycm93RnVuY3Rpb24pIH07CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxs
KS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7Cit9CisKK0pTQXJyb3dGdW5j
dGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKK3sKKyAgICBK
U0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
LCBib3VuZFRoaXMpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlm
eVdyaXRlKHZtLCByZXN1bHQsICJBbGxvY2F0aW5nIGFuIGFycm93IGZ1bmN0aW9uIik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKyAgICAKK1N0cnVjdHVyZSogSlNBcnJvd0Z1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTQXJy
b3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgOiBCYXNl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0
aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhpcyh2bSwgdGhpcywgYm91bmRUaGlzKQor
eworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEFT
U0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5oYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7
Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Ym91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBKU0Fycm93RnVuY3Rpb246OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7CisgICAgcmV0dXJuIENvbnN0cnVj
dFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY2NzdlMjcyMjU1
YjgyMTc1OGQ2N2YxOWVmYTVjZmQyYjQ2M2Y0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmluZSBKU0Fycm93RnVuY3Rpb25faAorCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKyAgICAKK2NsYXNz
IEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworICAgICAgICAKKyAgICAgICAgc3RhdGljIEpT
QXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSos
IEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSosIEpTVmFsdWUpOworCisgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CisgICAgICAgIAorICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAg
ICAgIHJldHVybiBzaXplb2YoSlNBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRU
aGlzKQorICAgICAgICB7CisgICAgICAgICAgICBKU0Fycm93RnVuY3Rpb24qIGZ1bmN0aW9uID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJvd0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNB
cnJvd0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICAgICAg
ICAgIEFTU0VSVChmdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgICAgICAK
KyAgICAgICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsg
fQorICAgICAgICAKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgICAgICBzdGF0aWMgaW5saW5lIHB0
cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNBcnJvd0Z1bmN0aW9uLCBtX2JvdW5kVGhpcyk7CisgICAgICAg
IH0KKworICAgICAgICBERUNMQVJFX0lORk87CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAg
CisgICAgcHJpdmF0ZToKKyAgICAgICAgSlNBcnJvd0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgICAgICAKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCisgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX2JvdW5kVGhpczsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBKU0Fycm93RnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDBiODdkNzVjOTE0NTBjNWFmMWFhZWQyN2E2MWE3NDhl
ZjgwZjA5M2UuLjkyODM1MGUyNDc4YzQ1ZjdiZjdlOGFhODRjOWVjM2E0ZTI1MmE4NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE0MSw2ICsxNDEs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBKU0Z1bmN0aW9uKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwogCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZjZjNmQ1
OGVjNmU1YzExNjRjYjI3ZmE1ZTQxNjE4YjRiODE0MmYwMi4uZjA1OTU4NGNmMDdkN2ZkNjllYTJk
Y2ZlMjdiNjNiNjQ0YTg4NDQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC00NCw2ICs0NCwxMyBAQCBpbmxpbmUgSlNGdW5j
dGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogcwogICAgICwgbV9yYXJlRGF0YSgpCiB7CiB9CisgICAgCitpbmxpbmUgSlNGdW5j
dGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc2Nv
cGUsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkK
KyAgICAsIG1fcmFyZURhdGEoKQoreworfQogCiBpbmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBK
U0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGNlZTliYmQ5NDA0NDkxMjg5
NDM4MjcxZDAwNDQxN2MyMjlhZDA0MjMuLmRhMWFjMjVhYWIwMDg2MmNkNTM3MzBmOWE1YWQxMjVh
MmRjMGZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIGV4ZWMtPnNldENhbGxlZShtX2dsb2JhbENh
bGxlZS5nZXQoKSk7CiAKICAgICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNG
dW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSk7CisgICAgbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKTsKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdl
dCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsKICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTc5NSw2ICs3OTcsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGVlU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyb3dGdW5jdGlv
blN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5j
dGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9s
T2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdF
eHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4u
YmQxMmIyOTMwNTVlOWJhZTMwYmI3M2ZkOTAxNWJjMDAzODM2M2M2NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcg
QEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGVlU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOworICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgUHJv
cGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKQEAgLTQ2Miw2ICs0NjMsNyBAQCBwdWJsaWM6
CiAgICAgU3RydWN0dXJlKiBjYWxsZWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxl
ZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25O
YW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBT
dHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259103</attachid>
            <date>2015-08-15 13:26:16 -0700</date>
            <delta_ts>2015-08-15 14:09:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150815232555.patch</filename>
            <type>text/plain</type>
            <size>28981</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi5iMDRhNmRjMTY5M2ZhN2Iy
NTQyYWQ0OTE3N2E5Njc2YTllMzA3ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTQgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uOTA1N2ZiZjgxYzQ0N2YyYTEw
M2FiMjZmZDk1YTE5YjE2ZmZjNWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjkwLDYgKzY5MCw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXkuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0JvdW5kRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMjc5Miw2ICsyNzk1LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3Vu
ZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBjZGRhOGVj
MzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUxM2MwYmRl
Y2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYgKzExMzgs
OCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNFRUI2MTY4
NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZBOUU5MTE0
MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyog
SlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi87
IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQyNEIxQUJE
NkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQxODZEMUI2
MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQjEy
M0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkwMjEzRTNF
MTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyog
TWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1MkMzMjBG
Qjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2ICsyOTU3
LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRjaGVzQXJy
YXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJCQjJEMDAx
NzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fycm93RnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJvd0Z1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNBNDBDMjAw
RDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNl
ckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFy
ZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1Miw4IEBA
CiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovLAog
CQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAog
CQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKKwkJ
CQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAqLywKKwkJ
CQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8sCiAJCQkJ
NjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2NTdDRjQ1
NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVG
MDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJCQkJQTUw
M0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjggLyogSlNB
cnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgw
MDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
QEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4IC8qIERG
R011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkRDMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRMT3V0cHV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJDNDc4MDA4
NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUyZTQwMTJhMTg0YWEzNDc0OWNhNThjYWVlNjdmYTUyMTM2YzhiYTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNBcnJvd0Z1bmN0aW9uOjpzX2lu
Zm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0Fycm93RnVuY3Rpb24pIH07CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxs
KS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7Cit9CisKK0pTQXJyb3dGdW5j
dGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKK3sKKyAgICBK
U0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
LCBib3VuZFRoaXMpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlm
eVdyaXRlKHZtLCByZXN1bHQsICJBbGxvY2F0aW5nIGFuIGFycm93IGZ1bmN0aW9uIik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKyAgICAKK1N0cnVjdHVyZSogSlNBcnJvd0Z1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTQXJy
b3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgOiBCYXNl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0
aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhpcyh2bSwgdGhpcywgYm91bmRUaGlzKQor
eworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEFT
U0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5oYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7
Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Ym91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBKU0Fycm93RnVuY3Rpb246OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7CisgICAgcmV0dXJuIENvbnN0cnVj
dFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY2NzdlMjcyMjU1
YjgyMTc1OGQ2N2YxOWVmYTVjZmQyYjQ2M2Y0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmluZSBKU0Fycm93RnVuY3Rpb25faAorCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKyAgICAKK2NsYXNz
IEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworICAgICAgICAKKyAgICAgICAgc3RhdGljIEpT
QXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSos
IEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSosIEpTVmFsdWUpOworCisgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CisgICAgICAgIAorICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAg
ICAgIHJldHVybiBzaXplb2YoSlNBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRU
aGlzKQorICAgICAgICB7CisgICAgICAgICAgICBKU0Fycm93RnVuY3Rpb24qIGZ1bmN0aW9uID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJvd0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNB
cnJvd0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICAgICAg
ICAgIEFTU0VSVChmdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgICAgICAK
KyAgICAgICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsg
fQorICAgICAgICAKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgICAgICBzdGF0aWMgaW5saW5lIHB0
cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNBcnJvd0Z1bmN0aW9uLCBtX2JvdW5kVGhpcyk7CisgICAgICAg
IH0KKworICAgICAgICBERUNMQVJFX0lORk87CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAg
CisgICAgcHJpdmF0ZToKKyAgICAgICAgSlNBcnJvd0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgICAgICAKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCisgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX2JvdW5kVGhpczsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBKU0Fycm93RnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDBiODdkNzVjOTE0NTBjNWFmMWFhZWQyN2E2MWE3NDhl
ZjgwZjA5M2UuLjkyODM1MGUyNDc4YzQ1ZjdiZjdlOGFhODRjOWVjM2E0ZTI1MmE4NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE0MSw2ICsxNDEs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBKU0Z1bmN0aW9uKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwogCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZjZjNmQ1
OGVjNmU1YzExNjRjYjI3ZmE1ZTQxNjE4YjRiODE0MmYwMi4uZjA1OTU4NGNmMDdkN2ZkNjllYTJk
Y2ZlMjdiNjNiNjQ0YTg4NDQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC00NCw2ICs0NCwxMyBAQCBpbmxpbmUgSlNGdW5j
dGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogcwogICAgICwgbV9yYXJlRGF0YSgpCiB7CiB9CisgICAgCitpbmxpbmUgSlNGdW5j
dGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc2Nv
cGUsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkK
KyAgICAsIG1fcmFyZURhdGEoKQoreworfQogCiBpbmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBK
U0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGNlZTliYmQ5NDA0NDkxMjg5
NDM4MjcxZDAwNDQxN2MyMjlhZDA0MjMuLmRhMWFjMjVhYWIwMDg2MmNkNTM3MzBmOWE1YWQxMjVh
MmRjMGZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIGV4ZWMtPnNldENhbGxlZShtX2dsb2JhbENh
bGxlZS5nZXQoKSk7CiAKICAgICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNG
dW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSk7CisgICAgbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKTsKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdl
dCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsKICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTc5NSw2ICs3OTcsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGVlU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyb3dGdW5jdGlv
blN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5j
dGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9s
T2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdF
eHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4u
YmQxMmIyOTMwNTVlOWJhZTMwYmI3M2ZkOTAxNWJjMDAzODM2M2M2NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcg
QEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGVlU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOworICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgUHJv
cGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKQEAgLTQ2Miw2ICs0NjMsNyBAQCBwdWJsaWM6
CiAgICAgU3RydWN0dXJlKiBjYWxsZWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxl
ZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25O
YW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBT
dHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259122</attachid>
            <date>2015-08-16 04:25:47 -0700</date>
            <delta_ts>2015-08-16 06:45:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150816142525.patch</filename>
            <type>text/plain</type>
            <size>177463</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uODA3YmVjNThjYjg1NzFjYTAwYjYyOWMzMDM5NjRi
Yzc2YTI1OTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwg
YXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjIzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4LDYgKzIx
OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50
cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUq
KTsKQEAgLTIyMjEsNiArMjIzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVO
ZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3
RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDgw
MGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2
NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNj
b3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxl
TG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVO
ZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJ
bjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUzZGFm
MzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2
ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAg
ICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKyAg
ICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUp
OwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBp
bGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEz
Yi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAgICAg
ICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBzZXQgdGhl
aXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAgICAgICAg
IC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUw
M2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhw
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUz
YjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1
ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3MTguLjcx
MmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04
OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8o
U3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9s
OjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBT
eW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlv
bl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisg
ICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fy
cm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5j
dGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZp
bmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5
ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CkBA
IC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAgY2FzZSBU
b1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmlu
c2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNS
ZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhi
NC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2
LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpf
SklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnRQ
dHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUoaW50NjQs
IGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2ND
LCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAorICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGlu
dDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVu
Y3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFjcm8oSl9K
SVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50UHRyLCBp
bnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1bmN0aW9u
VHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4
NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAi
RlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJK
U0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKQEAgLTU5
Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21waWxlTG9h
ZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09
IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0Fy
cm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0
aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAgIAogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5k
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVlIGNhbGxS
ZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJs
ZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1
bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAgICA6IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rp
b24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAKLSAg
ICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAg
ICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAg
ICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyBhbGxv
Y2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFz
dC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5b3VuZy4K
LSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5j
dGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFi
bGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0gICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNG
dW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2Jq
ZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29wZSA6IG1f
aGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2lu
dGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9oZWFwcy5K
U0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxl
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICAgICBt
X291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRy
WmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAgICAgCiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVj
dCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBMVmFsdWUg
Y2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpLAotICAg
ICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7Cisg
ICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJhbWUsIHNj
b3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiB2
bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIo
ZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUxv
YWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25f
dGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQogICAgIHsK
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMz
ZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5
LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJs
ZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZh
bHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAgICAgICBp
c0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9IEpTVmFs
dWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAgICAgSlNG
dW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAgICAgIAor
ICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAgICAgICAg
ID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAgICAgICAg
ICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUxOWY4My4u
MGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1
YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2VmNTViMTIy
ZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5j
bHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07CisgICAg
Y2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5ODdjMzAz
YjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uMTRmZmQ1OTEzNmUwYTY4MWI5ZGNmMDg2MDAyMTkzNTI1
NTZhNjZkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC05
NDIsNiArOTQyLDE1IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBtb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KKyAgICAKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisg
ICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyNlbmRpZgogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQogICAgIHsKQEAgLTk1NSw2ICs5NjQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAg
ICB9CisgICAgCiAjZWxpZiBDUFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTEyMTMsNiArMTIy
MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAgIG1vdmUo
YXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CiAjZW5kaWYKIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDAzOGY1
ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3ZmYyZWJhNDBlYjQuLmJiYzg1MjNmNWJiMjNhMzkzMGMw
OTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIx
OSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9lbmQpCiAgICAgICAgIERFRklORV9PUChvcF9lbnRlcikKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2xvYWRfYXJyb3dm
dW5jdGlvbl90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9P
UChvcF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKQEAg
LTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERF
RklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHApCiAgICAgICAgIERFRklO
RV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4NDExYTdlZjY1YTljNmJk
Y2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2Li43NzFmZDliNDA2NWJkZDE3MjJjMGU3MmI4ODcyMDhl
YzYyZjFlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5OCw2ICs0OTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbG9h
ZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKQEAg
LTUzOSw2ICs1NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25l
d19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19m
dW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CkBAIC02NTMsNiArNjU1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24qLCBi
b29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2ln
bmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50
IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCk7CiAg
ICAgICAgIHZvaWQgZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50IHNjb3BlLCBTdHJ1Y3R1
cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAgLTcyMyw2ICs3MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQUlJlZywgQnlWYWxJbmZvKik7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzYywgR1BSUmVn
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FSnNjQywgaW50LCBHUFJSZWcsIEpTQ2VsbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgaW50LCBHUFJSZWcs
IEpTQ2VsbCosIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIEdQUlJlZywgaW50MzJfdCk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIGlu
dCwgR1BSUmVnLCBpbnQzMl90KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ZDY4NjkwMDgxYzk5NmQ3ZTMzYmYzYmQyNWRjYzU4
YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcyNDk1NmJmNTg0OTFiM2RlNzgzYTZmY2RjMjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjcxLDYgKzI3MSwxMiBAQCBB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSnNjQyBvcGVyYQogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAKK0FMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKc2NDSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQ
UlJlZyBhcmcyKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVz
dGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOworfQorICAgIAogQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2ludGVyKQogewogICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU5OGQ0ZWM5OWMxZDE4ZTZjMzk2
MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4M2JjYzhjNDVkZTY2NmY3M2M5ZTkxMWY1MTQyOWYzNWVi
MTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTY3Myw2ICs2NzQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1Qw
KTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQorICAgIAordm9pZCBKSVQ6OmVt
aXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1Qw
KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZU
aGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CkBAIC05NjIsMjYgKzk3MSw0NSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
ZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBlbWl0TmV3
RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKK3ZvaWQgSklUOjpl
bWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChj
dXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cDsKKyAgICAKICAgICBKdW1wIG5vdFVu
ZGVmaW5lZFNjb3BlOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5j
dGlvbikKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2g2NChO
b3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSkpKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0
KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdExv
YWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAgICBu
b3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcp
KTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICNlbmRpZgotCiAgICAgSnVt
cCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlLmxpbmsodGhpcyk7Ci0KLSAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhw
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhwcik7CisgICAgICAgIAorICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHBy
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIGlmIChpc0Fycm93RnVuY3Rp
b24pCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0
LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAgICBkb25l
LmxpbmsodGhpcyk7CiB9Ci0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hcnJvd19mdW5j
X2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5j
RXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorICAgIAogdm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOTFjMDBlM2ZkNDVlMDk3ZTNi
YjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4uYjM5YWUxZDFhMzA2ODAzNDNlOWZkOWE3MjMxNDI5YjZl
NTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTkyMiw2ICs5MjMsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
bG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFs
dWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQorCiB2b2lk
IEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYjVmOWUz
NjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMwMjRjZGNkYjkzYi4uNGZmMGUzZDE1MGI0MjYwZWY5NGIy
MWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTk0Miw2ICs5NDMsMzAgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rp
b246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCit7CisgICAg
QVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjpp
bmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OworICAgICAgICAKKyAgICBKU0Fycm93RnVuY3Rpb24qIGFycm93RnVuY3Rpb24gID0gaXNJbnZh
bGlkYXRlZAorICAgICAgICA/IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKQorICAgICAgICA6IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIAorICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyb3dGdW5jdGlvbik7Cit9CisgICAgCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
Cit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cit9CisgICAgCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21t
b24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7Cit9
CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggM2Q4M2Y1OTBk
Y2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJjYmU4NGY5Yi4uYTY3Y2FhY2IzMmZiMjE1OGE5YzA1ZTZh
NTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2bwogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBTKShFeGVj
U3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKc2ND
KShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQ0opKEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU1MpKEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6
ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0
aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlx
dWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
Sl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAtMjg4LDYgKzI4OSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXJXaXRoUHJv
ZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxs
KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRl
Kiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYW5k
bGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXgg
MmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDllZjliMDEzOGQ5YTgzZjFlYy4uYTJhNmIyYjExYzU2ODFl
MGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJWTS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTViODFl
ZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJiNDFmNTY4NWQ3Zi4uMmNkOWY2ZWI4ZDY4Mzg2ODcwOTdj
NGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5j
bHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAt
MTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgICAg
ICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQotCisgICAg
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkK
IHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTAxMywxMiArMTAxNCwyNCBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CisgICAgCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3BlKiBzY29w
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsK
LSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4
cHIocGNbM10udS5vcGVyYW5kKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CiAgICAg
Ci0gICAgTExJTlRfUkVUVVJOKGZ1bmMpOworICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29w
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9u
RXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVSTihKU0Fycm93RnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRoaXNWYWx1ZSkpOwogfQogCiBz
dGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQpAQCAtMTA5Niw3ICsxMTA5LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlw
ZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGUK
ICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKTsKICAgICBWTSYg
dm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxs
ZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAKKwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2Rl
UHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+
aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgKaW5kZXggOGNjNjlhOTYwMGJiZjlkODUzMzlkNjA5NTk1ZjY3YzY4ZDA3NjcxYi4u
M2YxZGFhODEyYjcwMmUyM2M2YWFlZjlmZDdjMDY3MWVlMjAyNWMwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTk3LDYgKzk3LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hhcik7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjOTEwNjE3ZWQ4MzRiNzRj
OWYyZjhlZTRiMjY4N2M4YjljZmUzYzdjLi43M2ZjNTg4NDQyZGRjNGI5Y2ZhN2I4OGYwMDRjYTg2
NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTgzLDYgKzExODMsMTAgQEAgX2xsaW50X29wX25ld19m
dW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHAp
CiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19hcnJvd19mdW5jX2V4cDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Fy
cm93X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDUpCiAKIF9sbGludF9vcF9jYWxsOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZTkwZWNlZGZhNzMwOTgyZmVlZjcx
ZWViMGNlYTY0MzgyMzRhNjkxYy4uN2VmNmI4N2MxNzBhZDA4M2IxZjUyOWRhODgzNmMwMGNkYTY0
YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIzNzMsMyArMjM3MywxMiBAQCBfbGxpbnRfb3Bf
cHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2goNikKKwor
X2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgSlNB
cnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDk0NTVmNzVjN2I2NjQy
ZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1Yi4uZDIxNTJhMmYyNzdhZGU1ODc5NzZhMWMzZjEyMDIz
NzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyMjYsMyArMjIyNiwxMSBAQCBfbGxpbnRfb3Bf
cHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2goNikKKwor
X2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBKU0Fycm93RnVuY3Rpb246Om1f
Ym91bmRUaGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAg
c3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5k
ZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5NGE2Ny4uODA2ZGI1MjMwM2Q1
YWQzYTcxODgxMjlmODhiZDc2NGM2YjUwZWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOSArMzYxLDE5IEBAIHB1YmxpYzoKICAgICAgICAg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVk
IGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0
aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwg
Ci0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJz
ZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1
bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29u
dGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0
aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgeworICAgICAgICB1c2VzVGhpcygp
OwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lv
bihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0
aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pOwotCi0gICAg
ICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5v
ZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJj
ZSk7CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0
aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0TG9j
KGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlvbi5z
dGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0ZTEyODg0OGVhOGI0M2ZkODYzNjk3NGNiOTk3YzM3ZGIu
LmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0M2JjYmExOTY5M2FkYmQxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC04OTAsMTMgKzg5
MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNF
eHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIAorICAgIGlubGluZSBCYXNlRnVuY0V4cHJO
b2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKICAgICB7CiAgICAgICAgIG1f
bWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9u
KTsKICAgICB9CiAKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisg
ICAgICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1fbWV0YWRhdGEsIHNv
dXJjZSkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9t
ZXRhZGF0YShtX21ldGFkYXRhKQpAQCAtOTA0LDYgKzkxMCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlkZW50LCBGdW5jdGlv
bkRlY2xhcmF0aW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgQXJyb3dGdW5jRXhwck5vZGU6OkFy
cm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24s
IGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwogI2lmIEVOQUJMRShF
UzZfQ0xBU1NfU1lOVEFYKQogICAgIGlubGluZSBDbGFzc0RlY2xOb2RlOjpDbGFzc0RlY2xOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0Rl
Y2xhcmF0aW9uKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGNmNGZlNDUwYTkyNDk1MDRmMzBiYTg1YTI2
NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUzMzA1YzRhMGMyMWM3MzM4ODM5YzI5ZjIzYzc0ZGU5Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcg
QEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgIFBhcnNl
ckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9k
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAg
ICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1u
KGVuZENvbHVtbikKQEAgLTE2Myw2ICsxNjMsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAg
LCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29u
c3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQorICAg
ICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2lu
ZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDFkNmIwM2Q3NzY2
Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQuLjg3MzY2OGVjMzdiNDI3YjkyMDY0OWRlMzA2
ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE2
NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzRG90
QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUFycmF5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDksNyArMTgxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAg
ICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQs
IFNvdXJjZVBhcnNlTW9kZSk7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
LCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKTsKIAogICAgICAgICB2b2lk
IGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5j
dGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzUsNiArMTgzNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRT
dGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2Nv
bnN0cnVjdG9yS2luZCk7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2ln
bmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxp
bmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2MCw2ICsxODYyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5z
aWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKKyAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwog
ICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2Rl
IHsKQEAgLTE4ODksMTggKzE4OTIsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2ln
bmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJhc2VGdW5jRXhwck5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgQmFzZUZ1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1l
dGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICB9OworCisKKyAgICBjbGFz
cyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9kZSB7CisgICAgcHVibGljOgor
ICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB9OwogCi0gICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhOworICAg
IGNsYXNzIEFycm93RnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNl
Q29kZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRB
WCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhZWU3MGI2YTcz
MjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxLi5mNTA4MTRlN2IxNDJhYjUzMDBkODRhNGI3
MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
aW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5h
bWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CisgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJv
ZHlUeXBlOwogICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIHx8
IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAgICAgICAgbmV4dCgpOwog
ICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVu
ZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0
ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVt
biwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNv
dW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTE1NjIsNyArMTU2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0
aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxzZQogICAg
ICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNr
Rm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAi
Q2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkg
b2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7Cisg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0
b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNv
bnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9u
KTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQ
YXJzZU1vZGUgbW9kZSkKQEAgLTE3MzcsNyArMTczOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1
aWxkCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gY29uc3RydWN0
b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLQorICAgIAogICAgIGZ1bmN0aW9uSW5m
by5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAvLyBJZiB3ZSBrbm93
IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm8g
YW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KQEAgLTE3NTYs
MTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgIGVuZExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0IDoKICAg
ICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tl
bi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLQorICAgICAgICAKKyAgICAgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZTsKKyAg
ICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0
aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAot
ICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNo
ZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5z
dHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBt
b2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+
cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BT
Y29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
QEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIG1f
bGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBm
dW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAK
LSAgICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQorICAgICAg
ICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNh
Y2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggMDc2MGMxOWViMTYz
NmRiMjFhMTc5NjEyYTU0OTZlMTljZmQxYmIwNy4uZGM1NjFmOWIxYTZkYTM2NDNiODI3MmZlN2Ix
MmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9u
IGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5
TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAg
aW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVj
dG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5
UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50
LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkg
eyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
QXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAg
dm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFy
Z3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCAwYWIxNjcyMTE2ODE5NGMxYTYwMjg5
ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2OTRmMjdhNDU4NzNiMmEyMTY3YTM2OTYzNWQzZTU5NDVh
YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApA
QCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0cjxDb2RlQmxvY2s+IFNjcmlwdEV4ZWN1dGFibGU6Om5l
d0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gZ2xvYmFsT2Jq
ZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2Zp
bGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc1Byb2ZpbGVyKCkgPyBQcm9m
aWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2sgPQotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJs
ZS0+Y29kZUJsb2NrRm9yKAotICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwg
a2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBleGVjdXRhYmxl
LT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgZXhlY3V0YWJsZS0+bV9z
b3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgZXhlY3V0YWJs
ZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNlKGV4ZWN1dGFibGUtPm1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0
YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0
YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykg
ewogICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmNlMjQyOGNiYzEwMWRkYTZjYjEw
MWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2YyYmRlODhjNWE2ZTkxNjc2MDM2ZWUyN2Q3NDRmNzY0NTM5
Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAt
NDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVu
c2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTMwLDcgKzUzMCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlv
bigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwg
aXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxz
ZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAg
LTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgp
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0
QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RB
YmlsaXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFz
c0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29u
c3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFjMjYwZTE2YTIwZTJiODQwOWFl
YmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6c19pbmZvID0geyAiQXJyb3dG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBcnJvd0Z1
bmN0aW9uKSB9OworCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
Cit7CisgICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2VsbCktPkpTQXJyb3dGdW5j
dGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9u
KiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsK
KyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgcmVz
dWx0LCAiQWxsb2NhdGluZyBhbiBhcnJvdyBmdW5jdGlvbiIpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMp
CisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgp
LT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhpcyh2bSwgdGhpcywg
Ym91bmRUaGlzKQoreworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlz
KQoreworICAgIEFTU0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5oYXNCZWVu
SW52YWxpZGF0ZWQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUs
IGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fYm91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBKU0Fycm93RnVuY3Rp
b246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7CisgICAgcmV0
dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIyMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCkBAIC0w
LDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNrYWNoa292
IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmluZSBKU0Fycm93RnVu
Y3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNHbG9iYWxPYmplY3Q7Citj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOwor
ICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERG
Rzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Cisj
ZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0
aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTQXJyb3dG
dW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9m
KEpTQXJyb3dGdW5jdGlvbik7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rp
b24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
U2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICB7CisgICAgICAgIEpTQXJyb3dG
dW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Fycm93RnVu
Y3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBi
b3VuZFRoaXMpOworICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxP
YmplY3QoKSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IHJldHVybiBmdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisKKyAgICBKU1ZhbHVl
IGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9CisgICAgCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKyAgICAK
KyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dGdW5jdGlvbiwgbV9ib3VuZFRo
aXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCitwcml2YXRl
OgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUq
LCBKU1ZhbHVlKTsKKyAgICAKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgIAorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2JvdW5kVGhpczsKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQXJyb3dGdW5jdGlvbl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMGI4N2Q3NWM5MTQ1
MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBmMDkzZS4uOTI4MzUwZTI0NzhjNDVmN2JmN2U4YWE4NGM5
ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaApAQCAtMTQxLDYgKzE0MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
ICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAg
IEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJl
Kik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIGlu
dCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3Jl
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2ZTVjMTE2NGNiMjdmYTVlNDE2MThiNGI4MTQyZjAyLi5m
MDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUyN2I2M2I2NDRhODg0NDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTQ0LDYgKzQ0
LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzCiAgICAgLCBtX3JhcmVEYXRhKCkKIHsKIH0K
KyAgICAKK2lubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQorICAgICwgbV9leGVjdXRhYmxlKHZt
LCB0aGlzLCBleGVjdXRhYmxlKQorICAgICwgbV9yYXJlRGF0YSgpCit7Cit9CiAKIGlubGluZSBG
dW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFkMDQyMy4uZGExYWMyNWFhYjAw
ODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMwZmYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0Fy
cm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC0yNTks
NiArMjYwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZXhlYy0+
c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsKIAogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5jdGlvblN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1bmN0aW9uU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIG1f
ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFtZU9mZnNldCkpOwogICAgIG1f
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwpA
QCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA5OTg2YmNmNjI0NWUyY2M0NjgyMGIx
MzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEyYjI5MzA1NWU5YmFlMzBiYjczZmQ5MDE1YmMwMDM4MzYz
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9m
dW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVu
Y3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJvd0Z1bmN0
aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlv
blN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwpAQCAtNDYy
LDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxlZVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbGVlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBm
dW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFy
cm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fycm93RnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBQcm9w
ZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9u
TmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0
aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3Ny
ZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWUzYTY2ZWE5MmYw
MzBkYjM3NzlhNGMzZTQwMmU3YzExOGQxZDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1v
c3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpzCkBAIC0wLDAgKzEsNDYgQEAKKyJ1c2Ug
c3RyaWN0IjsKKwordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBzaG91bGRUaHJvd1REWihm
dW5jKSB7CisgICAgdmFyIGhhc1Rocm93biA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUubmFtZS5pbmRleE9mKCJSZWZl
cmVuY2VFcnJvciIpICE9PSAtMSkKKyAgICAgICAgICAgIGhhc1Rocm93biA9IHRydWU7CisgICAg
fQorICAgIGlmICghaGFzVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRpZCBub3Qg
dGhyb3cgVERaIGVycm9yIik7Cit9CisKK2Z1bmN0aW9uIGJhcihmKSB7IH0KKworZnVuY3Rpb24g
Zm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gICh4KSA9PiB7IHJl
c3VsdCA9IHg7IHJldHVybiB0ZHpQZXJwZXRyYXRvcjsgfQorICAgIGlmIChiKSB7CisgICAgICAg
IE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAg
ICAgICAgICAgcmV0dXJuIHRkelBlcnBldHJhdG9yOworICAgICAgICB9CisgICAgfQorICAgIGxl
dCB0ZHpQZXJwZXRyYXRvcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIp
Oworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKHNob3VsZFRocm93VERaKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgYm9vbCA9ICEoaSAlIDEwMCk7CisgICAgaWYg
KGJvb2wpCisgICAgICAgIHNob3VsZFRocm93VERaKCgpPT4geyBmb28oYm9vbCk7IH0pOworICAg
IGVsc2UgeworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKGJvb2wpOworICAgICAgICBpZiAocmVz
dWx0ICE9IDApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0
aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDFiYmUx
NDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5YzY1YTRiYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24t
c2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBAQAordmFyIG4gPSAx
MDAwMDAwOworCitmdW5jdGlvbiBiYXIoc2V0KSB7CisgICAgdmFyIHJlc3VsdCA9IHNldCgwKTsK
KyAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlOiAiICsgcmVzdWx0OworfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQg
PSAwOworICAgIHZhciBpbVVuZGVmaW5lZDsKKyAgICB2YXIgYmF6OworICAgIHZhciBzZXQgPSAg
KHgpID0+IHsKKyAgICAgICAgcmVzdWx0ID0geDsKKyAgICAgICAgaWYgKGJheiAhPT0gNTApCisg
ICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGJhejsKKyAgICAgICAgcmV0
dXJuIGltVW5kZWZpbmVkOworICAgIH07CisgICAgYmF6ID0gNTA7CisgICAgaWYgKGIpIHsKKyAg
ICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsg
aSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYg
KHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdiMmMyYWQzNDVlMjZjMjAzNzc4OTBkZjVmMzFmYWYwNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCwwICsxLDI1IEBACit2
YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYikg
eworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geyByZXN1bHQgPSB4
OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgewor
ICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28p
OworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28o
IShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24t
c2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3OWVjOWVhYTY1YzU0MTkzMGI5MDQ4MjZlN2EyM2ExM2Zi
MmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIg
biA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEwKTsgfQorCitmdW5jdGlvbiBm
b28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSB4ID0+IHsgcmVzdWx0
ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVz
dWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGlu
ZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsK
KyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJv
dW5kLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDMyMDg4YWJmMjZkYWUyYWU3MWEyYWM0YzA1ZDRmMDc3
NTVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKQEAgLTAsMCArMSwxOCBAQAordmFyIHRlc3RDYXNl
ID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBl
Y3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIgZCA9
IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCAr
IHo7IH0KK307CisKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKwor
Zm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC55KCkuYmluZChlLCAi
bGV5IikoKSwgImJhcmxleSIsICJFcnJvcjogZnVuY3Rpb24gYmluZCBzaG91bGRuJ3QgY2hhbmdl
IGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5YzgzYWM1M2E3ZjZkMzUxOTYyMzIxNGMxZTlmYzYwZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0
aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAi
JywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGQgPSB7CisgIHgg
OiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9Owor
bm9JbmxpbmUoZC55KTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitmb3IgKHZhciBpPTA7
IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0Q2FzZShkLnkoKS5jYWxsKGUpLCAiZm9vIiwgIkVycm9y
OiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0IGNoYW5nZSB0aGUgbGV4aWNhbCBiaW5kaW5nIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiIpOworICAgIHRlc3RDYXNlKGQueSgpLmFwcGx5KGUpLCAiZm9vIiwg
IkVycm9yOiBmdW5jdGlvbiBhcHBseSBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGlu
ZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3OTQ5YmM2YjJjNzhhYjQ2NTllYThjMmFjNjNkZTYyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsMjIgQEAKK3ZhciB0ZXN0Q2FzZSA9
IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0
ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIHNpbXBs
ZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworbm9JbmxpbmUoc2ltcGxlQXJyb3dGdW5jdGlv
bik7CisKK3ZhciBlcnJvck9uQ3JlYXRlID0gZmFsc2U7CisKK2ZvciAoaT0wO2k8MTAwMDA7aSsr
KSB7CisgICB0cnkgeworICAgICAgIHZhciBmYyA9IG5ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCk7
CisgICB9CisgICBjYXRjaCAoZSkgeworICAgICBlcnJvck9uQ3JlYXRlID0gdHJ1ZTsKKyAgIH0K
KworICAgIHRlc3RDYXNlKGVycm9yT25DcmVhdGUsIHRydWUsICJFcnJvcjogTm8gZXhjZXB0aW9u
IGR1cmluZyBydW4gbmV3IEFycm93RnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNmYWIyNGM5MWJjNTdjOTU4NzYz
MmRmZWM5YTRjOTM3OThlMjE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCkBA
IC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVk
LCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVz
c2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVh
bCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0g
bmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7CisgIHRoaXMu
Z2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7Cit9CisKK25v
SW5saW5lKERvZykKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkrKykgeworICB2YXIgZCA9IG5l
dyBEb2coIk1heCIpOworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1lLCAiRXJyb3I6IHRo
aXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAj
MSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVjODE2NGU0OGQwM2E2N2ViOTJhNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGZ1bmN0aW9u
Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9
OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCit0ZXN0Q2Fz
ZShpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCit2
YXIgb2JqID0geworICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4gdGhp
czsKKyAgfQorfTsKKworbm9JbmxpbmUob2JqLm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoKSA9PT0gb2JqLCB0cnVl
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMyIpOworfQorCit2YXIgZmFrZSA9IHtzdGVhbDogb2JqLm1ldGhvZCgpfTsK
K25vSW5saW5lKGZha2Uuc3RlYWwpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7
CisgICAgdGVzdENhc2UoZmFrZS5zdGVhbCgpID09PSBvYmosIHRydWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM0Iik7
Cit9CisKK3ZhciByZWFsID0ge2JvcnJvdzogb2JqLm1ldGhvZH07Citub0lubGluZShyZWFsLmJv
cnJvdyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShy
ZWFsLmJvcnJvdygpKCkgPT09IHJlYWwsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNh
bGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMTkwODZk
NTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4OTM5YzA5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0
dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewor
ICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3
YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsgbmFtZTonb2Jq
JywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICIt
bmFtZS0iICsgdmFsdWU7IH19OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0
ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ29iai1uYW1lLXRl
c3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8
MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MSA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRv
U3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQxLCAnb2JqLW5hbWUtdGVzdCcgKyBpLnRvU3Ry
aW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5uYW1lPSduZXdPYmonOworCitmb3IgKHZh
ciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsg
aS50b1N0cmluZygpKSwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjNSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0
MiA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1
bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBu
b3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg1YmQzNjNlNGU0NmIwMmQyZjE5YmJlMzg1MDJmNTI4MjMzYTlmMTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAtMCwwICsxLDI2IEBACit2YXIgdGVzdENhc2UgPSBmdW5j
dGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsg
IicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsK
KyAgbmFtZTonb2JqJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFs
T2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhp
cy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9OworCitub0lubGluZShvYmouaW50
ZXJuYWxPYmplY3QubWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAg
ICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmlu
ZygpKSwgJ2ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICMxIik7Cit9CisKK29iai5pbnRlcm5hbE9iamVjdC5uYW1lPSduZXdJbnRlcm5hbE9iamVjdCc7
CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLmludGVy
bmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICduZXdJbnRlcm5hbE9i
amVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzU0OTRj
ZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVhY2U2Mjg3NTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLTUuanMKQEAgLTAsMCArMSw0OCBAQAordmFyIHNvcnRlZFZhbHVlczsKKwordmFyIHRl
c3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIg
KyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisK
K3ZhciBvYmogPSB7CisgIGFycjogWzEsIDQsIDYsIDMsIDcsIDBdLAorICBidWJibGVTb3J0OiBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHsKKyAgICAgIHZhciB0bXA7CisgICAgICB2
YXIgYXIgPSB0aGlzLmFyci5zbGljZSgpOworICAgICAgdmFyIF9sZW5ndGggPSBhci5sZW5ndGgK
KyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbmd0aDsgaSsrKSB7CisgICAgICAgIGZvciAo
dmFyIGogPSBpOyBqID4gMDsgai0tKSB7CisgICAgICAgICAgaWYgKChhcltqXSAtIGFyW2ogLSAx
XSkgPCAwKSB7CisgICAgICAgICAgICB0bXAgPSBhcltqXTsKKyAgICAgICAgICAgIGFyW2pdID0g
YXJbaiAtIDFdOworICAgICAgICAgICAgYXJbaiAtIDFdID0gdG1wOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGFyOworICAgIH0KKyAgfQorfTsKKworbm9J
bmxpbmUob2JqLmJ1YmJsZVNvcnQpOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgewor
ICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgMywgNywgMF07CisgICAgdGVzdENhc2Uob2JqLmJ1
YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmlu
ZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKworICAgIHZhciBzb3J0ZWRW
YWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzBd
LCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBh
cnJvdyBmdW5jdGlvbiAjNiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1s2XSwgNywgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzciKTsKKworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgNSwgOCwgMjEsIDE5LCAw
XTsKKworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgsIDksICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVz
dENhc2Uoc29ydGVkVmFsdWVzWzFdLCAxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTIiKTsKKyAgICB0ZXN0Q2FzZShz
b3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTMiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQxN2JjN2M4ZjE4MDUzNThi
ZGJhODViMmNlZjZhNjliNWY0MWVjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02Lmpz
CkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cg
bWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFj
dHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1l
ID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gIHRoaXMubmFtZTsKKyAgdGhpcy5nZXRO
YW1lTmVzdGluZ0xldmVsMSA9ICgpID0+ICgpID0+IHRoaXMubmFtZTsKKyAgdGhpcy5nZXROYW1l
TmVzdGluZ0xldmVsMiA9ICgpID0+ICgpID0+ICgpID0+IHRoaXMubmFtZTsKK30KKwordmFyIGQg
PSBuZXcgRG9nKCJNYXgiKTsKKworbm9JbmxpbmUoZC5nZXROYW1lKCkpOworbm9JbmxpbmUoZC5n
ZXROYW1lTmVzdGluZ0xldmVsMSgpKCkpOworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVs
MigpKCkoKSk7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC5n
ZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGlu
c2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lTmVz
dGluZ0xldmVsMSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmlu
ZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKyAgdGVzdENhc2UoZC5nZXRO
YW1lTmVzdGluZ0xldmVsMigpKCkoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxMGEzMWQ2NzMxYWU2OTc0ZDY2N2VkOGQyNDg3
MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4
aXQuanMKQEAgLTAsMCArMSwzNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRl
eHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKCkgeyB9CisK
K2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICh4
KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0Cisg
ICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkK
KyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAg
ICByZXN1bHQgPSB4OworICAgIH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7Cisg
ICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGlu
ZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsK
KyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAg
aWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0
aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDMwNjM3Yzg1YmY5NDIxYWU5Yzk3ZTBkZDdm
NmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcwpA
QCAtMCwwICsxLDM4IEBACit2YXIgbiA9IDEwMDAwMDAwOworCit2YXIgbmV3Q29udGV4dCA9IHsK
KyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBiYXIoZikgeworICAgIGlmICh0
aGlzID09IG5ld0NvbnRleHQpCisgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIG5lc3Rp
bmcgZnVuY3Rpb24nOworICAgIGYoMTApOworfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZh
ciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAgcmVzdWx0ID0geDsK
KyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlm
ICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAg
ICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uJzsKKyAgICB9OworCisg
ICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMTAp
CisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citu
b0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciBy
ZXN1bHQgPSBmb28uY2FsbChuZXdDb250ZXh0LCAhKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0
ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNp
bmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OWUwMjcxMzljMTY2N2Ux
MDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmct
bm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuZXdDb250ZXh0ID0g
eworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAz
OyB9Citub0lubGluZShjYWxsKTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRo
IHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7Cisg
ICAgdmFyIGYgPSAoKSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbiAjMSc7CisgICAgfTsKKyAgICBpZiAocCkgeworICAgICAgICBjYWxsKGYpOyAvLyBGb3Jj
ZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAgICAgICAgIE9TUkV4aXQo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAgcmV0dXJuIHsgJ3gn
OiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkgeworICAgIHZhciBvID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsK
KyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRv
IGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJv
dyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNr
IHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFy
IGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjog
ZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlz
LXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3ZGUyOGY2MGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM2IEBACit2YXIgbmV3Q29u
dGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91bGQgYmUgaW52b2Nl
ZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQKK2Z1bmN0aW9uIHNp
bmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cg
ZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0
aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQg
b2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAo
cCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAg
ICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0
aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAg
IHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsKKyAgICAgIHJldHVy
biB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgZmFs
c2UpOy8vIFN1YnN0aXR1dGUgdGhpcworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAo
cmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsg
cmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNv
bXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBw
cm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRl
eHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCit2YXIgcmVzdWx0ID0gZig0Mik7Citp
ZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAi
ICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2lu
Zy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3ZWEwNzYzNWE0MTMxY2QyMzExZDQ1MDczNWY1N2MxZGQ5
NTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSw0
NSBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8g
U2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250
ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8v
IENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9
IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93
ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKworICAgICAgcmV0dXJuIHg7
CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyByZXR1cm4gZzsgfQor
ICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3Jl
IGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdD
b250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0
aW9uICMyJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5saW5lKHNpbmspOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsuY2Fs
bChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsvLyB1c2UgY2FsbCB0byBzdWJzdGl0dXRlIGNvbnRl
eHQKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0
aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQg
dGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRv
IHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0aGUgaW1wbGljaXQgaW5uZXIg
ZWxzZSBicmFuY2gKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsK
K3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91
bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5
IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7
CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUg
cHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwg
dHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tb3Ro
ZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNlMGM2NThkM2EyZjc5MjI5ZGY0Zjg5MmNjZGExNTEz
Yzk0ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDE3IEBACit2YXIgdGVzdENh
c2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4
cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBz
aW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93RnVu
Y3Rpb24pOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRlc3RDYXNlKE9iamVj
dC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSwgRnVuY3Rpb24ucHJvdG90eXBl
LCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdldFByb3RvdHlwZU9mIHZhbHVlIGZvciBhcnJvdyBmdW5j
dGlvbiIpOworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVu
Y3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBpbnN0YW5jZW9mIG1l
dGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5j
dGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBOb3QgY29ycmVjdCBy
ZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1ldGhvZCBvZiBhcnJvdyBmdW5jdGlvICAgbiIpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YTFmMGE0OWNiMTY4NjNjNTkyMTM2
MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKQEAgLTAsMCArMSwyNCBA
QAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsK
KyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhw
ZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9
Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZv
cih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUp
IHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0
aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOwor
ICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFs
c2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwg
dHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiBv
bmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5n
IGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0x
MC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNkYjNjNzBhMWIyN2MzZGJiNTIzODA5NTVmNTM1M2Q3Njc0
MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIHRlc3RDYXNl
ID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBl
Y3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlv
biBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNv
dW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMu
bmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUi
KTs7CisgICAgfTsKKworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAg
aWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsK
KyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEpLCB0cnVl
LCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gb25lIHRpbWUiKTsK
K3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJv
dyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFiMDFjYTI3ZDBiOTcyMGI1N2U4ZDYwNTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tcnVuLTEwMDAwLTEuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rp
b24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICIn
LCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291
bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKysp
IHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5h
bWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAg
IHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2Jq
LmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVy
biByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6
IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1y
dW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQyNzFmNGEzMTU5MTYyNWEwYmQz
ZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzCkBAIC0wLDAgKzEs
MjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOwor
ICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmogPSBmdW5jdGlvbiAo
bmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMuZ2V0TmFtZSA9ICgp
ID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisgICAgdmFyIG9iaiA9IG5ldyBPYmoo
Ikl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAg
ICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVz
dENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBv
ZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFs
bG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODYyYzYyOGUz
YjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1MWRlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1uby1kb3Vi
bGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9
IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFy
IGYgPSAoKSA9PiB7IH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9yY2Ug
YWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0KCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4Jzog
MiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIGlmIChvLnggIT0gMykK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBidXQgaXMgIiArIHJl
c3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJv
cGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Citp
ZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMyBidXQg
aXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAxNDBmYTE0OTk3M2UxN2FhYThkOTEwNWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNpbmsgKHAs
IHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgp
OyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUs
IGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikK
KyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKwor
Ly8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRv
IHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2Nh
dGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0g
Zig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIg
YnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3ZWZjNjE4NmJlMDU3YzNjYmIyNzYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
c2lua2luZy1wdXQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2luayAocCwgcSkgewor
ICAgIHZhciBnID0geCA9PiB4OworICAgIGlmIChwKSB7IGlmIChxKSBnLmlubmVyID0gNDI7IHJl
dHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geDsKK30KK25vSW5saW5lKHNpbmspOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1
ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0
IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUg
RlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2Ug
YnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJlc3VsdCA9IGYoMTIpOwor
aWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIgYXMgaXQgc2hv
dWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0aHJvdyAiRXJy
b3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hlY2sgdGhhdCB0aGUg
YWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2
YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1
bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIg
KyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0OTIzOTcxOTgzZGNkYTM0YzI2
OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI3IEBACit2
YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0
cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3Jl
U3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgZXhjZXB0aW9u
ID0gbnVsbDsKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRyeSB7CisgICAgICAg
bmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAg
ICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQorICAgICAgICAgIHRocm93ICJF
eGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOworICB9CisKKyAgaWYg
KCFleGNlcHRpb24pCisgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJvd24gZm9yIGFuIHVu
aXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKKworICB2YXIgZSA9IG5ldyBCKGZhbHNlKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi10eXBlb2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2VjMGRkZDU1MTRmYWY0ZDBkMDNj
OWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAgKzEsMjcgQEAK
K3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Cisg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVj
dGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQor
fTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7YSArIDF9OworCitu
b0lubGluZShhZjEpOworbm9JbmxpbmUoYWYyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgKytpKSB7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjEsICJmdW5jdGlvbiIsICJFcnJvcjogTm90
IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UodHlw
ZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMiIpOworCisvL0ZpeG1lOiBTb21lIGJ1ZyBpbiBpbmxpbmluZyB0eXBlb2Yg
d2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFtZXRlcnMgZnRsLW5vLWNqaXQtbm8taW5saW5lLXZhbGlk
YXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1ZSAtLWVuYWJsZUZ1bmN0aW9uRG90QXJndW1lbnRzXD10
cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXRocmVzaG9sZEZvckpJVEFmdGVyV2Fy
bVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBoPXRydWUgLS1tYXhpbXVtSW5saW5pbmdEZXB0aD0xCisv
LworLy8gZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSAgeworLy8gICBpZiAodHlwZW9m
IChmdW5jdGlvbiAoKSB7fSkgIT09ICdmdW5jdGlvbicpCisvLyAgICAgICB0aHJvdyAnV3Jvbmcg
dHlwZSc7CisvLyB9CisvLyAgdGVzdENhc2UodHlwZW9mICgpPT57fSwgImZ1bmN0aW9uIiwgIkVy
cm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMy0iICsgaSk7CisK
Ky8vICB0ZXN0Q2FzZSh0eXBlb2YgKChiKSA9PiB7YiArIDF9KSwgImZ1bmN0aW9uIiwgIkVycm9y
OiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUzNDU3Y2FhNjRkMWU2YjdhMDIuLmYxZDFiOGYxNTAwYWRj
Y2U4YjczYzY4ODVjODA1ODgzYzk2NzA1MTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0w
OC0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KKworICAgICAg
ICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rp
b24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCBvZiB0aGlzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5NTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tYmlu
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tYmluZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJy
b3dmdW5jdGlvbi10eXBlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJv
d2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qczog
QWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanM6
IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5q
czogQWRkZWQuCisKIDIwMTUtMDgtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2UgZmxha2luZXNzIG9mIGluc3Bl
Y3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYjMyNmNjYmI0ZTE0
YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2YwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1
cmluZyBpbnZva2UgYmluZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBk
LnkoKS5iaW5kKGUsICdsZXknKSgpIGlzICdiYXJsZXknCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJp
bmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlhY2IyYmM4ZmQ1MDRjNjhmMDQ0NWE2ZWFjNGE2YTE0NTRh
YmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5k
Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNmNDVlMTZiOTk2NTcyZDFhZmRlZWRkNTkxMTI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlz
IHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHkKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCkuY2FsbChlKSBpcyAnZm9vJworUEFT
UyBkLnkoKS5hcHBseShlKSBpcyAnZm9vJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2YTg3NDllYzViN2U3ODNjNmE5ZWMzMTMyZDJkMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NjcwNmZmZjE3YzIxMjM4NTM2NDBiYjJhNGViMTdkNjNlMWEzNzIz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBm
dW5jdGlvbiBubyBjb25zdHJ1Y3RvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2ltcGxlQXJy
b3dGdW5jdGlvbigpJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25z
dHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5Y2RkNGQ4YmRmYTYyNDFjYjZiZWZiZjA0Y2M5NTgzMGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVj
dG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjY2ZmMyODhj
YWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBsZXhpY2FsIGJpbmQg
b2YgdGhpcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkLmdldE5hbWUo
KSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lSGFyZCgpIGlzIGQubmFtZQorUEFTUyBkLmdldE5h
bWVOZXN0aW5nKCkoKSgpIGlzIGQubmFtZQorUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBp
cyAnb2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIG9iai5tZXRob2QoKSgnY29ycmVjdCcpIGlz
ICduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRlcm5hbE9iamVjdC5t
ZXRob2QoKSgnY29ycmVjdCcpIGlzICdpbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnCitQQVNT
IGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3SW50ZXJu
YWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNl
IGlzIHRydWUKK1BBU1Mgb3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJPYmogaXMgdHJ1ZQor
UEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1MgcmVhbC5ib3Jyb3co
KSgpID09PSByZWFsIGlzIHRydWUKK1BBU1MgYXJyb3dGdW5jdGlvbignLXRoaXMnKSBpcyAicmln
aHQtdGhpcyIKK1BBU1MgaG9zdE9iai5mdW5jKCctdGhpcycpIGlzICJyaWdodC10aGlzIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbCBi
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MWVhMjJhNzZmZGY4YmZmNWU3MmU1MWI3Nzk0YjNlMzQ3ZDE2NDJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3Ro
ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTE1MmU1ZTM3YzY5MTVmMzgyM2UyOWIyMGE5
NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBFUzYg
YXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9ycworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxl
QXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rpb24ucHJvdG90eXBlCitQQVNTIHNpbXBsZUFycm93RnVu
Y3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVlCitQQVNTIHNpbXBsZUFycm93RnVuY3Rp
b24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNjdmOGIwMGU0NjA1NWVlNmZhZTVjMWU4Mjg5ZWZl
ZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRk
ei1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZjZDg2MDBlODg0MTI3N2M0OTRhOTg5MDIyNDUyZWE2YWI1
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
IHRlc3QgdGR6CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlzUmVmZXJl
bmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2QzZmM0OGU1YzUzZmMxMTkyNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCkBAIC0wLDAgKzEsMTAg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJmYjJj
ZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUwY2E1MzQ5YzFiYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNTIHR5cGVv
ZiBhZjIgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKCgpPT57fSkgPT09ICdm
dW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKChiKSA9PiB7YiArIDF9KT09PSdmdW5jdGlv
bicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2NWUzNzNmZWRiNzQzODBlMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sCkBAIC0wLDAgKzEs
MTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2MWRlM2JhYjUyMDljNzJkZGNmNTAyMTAwMzQ1ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxs
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1j
YWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0
aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2MWNiZWIwYjllZTEzM2ZlODczMTEyYmZhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjRjODQyNzZlNzEwODc3ODZjNTk0
MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBAQAor
dmFyIGFmID0gKGEsIGIpID0+IGEgKyBiOworCitub0lubGluZShhZik7CisKK2Z1bmN0aW9uIGJh
cihhLCBiKSB7CisgICAgcmV0dXJuIGFmKGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIo
MSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTczYzNiNWUwY2E3OTE3
OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE1IEBA
Cit2YXIgZmUgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7fQorCitub0lubGluZShm
ZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZlKGEsIGIpOworfQorCitu
b0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAg
IHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTNm
MDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0ZTk5NzljMDJhYzJhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpAQCAtMCww
ICsxLDEyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhp
cyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kJyk7CisKK3ZhciBkID0g
eworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHogPT4gdGhpcy54ICsg
ejsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitzaG91bGRCZSgiZC55KCkuYmlu
ZChlLCAnbGV5JykoKSIsICInYmFybGV5JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
YWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4ZjkxMWJmMWM0NGQzODlkMGEzZDIxODQ2ODM0ODRiNmY5
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3Ig
RVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52
b2tlIGNhbGwmYXBwbHknKTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9OworCit2YXIgZSA9IHsgeCA6ICJiYXIi
IH07CisKK3Nob3VsZEJlKCdkLnkoKS5jYWxsKGUpJywgIidmb28nIik7CitzaG91bGRCZSgnZC55
KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmFkMDc2ODQ3YmZmNDkyOWY3ODA3NzY1Zjk5
MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDcgQEAKK2Rlc2NyaXB0
aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVjdG9yJyk7CisKK3Zh
ciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZFRocm93KCduZXcgc2lt
cGxlQXJyb3dGdW5jdGlvbigpJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTU2YTE1NTMwZjM0Y2MzMDhh
Y2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKQEAgLTAsMCAr
MSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNh
bCBiaW5kIG9mIHRoaXMnKTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0g
bmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7CisgIHRoaXMu
Z2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7CisgIHRoaXMu
Z2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBk
ID0gbmV3IERvZygiTWF4Iik7CitzaG91bGRCZSgnZC5nZXROYW1lKCknLCAnZC5uYW1lJyk7Citz
aG91bGRCZSgnZC5nZXROYW1lSGFyZCgpJywgJ2QubmFtZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFt
ZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1lJyk7CisKK3ZhciBvYmogPSB7CisgIG5hbWUgICA6ICdv
YmpDb2RlJywKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAodmFsdWUpID0+
IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7CisgIH0KK307CisKK3Nob3VsZEJlKCJvYmou
bWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInb2JqQ29kZS1uYW1lLWNvcnJlY3QnIik7CitvYmoubmFt
ZT0nbmV3T2JqQ29kZSc7CitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25l
d09iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworCit2YXIgZGVlcE9iaiA9IHsKKyAgbmFtZSA6ICd3
cm9uZ09iakNvZGUnLAorICBpbnRlcm5hbE9iamVjdDogeworICAgIG5hbWUgIDonaW50ZXJuYWxP
YmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlz
Lm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9CisgIH0KK307CitzaG91bGRCZSgiZGVlcE9iai5p
bnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidpbnRlcm5hbE9iamVjdC1uYW1l
LWNvcnJlY3QnIik7CisKK2RlZXBPYmouaW50ZXJuYWxPYmplY3QubmFtZSA9ICduZXdJbnRlcm5h
bE9iamVjdCc7CisKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdj
b3JyZWN0JykiLCAiJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCciKTsKKwordmFyIGZ1
bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRo
aXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCitz
aG91bGRCZSgiaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSIsICJ0cnVlIik7CisKK3ZhciBv
d25lck9iaiA9IHsKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB0
aGlzOworICB9Cit9OworCitzaG91bGRCZSgib3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJP
YmoiLCAidHJ1ZSIpOworCit2YXIgZmFrZSA9IHsgc3RlYWwgOiBvd25lck9iai5tZXRob2QoKSB9
Oworc2hvdWxkQmUoImZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIg
cmVhbCA9IHsgYm9ycm93IDogb3duZXJPYmoubWV0aG9kIH07CitzaG91bGRCZSgicmVhbC5ib3Jy
b3coKSgpID09PSByZWFsIiwgInRydWUiKTsKKwordmFyIGFycm93RnVuY3Rpb24gPSB7IHggOiAi
cmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9uIDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMu
eCArIHo7IH19LmdldEFycm93RnVuY3Rpb24oKTsKK3ZhciBob3N0T2JqID0geyB4IDogIndyb25n
IiwgZnVuYyA6IGFycm93RnVuY3Rpb24gfTsKKworc2hvdWxkQmUoImFycm93RnVuY3Rpb24oJy10
aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CitzaG91bGRCZSgiaG9zdE9iai5mdW5jKCctdGhpcycp
IiwgJyJyaWdodC10aGlzIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVy
cy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNzk5MzFjM2RlYmNiNTAyN2FkMTRmZDE1NDdlNWFiYTAzOGI0YjExCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIEluc3BpcmVkIGJ5IG1vemlsbGEgdGVz
dHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2Yg
YW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9
PiB7fTsKKworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0
aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0
aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24iLCAidHJ1ZSIpOworc2hvdWxkQmUoInNpbXBsZUFycm93
RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24iLCAidHJ1ZSIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY1OGZjNjUxM2VkYWJkZTFkZDY1MDc0
OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2NyaXB0aW9u
KCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6Jyk7CisKK3ZhciBBID0gY2xh
c3MgQSB7IH07Cit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IoYWNj
ZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgewor
ICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgc3VwZXIoKTsKKyAgICB9CisgIH0KK307CisKK3ZhciBpc1JlZmVyZW5jZUVycm9yID0g
ZmFsc2U7Cit0cnkgeworICAgICBuZXcgQih0cnVlKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBpc1Jl
ZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOworfQorCitzaG91bGRC
ZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7CisKK3ZhciBlID0gbmV3IEIoZmFsc2UpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmFhMjY5
MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAg
KzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsK
Kworc2hvdWxkQmUoInR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91
bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0
eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlw
ZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIiwgInRydWUiKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259123</attachid>
            <date>2015-08-16 06:45:24 -0700</date>
            <delta_ts>2015-08-16 07:14:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150816164502.patch</filename>
            <type>text/plain</type>
            <size>177584</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uYTBiNTg4MzAyYTI2YjMxMTllMWQ3ZjBlOTRj
MzFhZjllYzU5YzI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC05NDIsNiArOTQyLDE1IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBtb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KKyAg
ICAKKyNpZiBPUyhXSU5ET1dTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGVXKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAgIG1vdmUo
YXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisjZW5kaWYKIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKICAgICB7CkBAIC05NTUsNiArOTY0LDcg
QEAgcHVibGljOgogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CiAgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgfQorICAgIAogI2VsaWYgQ1BVKEFSTSkKICNpZiBDUFUoQVJNX0hBUkRGUCkKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCkBAIC0xMjEz
LDYgKzEyMjMsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMik7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBH
UFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NHUFI8R1BSSW5mbzo6
YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOworICAgICAg
ICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogI2Vu
ZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAwMzhmNWQ3ZGJjMDZhZjgxMGY3MWE3ZDQyNDBkN2ZmMmViYTQwZWI0Li5iYmM4NTIzZjViYjIz
YTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZW50ZXIpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGUpCisgICAgICAgIERFRklORV9PUChvcF9sb2Fk
X2Fycm93ZnVuY3Rpb25fdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZXFfbnVsbCkKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xp
bmU6CkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQorICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09Q
KG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAgICAg
ICBERUZJTkVfT1Aob3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODQxMWE3ZWY2
NWE5YzZiZGNjMTZiMzY0ZWIyOGU0MTAxNmI1ODU4Ni4uNzcxZmQ5YjQwNjViZGQxNzIyYzBlNzJi
ODg3MjA4ZWM2MmYxZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTgsNiArNDk4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9lcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVsbChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9u
Kik7CkBAIC01MzksNiArNTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNf
ZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19l
eHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpAQCAtNjUzLDYgKzY1NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0
aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dD
YXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wg
aXNVbnNpZ25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBk
c3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVw
dGgpOwogICAgICAgICB2b2lkIGVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludCBzY29wZSwg
U3RydWN0dXJlKiogc3RydWN0dXJlU2xvdCk7CkBAIC03MjMsNiArNzI2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUpKQnksIGludCwgR1BSUmVnLCBHUFJSZWcsIEJ5VmFsSW5mbyopOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2Ms
IEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpzY0MsIGludCwgR1BSUmVnLCBKU0NlbGwqKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0osIGludCwg
R1BSUmVnLCBKU0NlbGwqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBHUFJSZWcsIGludDMyX3QpOwogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VK
c2NaLCBpbnQsIEdQUlJlZywgaW50MzJfdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggNWQ2ODY5MDA4MWM5OTZkN2UzM2JmM2Jk
MjVkY2M1OGIwMzBmN2Q2Yy4uZmJhYjJjYzBmMzk3MjQ5NTZiZjU4NDkxYjNkZTc4M2E2ZmNkYzIz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI3MSw2ICsyNzEs
MTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmEKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBj
ZWxsLCBHUFJSZWcgYXJnMikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKK30KKyAgICAK
IEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgaW50IGRzdCwgdm9pZCogcG9pbnRlcikKIHsKICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1OThkNGVjOTljMWQx
OGU2YzM5NjIxMTk3MjBhY2VhYzFlZTJmYTZkLi5jODNiY2M4YzQ1ZGU2NjZmNzNjOWU5MTFmNTE0
MjlmMzVlYjExMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC02NzMsNiArNjc0LDE0IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkp
LCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KKyAgICAKK3ZvaWQg
SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVl
LCByZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mVGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1Qw
KTsKK30KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewpAQCAtOTYyLDI2ICs5NzEsNDUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAg
ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisgICAgCit2b2lk
IEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24gPSBvcGNvZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgCiAgICAgSnVt
cCBub3RVbmRlZmluZWRTY29wZTsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fy
cm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzRdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJh
bmNoNjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpKSk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVy
KSAqIGRzdCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
IGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7
CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZp
bmVkVGFnKSk7CiAgICAgZW1pdFN0b3JlKGRzdCwganNVbmRlZmluZWQoKSk7CiAjZW5kaWYKLQog
ICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICBub3RVbmRlZmluZWRTY29wZS5saW5rKHRoaXMp
OwotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhwciA9IG1fY29kZUJsb2NrLT5mdW5j
dGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4cHIpOworICAgICAg
ICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gbV9jb2RlQmxvY2stPmZ1bmN0
aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICBpZiAoaXNBcnJv
d0Z1bmN0aW9uKQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMSk7CisgICAgZWxzZQorICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAg
ICAgZG9uZS5saW5rKHRoaXMpOwogfQotCisgICAgCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJy
b3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0
TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKIHZvaWQgSklU
OjplbWl0X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDkxYzAwZTNmZDQ1
ZTA5N2UzYmIxYzM3OWQ3YzkwM2YwZmQ2MjA5OWEuLmIzOWFlMWQxYTMwNjgwMzQzZTlmZDlhNzIz
MTQyOWI2ZTU0NDEwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRW52aXJv
bm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC05MjIsNiArOTIzLDE0
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdU
MCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
VGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30K
Kwogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4
IGI1ZjllMzY5YTdlNTdiYWZmMDQ2ZDJhMzY1ZGJjMDI0Y2RjZGI5M2IuLjRmZjBlM2QxNTBiNDI2
MGVmOTRiMjFlM2NiYTBmMjMxMmZiNDM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC05NDIsNiArOTQzLDMw
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZt
LCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBz
Y29wZSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25D
b21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4
ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQor
eworICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0
YWJsZTo6aW5mbygpKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICAgICAgCisgICAgSlNBcnJvd0Z1bmN0aW9uKiBhcnJvd0Z1bmN0aW9uICA9
IGlzSW52YWxpZGF0ZWQKKyAgICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkKKyAgICAgICAgOiBKU0Fycm93RnVuY3Rpb246OmNyZWF0
ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICAKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycm93RnVuY3Rpb24pOworfQorICAgIAor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2Nv
cGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBz
Y29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworfQorICAgIAorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0
aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFs
c2UpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDNk
ODNmNTkwZGNmOTE4MDNhMzQ0OGJhMDgzYjJmOTJiY2JlODRmOWIuLmE2N2NhYWNiMzJmYjIxNThh
OWMwNWU2YTUwOTYyMWIzYjgzZThlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC0xMjIsNiArMTIyLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm8K
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQ
UykoRXhlY1N0YXRlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9u
Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlv
bl9FSnNjQykoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopOwordHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0NKKShFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNTKShFeGVjU3RhdGUqLCBzaXpl
X3QsIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJ
VE9wZXJhdGlvbl9FU3NpQ0kpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxs
KiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKQEAgLTI4OCw2ICsyODks
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVy
V2l0aFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFs
bG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVj
U3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSos
IEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4
ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSGFuZGxlV2F0Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CmluZGV4IDJkNDY3N2M2NjU1N2JiY2M1ZTRkMTA5ZWY5YjAxMzhkOWE4M2YxZWMuLmEyYTZiMmIx
MWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiVk0uaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4
IDU1YjgxZWUwZjc4ZmE3YWQ5YTIwZGNkNDc2ODEyYjQxZjU2ODVkN2YuLjJjZDlmNmViOGQ2ODM4
Njg3MDk3YzRlY2NlNzkyMTU5MTUxMDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5o
IgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmly
b25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKQEAgLTE3MSw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsK
ICAgICAgICAgRXhlY1N0YXRlKiBfX3JjZl9leGVjID0gKGV4ZWNDYWxsZWUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgX19yY2ZfZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkK
LQorICAgIAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFu
ZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9w
ZXJhbmQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwMTMsMTIgKzEwMTQsMjQgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOworICAgIAog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNTY29w
ZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNj
b3BlKCk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVu
Y3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIHNjb3BlKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQp
OwogICAgIAotICAgIExMSU5UX1JFVFVSTihmdW5jKTsKKyAgICBMTElOVF9SRVRVUk4oSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoNCkuanNWYWx1ZSgpOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29w
ZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNj
b3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5m
dW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNB
cnJvd0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCB0aGlzVmFsdWUpKTsK
IH0KIAogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKQEAgLTEwOTYsNyArMTEwOSw3IEBAIGlubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBj
LCBDb2RlCiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAg
ICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
ID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7Ci0gICAgCisKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1
dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCmluZGV4IDhjYzY5YTk2MDBiYmY5ZDg1MzM5ZDYwOTU5NWY2N2M2OGQw
NzY3MWIuLjNmMWRhYTgxMmI3MDJlMjNjNmFhZWY5ZmQ3YzA2NzFlZTIwMjVjMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05Nyw2ICs5Nyw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpOwog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzkxMDYxN2Vk
ODM0Yjc0YzlmMmY4ZWU0YjI2ODdjOGI5Y2ZlM2M3Yy4uNzNmYzU4ODQ0MmRkYzRiOWNmYTdiODhm
MDA0Y2E4NjczZTQ5OWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTE4Myw2ICsxMTgzLDEwIEBAIF9sbGludF9v
cF9uZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1
bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X25ld19hcnJvd19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg1KQogCiBfbGxpbnRfb3BfY2FsbDoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGU5MGVjZWRmYTczMDk4
MmZlZWY3MWVlYjBjZWE2NDM4MjM0YTY5MWMuLjdlZjZiODdjMTcwYWQwODNiMWY1MjlkYTg4MzZj
MDBjZGE2NGI0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMzczLDMgKzIzNzMsMTIgQEAgX2xs
aW50X29wX3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNo
KDYpCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxv
YWRpIEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ5NDU1Zjc1
YzdiNjY0MmZiOGM4NzIzZmMxNTJhMzc5MDkxMDNiNWIuLmQyMTUyYTJmMjc3YWRlNTg3OTc2YTFj
M2YxMjAyMzcyOWIzOGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMjI2LDMgKzIyMjYsMTEgQEAgX2xs
aW50X29wX3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNo
KDYpCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCisgICAgbG9hZHAgSlNBcnJvd0Z1bmN0
aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQx
KQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCmluZGV4IDdiNTg3NzMwYTZmMDM1NDQwZGI5MGQ5YzQyNjgwYWQ1NzhiOTRhNjcuLjgwNmRi
NTIzMDNkNWFkM2E3MTg4MTI5Zjg4YmQ3NjRjNmI1MGVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjEsMTkgKzM2MSwxOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENv
bnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUpCisgICAgICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAg
IG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwg
Y29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBpblN0
cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJy
b3dGdW5jdGlvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVu
Y3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKKyAgICAgICAgdXNl
c1RoaXMoKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4
cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0
LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsK
LQotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVu
Y0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5
LCBzb3VyY2UpOworICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBBcnJvd0Z1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1l
LCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkt
PnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9j
YXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBhYmI3MmE3NGUxMjg4NDhlYThiNDNmZDg2MzY5NzRjYjk5
N2MzN2RiLi5iZGMxYmVlNzc4NDQ4NzJhYTYyNGQ0NDNiY2JhMTk2OTNhZGJkMTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtODkw
LDEzICs4OTAsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0
YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAKKyAgICBpbmxpbmUgQmFzZUZ1
bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0
YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCiAgICAgewogICAg
ICAgICBtX21ldGFkYXRhLT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhw
cmVzc2lvbik7CiAgICAgfQogCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFk
YXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1
bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKQEAgLTkwNCw2ICs5MTAsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwg
RnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgfQogCisgICAgaW5saW5lIEFycm93RnVuY0V4cHJO
b2RlOjpBcnJvd0Z1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVuY0V4cHJOb2RlKGxv
Y2F0aW9uLCBpZGVudCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAgICB9CisKICNpZiBF
TkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKICAgICBpbmxpbmUgQ2xhc3NEZWNsTm9kZTo6Q2xhc3NE
ZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
Y2xhc3NEZWNsYXJhdGlvbikKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjZjRmZTQ1MGE5MjQ5NTA0ZjMw
YmE4NWEyNjRlNjdiYWE5YTU1Yzk2Li4xOGY4NDU1MzMwNWM0YTBjMjFjNzMzODgzOWMyOWYyM2M3
NGRlOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAg
ICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAg
ICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VN
b2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRp
b24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2Vu
ZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNjMsNiArMTYzLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAg
ICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAg
LCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5k
KSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAg
QVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAxZDZi
MDNkNzc2NjI5N2FlMTc1OTNiYmE5YWVjNTYwOTMyOTMwYzJkLi44NzM2NjhlYzM3YjQyN2I5MjA2
NDlkZTMwNjgzODFlMmNkOGExNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CkBAIC0xNjUsNiArMTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xODA5LDcgKzE4MTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAK
ICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1
bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbik7CiAKICAgICAg
ICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVy
JiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM1LDYgKzE4MzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2lu
ZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogICAgICAgICB2b2lkIHNldExv
Yyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQs
IGludCBsaW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4NjAsNiArMTg2Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAg
ICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9u
IDogMTsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNj
b3BlTm9kZSB7CkBAIC0xODg5LDE4ICsxODkyLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY0V4cHJOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBCYXNlRnVuY0V4cHJOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNFeHByTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgICAgIEJhc2VGdW5jRXhwck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBtZXRhZGF0YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAorICAgIHByb3RlY3RlZDoK
KyAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7CisgICAgfTsKKworCisg
ICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAgIHB1
YmxpYzoKKyAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsK
KwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgfTsKIAotICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0
YTsKKyAgICBjbGFzcyBBcnJvd0Z1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNlRnVuY0V4cHJOb2Rl
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0
IFNvdXJjZUNvZGUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAjaWYgRU5BQkxFKEVTNl9DTEFT
U19TWU5UQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYWVl
NzBiNmE3MzI5YmMxMWI1Y2U3M2Q1MzUyZDMxM2UyMmEyN2JlMS4uZjUwODE0ZTdiMTQyYWI1MzAw
ZDg0YTRiNzAxOWY5Yzk4NGUyYjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtMTU0NiwxMSArMTU0NiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cbwog
ICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9j
YXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogeworICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9j
ayAhPSBib2R5VHlwZTsKICAgICBpZiAoYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlC
bG9jayB8fCBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrKSB7CiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCks
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwg
cGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJh
bWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0xNTYyLDcgKzE1NjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIGVs
c2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2Vy
LCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJs
b2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJz
ZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4g
PSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1v
ZGUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dG
dW5jdGlvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
U291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNzM3LDcgKzE3MzgsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZv
KFRyZWVCdWlsZAogICAgIH0KICAgICAKICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvciA9IGNv
bnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0KKyAgICAKICAgICBmdW5j
dGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8gSWYg
d2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hl
ZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCkBA
IC0xNzU2LDExICsxNzU3LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgICAg
ICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNl
dCA6CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxp
bmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9
IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0KKyAgICAgICAgCisgICAgICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gcGFyc2VUeXBlID09IEFycm93RnVuY3Rpb25QYXJzZVR5
cGU7CisgICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9u
LCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAg
ICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0
YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2lu
ZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgICAgICAgICAgY2FjaGVk
SW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJD
b3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9u
U2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAg
ICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxl
SW5mbyk7CkBAIC0xNzc0LDcgKzE3NzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAg
ICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAg
ICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zm
c2V0OwogCi0gICAgICAgIGlmIChwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkK
KyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5
cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDA3NjBj
MTllYjE2MzZkYjIxYTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcuLmRjNTYxZjliMWE2ZGEzNjQzYjgy
NzJmZTdiMTJlMjE1ZTQ0ZjQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIENsYXNzRXhw
cmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQ
cm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsg
fQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBD
b25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsgcmV0dXJuIEZ1bmN0
aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBp
bnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUs
IGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsg
fQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBj
cmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGFiMTY3MjExNjgxOTRj
MWE2MDI4OWViODU2ZTk4YzBjZmExN2I3OS4uOWRjNjk0ZjI3YTQ1ODczYjJhMjE2N2EzNjk2MzVk
M2U1OTQ1YWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKQEAgLTIzNiw4ICsyMzYsNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRh
YmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGds
b2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKICAg
ICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNQcm9maWxlcigp
ID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrID0KLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4
ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9z
b3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcigqdm0sIGV4ZWN1dGFi
bGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIGV4
ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKICAgICByZWNvcmRQYXJzZShleGVjdXRhYmxl
LT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBzdGFydENvbHVtbigpLCBlbmRDb2x1bW4oKSk7IAogICAgIGlmICghdW5saW5rZWRDb2Rl
QmxvY2spIHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0tPnRocm93RXhjZXB0aW9uKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGJjZTI0MjhjYmMxMDFk
ZGE2Y2IxMDFkNzBiZjAyN2Y3ZTBlYTNkZjAuLmNmMmJkZTg4YzVhNmU5MTY3NjAzNmVlMjdkNzQ0
Zjc2NDUzOWNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKQEAgLTQ3NCw3ICs0NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJs
ZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0K
ICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2Vk
RXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUzMCw3ICs1MzAs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNF
dmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFi
bGU7CkBAIC02MzMsNiArNjMzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlv
bk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0K
ICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29u
c3RydWN0QWJpbGl0eSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29s
IGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQog
ICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxYzI2MGUxNmEyMGUy
Yjg0MDlhZWJiOWEyZTU5ZGI5YjNkZjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw4MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCisKKyNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Fycm93RnVuY3Rpb246OnNfaW5mbyA9IHsg
IkFycm93RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
QXJyb3dGdW5jdGlvbikgfTsKKwordm9pZCBKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpLT5KU0Fy
cm93RnVuY3Rpb246On5KU0Fycm93RnVuY3Rpb24oKTsKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBK
U0Fycm93RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEpTQXJyb3dG
dW5jdGlvbiogcmVzdWx0ID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5k
VGhpcyk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUo
dm0sIHJlc3VsdCwgIkFsbG9jYXRpbmcgYW4gYXJyb3cgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitKU0Fycm93RnVuY3Rpb246OkpTQXJyb3dGdW5jdGlvbihWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91
bmRUaGlzKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxP
YmplY3QoKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKQorICAgICwgbV9ib3VuZFRoaXModm0s
IHRoaXMsIGJvdW5kVGhpcykKK3sKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rp
b246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJv
dW5kVGhpcykKK3sKKyAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+
aGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUs
IHNjb3BlLCBib3VuZFRoaXMpOworfQorCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXJyb3dG
dW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNBcnJv
d0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQorewor
ICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdmNTZmNjhlZmVlZGQ4MjMxYTM1YjJmYzI0OWZkODFhYzk3ZjViMjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24u
aApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBT
a2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNBcnJvd0Z1bmN0aW9uX2gKKyNkZWZpbmUgSlNB
cnJvd0Z1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIEpTR2xvYmFsT2Jq
ZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zm
c2V0czsKKyAgICAKK2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsK
KyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBj
bGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBp
bGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYg
SlNGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgIHN0YXRpYyBK
U0Fycm93RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRpYyBzaXplX3QgYWxs
b2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJu
IHNpemVvZihKU0Fycm93RnVuY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNBcnJv
d0Z1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgeworICAgICAgICBK
U0Fycm93RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNB
cnJvd0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSwgYm91bmRUaGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+
Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gZnVuY3Rpb247CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworCisgICAg
SlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQorICAgIAor
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZUaGlzVmFsdWUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Fycm93RnVuY3Rpb24sIG1f
Ym91bmRUaGlzKTsKKyAgICB9CisgICAgCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIAor
cHJpdmF0ZToKKyAgICBKU0Fycm93RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7Cit9
OworICAgIAorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Fycm93RnVuY3Rpb25f
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDBiODdk
NzVjOTE0NTBjNWFmMWFhZWQyN2E2MWE3NDhlZjgwZjA5M2UuLjkyODM1MGUyNDc4YzQ1ZjdiZjdl
OGFhODRjOWVjM2E0ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUq
KTsKKyAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0
cnVjdHVyZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFi
bGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZp
bmlzaENyZWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb25JbmxpbmVzLmgKaW5kZXggZjZjNmQ1OGVjNmU1YzExNjRjYjI3ZmE1ZTQxNjE4YjRiODE0
MmYwMi4uZjA1OTU4NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNiNjQ0YTg4NDQxMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC00
NCw2ICs0NCwxMyBAQCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgICwgbV9yYXJlRGF0YSgp
CiB7CiB9CisgICAgCitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0
YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkKKyAgICAsIG1fcmFyZURhdGEoKQoreworfQogCiBp
bmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGNlZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAwNDQxN2MyMjlhZDA0MjMuLmRhMWFj
MjVhYWIwMDg2MmNkNTM3MzBmOWE1YWQxMjVhMmRjMGZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAK
ICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpA
QCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IGV4ZWMtPnNldENhbGxlZShtX2dsb2JhbENhbGxlZS5nZXQoKSk7CiAKICAgICBtX2Z1bmN0aW9u
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9hcnJvd0Z1bmN0aW9uU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2JvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlv
blN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsK
ICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpKTsKQEAgLTc5NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNj
NDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMwNTVlOWJhZTMwYmI3M2ZkOTAxNWJj
MDAzODM2M2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fY2FsbGVlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9i
b3VuZEZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJy
b3dGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVk
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZz
ZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsK
QEAgLTQ2Miw2ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxsZWVTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0
dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJvd0Z1bmN0
aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9m
dW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
YWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlM2E2
NmVhOTJmMDMwZGIzNzc5YTRjM2U0MDJlN2MxMThkMWQ4MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9u
LXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpAQCAtMCwwICsxLDQ2IEBA
CisidXNlIHN0cmljdCI7CisKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gc2hvdWxkVGhy
b3dURFooZnVuYykgeworICAgIHZhciBoYXNUaHJvd24gPSBmYWxzZTsKKyAgICB0cnkgeworICAg
ICAgICBmdW5jKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmIChlLm5hbWUuaW5kZXhP
ZigiUmVmZXJlbmNlRXJyb3IiKSAhPT0gLTEpCisgICAgICAgICAgICBoYXNUaHJvd24gPSB0cnVl
OworICAgIH0KKyAgICBpZiAoIWhhc1Rocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJE
aWQgbm90IHRocm93IFREWiBlcnJvciIpOworfQorCitmdW5jdGlvbiBiYXIoZikgeyB9CisKK2Z1
bmN0aW9uIGZvbyhiKSB7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICAoeCkg
PT4geyByZXN1bHQgPSB4OyByZXR1cm4gdGR6UGVycGV0cmF0b3I7IH0KKyAgICBpZiAoYikgewor
ICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0
KTsKKyAgICAgICAgICAgIHJldHVybiB0ZHpQZXJwZXRyYXRvcjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBsZXQgdGR6UGVycGV0cmF0b3I7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9Jbmxp
bmUoYmFyKTsKK25vSW5saW5lKGZvbyk7Citub0lubGluZShzaG91bGRUaHJvd1REWik7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIGJvb2wgPSAhKGkgJSAxMDApOwor
ICAgIGlmIChib29sKQorICAgICAgICBzaG91bGRUaHJvd1REWigoKT0+IHsgZm9vKGJvb2wpOyB9
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhib29sKTsKKyAgICAgICAg
aWYgKHJlc3VsdCAhPSAwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0
LXZhbHVlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTQxYmJlMTQwMjQxNGRiMjZjNmI3ZmQ0MDFmYjBlOWM2NWE0YmE3NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3Rp
dmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3Zh
ciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gYmFyKHNldCkgeworICAgIHZhciByZXN1bHQgPSBz
ZXQoMCk7CisgICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCB2YWx1ZTogIiArIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIg
cmVzdWx0ID0gMDsKKyAgICB2YXIgaW1VbmRlZmluZWQ7CisgICAgdmFyIGJhejsKKyAgICB2YXIg
c2V0ID0gICh4KSA9PiB7CisgICAgICAgIHJlc3VsdCA9IHg7CisgICAgICAgIGlmIChiYXogIT09
IDUwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBiYXo7CisgICAg
ICAgIHJldHVybiBpbVVuZGVmaW5lZDsKKyAgICB9OworICAgIGJheiA9IDUwOworICAgIGlmIChi
KSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJh
cihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOwor
ICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1v
c3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNDM3YWY3YjJjMmFkMzQ1ZTI2YzIwMzc3ODkwZGY1ZjMx
ZmFmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwy
NSBAQAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVuY3Rpb24g
Zm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsgcmVz
dWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYg
KGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9Jbmxp
bmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0
ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3Rp
dmF0aW9uLXNpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZhNzllYzllYWE2NWM1NDE5MzBiOTA0ODI2ZTdh
MjNhMTNmYjJlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAsMCArMSwyNCBA
QAordmFyIG4gPSAxMDAwMDAwMDsKKworZnVuY3Rpb24gYmFyKGYpIHsgZigxMCk7IH0KKworZnVu
Y3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0geCA9PiB7
IHJlc3VsdCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAg
aWYgKHJlc3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkOiAiICsgcmVz
dWx0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsg
aSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0
ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1ib3VuZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1ib3VuZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjAzMjA4OGFiZjI2ZGFlMmFlNzFhMmFjNGMw
NWQ0ZjA3NzU1ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
dmFyIGQgPSB7CisgIHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0
aGlzLnggKyB6OyB9Cit9OworCitub0lubGluZShkLnkpOworCit2YXIgZSA9IHsgeCA6ICJiYXoi
IH07CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQueSgpLmJp
bmQoZSwgImxleSIpKCksICJiYXJsZXkiLCAiRXJyb3I6IGZ1bmN0aW9uIGJpbmQgc2hvdWxkbid0
IGNoYW5nZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NzdlMGFkOWM4M2FjNTNhN2Y2ZDM1MTk2MjMyMTRjMWU5
ZmM2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE4IEBACit2YXIgdGVzdENhc2Ug
PSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVj
dGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBkID0g
eworICB4IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsg
fQorfTsKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJhciIgfTsKKworZm9yICh2
YXIgaT0wOyBpPDEwMDAwO2krKyl7CisgICAgdGVzdENhc2UoZC55KCkuY2FsbChlKSwgImZvbyIs
ICJFcnJvcjogZnVuY3Rpb24gY2FsbCBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGlu
ZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICB0ZXN0Q2FzZShkLnkoKS5hcHBseShlKSwg
ImZvbyIsICJFcnJvcjogZnVuY3Rpb24gYXBwbHkgc2hvdWxuJ3QgY2hhbmdlIHRoZSBsZXhpY2Fs
IGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3Ry
dWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTViZWI1NTdkNzk0OWJjNmIyYzc4YWI0NjU5ZWE4YzJhYzYz
ZGU2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDIyIEBACit2YXIgdGVz
dENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiAr
IGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3Zh
ciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93
RnVuY3Rpb24pOworCit2YXIgZXJyb3JPbkNyZWF0ZSA9IGZhbHNlOworCitmb3IgKGk9MDtpPDEw
MDAwO2krKykgeworICAgdHJ5IHsKKyAgICAgICB2YXIgZmMgPSBuZXcgc2ltcGxlQXJyb3dGdW5j
dGlvbigpOworICAgfQorICAgY2F0Y2ggKGUpIHsKKyAgICAgZXJyb3JPbkNyZWF0ZSA9IHRydWU7
CisgICB9CisKKyAgICB0ZXN0Q2FzZShlcnJvck9uQ3JlYXRlLCB0cnVlLCAiRXJyb3I6IE5vIGV4
Y2VwdGlvbiBkdXJpbmcgcnVuIG5ldyBBcnJvd0Z1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLXRoaXMtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZmFiMjRjOTFiYzU3
Yzk1ODc2MzJkZmVjOWE0YzkzNzk4ZTIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMt
MS5qcwpAQCAtMCwwICsxLDE5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBl
eHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRo
cm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIg
KyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMu
bmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOwor
ICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOwor
fQorCitub0lubGluZShEb2cpCisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdmFy
IGQgPSBuZXcgRG9nKCJNYXgiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lSGFyZCgpLCBkLm5hbWUsICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICMyIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjExN2RiMzAzY2RmZTNkMTVkYTQ1YzgxNjRlNDhkMDNhNjdlYjkyYTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpAQCAtMCwwICsxLDM5IEBACit2YXIgdGVzdENh
c2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4
cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBm
dW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0
aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKwor
dGVzdENhc2UoaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSwgdHJ1ZSwgIkVycm9yOiB0aGlz
IGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIi
KTsKKwordmFyIG9iaiA9IHsKKyAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgp
ID0+IHRoaXM7CisgIH0KK307CisKK25vSW5saW5lKG9iai5tZXRob2QpOworCitmb3IgKHZhciBp
PTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCkgPT09IG9i
aiwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30KKwordmFyIGZha2UgPSB7c3RlYWw6IG9iai5tZXRo
b2QoKX07Citub0lubGluZShmYWtlLnN0ZWFsKTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIHRlc3RDYXNlKGZha2Uuc3RlYWwoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjNCIpOworfQorCit2YXIgcmVhbCA9IHtib3Jyb3c6IG9iai5tZXRob2R9Oworbm9JbmxpbmUo
cmVhbC5ib3Jyb3cpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVz
dENhc2UocmVhbC5ib3Jyb3coKSgpID09PSByZWFsLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MDE5MDg2ZDU4NDc5YzRiZDRmZTBmNTI3YjNhN2JiODkzOWMwOTJkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC10aGlzLTMuanMKQEAgLTAsMCArMSwyOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rp
b24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICIn
LCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7IG5h
bWU6J29iaicsIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5h
bWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9fTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKysp
IHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdvYmot
bmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkg
YmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworZm9yICh2YXIg
aT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDEgPSBvYmoubWV0aG9kKCkoJ3Rlc3Qn
ICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0MSwgJ29iai1uYW1lLXRlc3QnICsg
aS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitvYmoubmFtZT0nbmV3T2JqJzsKKwor
Zm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0
ZXN0JyArIGkudG9TdHJpbmcoKSksICduZXdPYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwg
IkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24gIzUiKTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFy
IHJlc3VsdDIgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENh
c2UocmVzdWx0MiwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRo
aXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAj
NSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NWJkMzYzZTRlNDZiMDJkMmYxOWJiZTM4NTAyZjUyODIzM2E5ZjEzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMKQEAgLTAsMCArMSwyNiBAQAordmFyIHRlc3RDYXNl
ID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBl
Y3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBv
YmogPSB7CisgIG5hbWU6J29iaicsCisgIGludGVybmFsT2JqZWN0OiB7CisgICAgbmFtZSAgOidp
bnRlcm5hbE9iamVjdCcsCisgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUp
ID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH0KKyAgfQorfTsKKworbm9JbmxpbmUo
b2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsr
KSB7CisgICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGku
dG9TdHJpbmcoKSksICdpbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjMSIpOworfQorCitvYmouaW50ZXJuYWxPYmplY3QubmFtZT0nbmV3SW50ZXJuYWxP
YmplY3QnOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKG9i
ai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnbmV3SW50
ZXJuYWxPYmplY3QtbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5v
dCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODc1NDk0Y2U2YjY2ZGIwYTdlYjQzZGNjODNlYzFlYWNlNjI4NzU0NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy01LmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBzb3J0ZWRWYWx1ZXM7CisK
K3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Cisg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVj
dGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQor
fTsKKworCit2YXIgb2JqID0geworICBhcnI6IFsxLCA0LCA2LCAzLCA3LCAwXSwKKyAgYnViYmxl
U29ydDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB7CisgICAgICB2YXIgdG1wOwor
ICAgICAgdmFyIGFyID0gdGhpcy5hcnIuc2xpY2UoKTsKKyAgICAgIHZhciBfbGVuZ3RoID0gYXIu
bGVuZ3RoCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9sZW5ndGg7IGkrKykgeworICAgICAg
ICBmb3IgKHZhciBqID0gaTsgaiA+IDA7IGotLSkgeworICAgICAgICAgIGlmICgoYXJbal0gLSBh
cltqIC0gMV0pIDwgMCkgeworICAgICAgICAgICAgdG1wID0gYXJbal07CisgICAgICAgICAgICBh
cltqXSA9IGFyW2ogLSAxXTsKKyAgICAgICAgICAgIGFyW2ogLSAxXSA9IHRtcDsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBhcjsKKyAgICB9CisgIH0KK307
CisKK25vSW5saW5lKG9iai5idWJibGVTb3J0KTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBp
KyspIHsKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDMsIDcsIDBdOworICAgIHRlc3RDYXNl
KG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgsIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNh
bGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisKKyAgICB2YXIg
c29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNlKHNvcnRlZFZh
bHVlc1swXSwgMCwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzYiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbNl0s
IDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICM3Iik7CisKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDUsIDgsIDIx
LCAxOSwgMF07CisKKyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCkubGVuZ3RoLCA5LCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjOCIpOworCisgICAgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOwor
ICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1sxXSwgMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEyIik7CisgICAgdGVz
dENhc2Uoc29ydGVkVmFsdWVzWzhdLCAyMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkg
YmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEzIik7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtNi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTdiYzdjOGYx
ODA1MzU4YmRiYTg1YjJjZWY2YTY5YjVmNDFlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtNi5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFs
LCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAg
IHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMg
JyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRo
aXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+ICB0aGlzLm5hbWU7CisgIHRo
aXMuZ2V0TmFtZU5lc3RpbmdMZXZlbDEgPSAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7CisgIHRoaXMu
Z2V0TmFtZU5lc3RpbmdMZXZlbDIgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisK
K3ZhciBkID0gbmV3IERvZygiTWF4Iik7CisKK25vSW5saW5lKGQuZ2V0TmFtZSgpKTsKK25vSW5s
aW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpKTsKK25vSW5saW5lKGQuZ2V0TmFtZU5lc3Rp
bmdMZXZlbDIoKSgpKCkpOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDsgaSsrKSB7CisgIHRlc3RD
YXNlKGQuZ2V0TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKGQuZ2V0
TmFtZU5lc3RpbmdMZXZlbDEoKSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNh
bGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisgIHRlc3RDYXNl
KGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDIoKSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5v
dCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2
YXRpb24tc2luay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTBhMzFkNjczMWFlNjk3NGQ2Njdl
ZDhkMjQ4NzBiNWQ1MzFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2lu
ay1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMzQgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK3ZhciBu
ZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGJhcigp
IHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBz
ZXQgPSAoeCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29u
dGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRl
eHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24n
OworICAgICAgcmVzdWx0ID0geDsKKyAgICB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhp
dCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
bm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsg
aSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRleHQsICEoaSAlIDEwMCkp
OworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTQzMDYzN2M4NWJmOTQyMWFlOWM5
N2UwZGQ3ZjZjZDEzNWM0Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNp
bmsuanMKQEAgLTAsMCArMSwzOCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRl
eHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKGYpIHsKKyAg
ICBpZiAodGhpcyA9PSBuZXdDb250ZXh0KQorICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBv
ZiBuZXN0aW5nIGZ1bmN0aW9uJzsKKyAgICBmKDEwKTsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsK
KyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsKKyAgICAgIHJlc3Vs
dCA9IHg7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0Cisg
ICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkK
KyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAg
fTsKKworICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVzdWx0
ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShi
YXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAg
ICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAgaWYg
KHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
dGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjllMDI3MTM5
YzE2NjdlMTA2OWJhYmQyOTVhNmQ3ZmMwYjllNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1z
aW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM3IEBACit2YXIgbmV3Q29u
dGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBjYWxsKG8pIHsg
by54ID0gMzsgfQorbm9JbmxpbmUoY2FsbCk7CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNh
bGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwg
cSkgeworICAgIHZhciBmID0gKCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rp
b24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlk
ICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJy
b3cgZnVuY3Rpb24gIzEnOworICAgIH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsg
Ly8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBP
U1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVy
biB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBm
YWxzZSk7CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVk
IG8ueCB0byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0
aGUgYXJyb3cgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisv
LyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4
aXQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJvdyAi
RXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZmZjYjNmYTViMWU3N2ZiNjI4NjE4MGIzMzJhM2JlN2RlMjhmNjBlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNiBAQAordmFy
IG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxkIGJl
IGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5j
dGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlm
IGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRl
eHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBj
b250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKyAgICAgIHJldHVybiB4OworICAgIH07Cisg
ICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9
PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAg
ICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAg
ICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMic7CisgICAg
ICByZXR1cm4geDsKKyAgICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRy
dWUsIGZhbHNlKTsvLyBTdWJzdGl0dXRlIHRoaXMKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7Cisg
ICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBn
b3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3Vs
ZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rp
b24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsuY2FsbChu
ZXdDb250ZXh0LHRydWUsIHRydWUpOy8vIFN1YnN0aXR1dGUgdGhpcwordmFyIHJlc3VsdCA9IGYo
NDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1
dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlz
LXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1N2VhMDc2MzVhNDEzMWNkMjMxMWQ0NTA3MzVm
NTdjMWRkOTU4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0LmpzCkBAIC0w
LDAgKzEsNDUgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307
CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkg
bmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB7Cisg
ICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAo
dGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAg
ICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisKKyAgICAgIHJl
dHVybiB4OworICAgIH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJu
IGc7IH0KKyAgICByZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlv
biBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQg
IT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJv
dyBmdW5jdGlvbiAjMic7CisKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShz
aW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBz
aW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Ly8gdXNlIGNhbGwgdG8gc3Vic3RpdHV0
ZSBjb250ZXh0CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIp
CisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisK
Ky8vIEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQg
ZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0
IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBm
YWxzZSk7Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8vIFRo
aXMgc2hvdWxkbid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3IgY29t
cGxldGVseSBjcmFzaAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAiICsg
cmVzdWx0OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlv
bmQgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQs
IHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQyKQor
ICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLW90aGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRjZTBjNjU4ZDNhMmY3OTIyOWRmNGY4OTJj
Y2RhMTUxM2M5NGU1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCArMSwxNyBAQAordmFy
IHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQg
JyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9Owor
Cit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitub0lubGluZShzaW1wbGVB
cnJvd0Z1bmN0aW9uKTsKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0ZXN0Q2Fz
ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiksIEZ1bmN0aW9uLnBy
b3RvdHlwZSwgIkVycm9yOiBOb3QgY29ycmVjdCBnZXRQcm90b3R5cGVPZiB2YWx1ZSBmb3IgYXJy
b3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5j
ZW9mIEZ1bmN0aW9uLCB0cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3VsdCBmb3IgaW5zdGFu
Y2VvZiBtZXRob2QgZm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RDYXNlKHNpbXBsZUFy
cm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNv
cnJlY3QgcmVzdWx0IGZvciBjb25zdHJ1Y3RvciBtZXRob2Qgb2YgYXJyb3cgZnVuY3RpbyAgIG4i
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ExZjBhNDljYjE2ODYz
YzU5MjEzNjFmMGFkYjFlMTRlYzliNjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCkBAIC0wLDAg
KzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNz
YWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSAr
ICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICIn
IjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVl
OworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9u
IChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0g
KCkgPT4gdGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIg
KyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3Vs
dCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShy
dW4oMSksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVu
Y3Rpb24gb25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogRXJyb3I6
IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4t
MTAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1ydW4tMTAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRjZGIzYzcwYTFiMjdjM2RiYjUyMzgwOTU1ZjUz
NTNkNzY3NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
ZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9
MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAg
ICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhp
cy5uYW1lIik7OworICAgIH07CisKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkp
OworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0g
ZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigx
KSwgdHJ1ZSwgIkVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIG9uZSB0
aW1lIik7Cit0ZXN0Q2FzZShydW4oMTApLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24g
b2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZTVmNmJjODZiZDMxNDUxYjAxY2EyN2QwYjk3MjBiNTdlOGQ2MDUxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9
IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0
ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24g
cnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3Vu
dDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5h
bWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5uYW1lOworICAgIH07
CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUg
IT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQor
ICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0cnVlLCAiRXJyb3I6
IEVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwMDAwIHRpbWVzIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tcnVuLTEwMDAwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0MjcxZjRhMzE1OTE2
MjVhMGJkM2Q3NDRkMjUxMjYzMzMwMmU0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpAQCAt
MCwwICsxLDIzIEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0ID0g
dHJ1ZTsKKyAgZm9yICh2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVu
Y3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5h
bWUgPSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworICAgIHZhciBvYmogPSBu
ZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkg
eworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9
CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVj
dXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRv
dWJsZS1hbGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjg2
MmM2MjhlM2IyY2EzMDQ0MTBiMWFlMjI2OTQ3MTgwNTFkZWMxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmct
bm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGNhbGwobykg
eyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAocCwgcSkgewor
ICAgIHZhciBmID0gKCkgPT4geyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7IC8v
IEZvcmNlIGFsbG9jYXRpb24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAgT1NS
RXhpdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1cm4g
eyAneCc6IDIgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54
ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlz
ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQg
YmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9u
IGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRy
dWUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJl
IDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MjdmM2NhM2JkZThkYTMwMTQwZmExNDk5NzNlMTdhYWE4ZDkxMDVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBz
aW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAgaWYgKHApIHsgaWYgKHEpIE9T
UkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB4OworfQorbm9JbmxpbmUoc2lu
ayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2lu
ayh0cnVlLCBmYWxzZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQg
IT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7
Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQg
ZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5
IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJl
c3VsdCA9IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZGI3MGJiOWFiYzIzMTQ4ZjYyN2VmYzYxODZiZTA1N2MzY2JiMjc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNpbmsgKHAs
IHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9
IDQyOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRy
dWUsIHRydWUpOworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQy
KQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQor
CisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24g
dG8gdGhlIEZUTAorCisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5l
ciBlbHNlIGJyYW5jaAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBm
KDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFz
IGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhy
b3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRo
YXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdu
bWVudAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7Citp
ZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1
dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NDkyMzk3MTk4M2Rj
ZGEzNGMyNjkzOTIxMTdiMTc0OGU2N2I0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAgLTAsMCArMSwy
NyBAQAordmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgewor
ICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBpZiAoYWNjZXNzVGhp
c0JlZm9yZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7CisgICAgICBzdXBlcigp
OworICAgIH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQorfTsKKwordmFyIGV4
Y2VwdGlvbiA9IG51bGw7Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0cnkgewor
ICAgICAgIG5ldyBCKHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgICBleGNlcHRpb24gPSBl
OworICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKKyAgICAgICAgICB0
aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVycm9yIjsKKyAgfQor
CisgIGlmICghZXhjZXB0aW9uKQorICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZv
ciBhbiB1bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7CisKKyAgdmFyIGUgPSBuZXcgQihm
YWxzZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTNlYzBkZGQ1NTE0ZmFm
NGQwZDAzYzllMDY1NzBhMGM4MmJlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCwwICsx
LDI3IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2Fn
ZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAi
LiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7
CisgIH0KK307CisKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAx
fTsKKworbm9JbmxpbmUoYWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7ICsraSkgeworICB0ZXN0Q2FzZSh0eXBlb2YgYWYxLCAiZnVuY3Rpb24iLCAiRXJy
b3I6IE5vdCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RD
YXNlKHR5cGVvZiBhZjIsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKworLy9GaXhtZTogU29tZSBidWcgaW4gaW5saW5pbmcg
dHlwZW9mIHdpdGggZm9sbG93aW5nIHJ1biBwYXJhbWV0ZXJzIGZ0bC1uby1jaml0LW5vLWlubGlu
ZS12YWxpZGF0ZQorLy8gLS11c2VGVExKSVRcPXRydWUgLS1lbmFibGVGdW5jdGlvbkRvdEFyZ3Vt
ZW50c1w9dHJ1ZSAtLWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10aHJlc2hvbGRGb3JKSVRB
ZnRlcldhcm1VcD0xMDAgIC0tdmFsaWRhdGVHcmFwaD10cnVlIC0tbWF4aW11bUlubGluaW5nRGVw
dGg9MQorLy8KKy8vIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgIHsKKy8vICAgaWYg
KHR5cGVvZiAoZnVuY3Rpb24gKCkge30pICE9PSAnZnVuY3Rpb24nKQorLy8gICAgICAgdGhyb3cg
J1dyb25nIHR5cGUnOworLy8gfQorLy8gIHRlc3RDYXNlKHR5cGVvZiAoKT0+e30sICJmdW5jdGlv
biIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMtIiAr
IGkpOworCisvLyAgdGVzdENhc2UodHlwZW9mICgoYikgPT4ge2IgKyAxfSksICJmdW5jdGlvbiIs
ICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzQiKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhOTBiOGYzYTFkOTVmYzQzYmRlZWJlMzQ1N2NhYTY0ZDFlNmI3YTAyLi5mMWQxYjhm
MTUwMGFkY2NlOGI3M2M2ODg1YzgwNTg4M2M5NjcwNTEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTUtMDgtMTIgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93
IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2YgdGhpcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0OTU2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0
aW9uLWJpbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9u
LWJpbmQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10
aGlzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbDog
QWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3MvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQu
CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90
aGVycy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
dGR6LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10
eXBlb2YuanM6IEFkZGVkLgorCiAyMDE1LTA4LTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVkdWNlIGZsYWtpbmVzcyBv
ZiBpbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmIzMjZj
Y2JiNGUxNGM2ODlkZDdkOTM4M2NjNWJjOTRmZjdmMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3Jp
dHRlbiBkdXJpbmcgaW52b2tlIGJpbmQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZC55KCkuYmluZChlLCAnbGV5JykoKSBpcyAnYmFybGV5JworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1iaW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI5YWNiMmJjOGZkNTA0YzY4ZjA0NDVhNmVhYzRh
NmExNDU0YWJhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tYmluZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxs
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWMwNzdmOTk3OWFjZjQ1ZTE2Yjk5NjU3MmQxYWZkZWVkZDU5MTEy
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlv
biwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5CisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmNhbGwoZSkgaXMgJ2Zv
bycKK1BBU1MgZC55KCkuYXBwbHkoZSkgaXMgJ2ZvbycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2Fs
bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMxZDhhNDdlMzBiNmE4NzQ5ZWM1YjdlNzgzYzZhOWVjMzEzMmQy
ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwu
aHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY3MDZmZmYxN2MyMTIzODUzNjQwYmIyYTRlYjE3ZDYz
ZTFhMzcyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
Y29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYg
YXJyb3cgZnVuY3Rpb24gbm8gY29uc3RydWN0b3IKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNp
bXBsZUFycm93RnVuY3Rpb24oKScpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3Ry
dWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGMwYjlhOWNkZDRkOGJkZmE2MjQxY2I2YmVmYmYwNGNj
OTU4MzBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I2
NmZjMjg4Y2FjYmQ5YzkzN2M5NzFjMmJkNmI2OGU2NjRhOTQ4OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNh
bCBiaW5kIG9mIHRoaXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC5n
ZXROYW1lKCkgaXMgZC5uYW1lCitQQVNTIGQuZ2V0TmFtZUhhcmQoKSBpcyBkLm5hbWUKK1BBU1Mg
ZC5nZXROYW1lTmVzdGluZygpKCkoKSBpcyBkLm5hbWUKK1BBU1Mgb2JqLm1ldGhvZCgpKCdjb3Jy
ZWN0JykgaXMgJ29iakNvZGUtbmFtZS1jb3JyZWN0JworUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJl
Y3QnKSBpcyAnbmV3T2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxP
YmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnaW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0
JworUEFTUyBkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ25l
d0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgaW5zdGFuY2UuZnVuYygpID09PSBp
bnN0YW5jZSBpcyB0cnVlCitQQVNTIG93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2JqIGlz
IHRydWUKK1BBU1MgZmFrZS5zdGVhbCgpID09PSBvd25lck9iaiBpcyB0cnVlCitQQVNTIHJlYWwu
Ym9ycm93KCkoKSA9PT0gcmVhbCBpcyB0cnVlCitQQVNTIGFycm93RnVuY3Rpb24oJy10aGlzJykg
aXMgInJpZ2h0LXRoaXMiCitQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMnKSBpcyAicmlnaHQtdGhp
cyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODFlYTIyYTc2ZmRmOGJmZjVlNzJlNTFiNzc5NGIzZTM0N2QxNjQyYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLXRoaXMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLW90aGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNTJlNWUzN2M2OTE1ZjM4MjNl
MjliMjBhOTRkZjUzZDA4YzAwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyBm
b3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9m
KHNpbXBsZUFycm93RnVuY3Rpb24pIGlzIEZ1bmN0aW9uLnByb3RvdHlwZQorUEFTUyBzaW1wbGVB
cnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzaW1wbGVBcnJv
d0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1vdGhlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3ZjhiMDBlNDYwNTVlZTZmYWU1YzFl
ODI4OWVmZWUxZjExMDkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1vdGhlcnMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi10ZHotZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHot
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YWY2Y2Q4NjAwZTg4NDEyNzdjNDk0YTk4OTAyMjQ1
MmVhNmFiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXRkei1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBm
dW5jdGlvbiB0ZXN0IHRkegorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBp
c1JlZmVyZW5jZUVycm9yIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLXRkei5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mOGVmMTcxY2I4MjBiZWIzY2I0YTdkM2ZjNDhlNWM1M2ZjMTE5MjZkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi10ZHouanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYyZmIyY2U5NjRiZDAzMzIxYjgzMmNiODdiYmFlMGNhNTM0OWMxYmMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitQQVNTIHR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFT
UyB0eXBlb2YgYWYyID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoKT0+e30p
ID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0n
ZnVuY3Rpb24nIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5
cGVvZi5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMGFjYWFhMWE0ZTRkMGU0Y2IzZDA3NjVlMzczZmVkYjc0MzgwZTAxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApAQCAt
MCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZlYjU1MmY4MGY2NjFkZTNiYWI1MjA5YzcyZGRjZjUwMjEwMDM0
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rp
b24tY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9u
LWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjNkODQ1NGJmZjYxODJlNjFjYmViMGI5ZWUxMzNmZTg3MzExMmJmYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1j
YWxsLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI0Yzg0Mjc2ZTcxMDg3
Nzg2YzU5NDBhODIyYmNjNmY5N2MwNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEs
MTUgQEAKK3ZhciBhZiA9IChhLCBiKSA9PiBhICsgYjsKKworbm9JbmxpbmUoYWYpOworCitmdW5j
dGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBhZihhLCBiKTsKK30KKworbm9JbmxpbmUoYmFy
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0
ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3M2MzYjVl
MGNhNzkxNzk0ZjI1MTY5YTkxY2I0YTdkYzliMjhjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCAr
MSwxNSBAQAordmFyIGZlID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyBiO30KKworbm9J
bmxpbmUoZmUpOworCitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBmZShhLCBiKTsK
K30KKworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kp
IHsKKyAgICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTUzZjA4ZTk2NmM3OTRjYmFmOWFkNGEzYWRiNGU5OTc5YzAyYWMyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMK
QEAgLTAsMCArMSwxMiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rp
b24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZCcpOworCit2
YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRo
aXMueCArIHo7IH0KK307CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKworc2hvdWxkQmUoImQu
eSgpLmJpbmQoZSwgJ2xleScpKCkiLCAiJ2JhcmxleSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzg4OGY5MTFiZjFjNDRkMzg5ZDBhM2QyMTg0Njgz
NDg0YjZmOTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDEzIEBACitkZXNjcmlwdGlvbignVGVz
dHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVy
aW5nIGludm9rZSBjYWxsJmFwcGx5Jyk7CisKK3ZhciBkID0geworICB4IDogImZvbyIsCisgIHkg
OiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKKwordmFyIGUgPSB7IHgg
OiAiYmFyIiB9OworCitzaG91bGRCZSgnZC55KCkuY2FsbChlKScsICInZm9vJyIpOworc2hvdWxk
QmUoJ2QueSgpLmFwcGx5KGUpJywgIidmb28nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tY29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWZhZDA3Njg0N2JmZjQ5MjlmNzgw
Nzc2NWY5OTBiNzM3M2NkZjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw3IEBACitk
ZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3Rvcicp
OworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitzaG91bGRUaHJvdygn
bmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1NmExNTUzMGYz
NGNjMzA4YWNlNmIwZmFhNGNmZTdjMWU5NzhjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzCkBA
IC0wLDAgKzEsNjcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
IGxleGljYWwgYmluZCBvZiB0aGlzJyk7CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMu
bmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOwor
ICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOwor
ICB0aGlzLmdldE5hbWVOZXN0aW5nID0gKCkgPT4gKCkgPT4gKCkgPT4gdGhpcy5uYW1lOworfQor
Cit2YXIgZCA9IG5ldyBEb2coIk1heCIpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZSgpJywgJ2QubmFt
ZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZUhhcmQoKScsICdkLm5hbWUnKTsKK3Nob3VsZEJlKCdk
LmdldE5hbWVOZXN0aW5nKCkoKSgpJywgJ2QubmFtZScpOworCit2YXIgb2JqID0geworICBuYW1l
ICAgOiAnb2JqQ29kZScsCisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKHZh
bHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOworICB9Cit9OworCitzaG91bGRC
ZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ29iakNvZGUtbmFtZS1jb3JyZWN0JyIpOwor
b2JqLm5hbWU9J25ld09iakNvZGUnOworc2hvdWxkQmUoIm9iai5tZXRob2QoKSgnY29ycmVjdCcp
IiwgIiduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCciKTsKKwordmFyIGRlZXBPYmogPSB7CisgIG5h
bWUgOiAnd3JvbmdPYmpDb2RlJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2lu
dGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkg
PT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9Oworc2hvdWxkQmUoImRl
ZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInaW50ZXJuYWxPYmpl
Y3QtbmFtZS1jb3JyZWN0JyIpOworCitkZWVwT2JqLmludGVybmFsT2JqZWN0Lm5hbWUgPSAnbmV3
SW50ZXJuYWxPYmplY3QnOworCitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRo
b2QoKSgnY29ycmVjdCcpIiwgIiduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisK
K3ZhciBmdW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAo
KSA9PiB0aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3Io
KTsKKworc2hvdWxkQmUoImluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2UiLCAidHJ1ZSIpOwor
Cit2YXIgb3duZXJPYmogPSB7CisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
KCkgPT4gdGhpczsKKyAgfQorfTsKKworc2hvdWxkQmUoIm93bmVyT2JqLm1ldGhvZCgpKCkgPT09
IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFyIGZha2UgPSB7IHN0ZWFsIDogb3duZXJPYmoubWV0
aG9kKCkgfTsKK3Nob3VsZEJlKCJmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIiwgInRydWUiKTsK
KwordmFyIHJlYWwgPSB7IGJvcnJvdyA6IG93bmVyT2JqLm1ldGhvZCB9Oworc2hvdWxkQmUoInJl
YWwuYm9ycm93KCkoKSA9PT0gcmVhbCIsICJ0cnVlIik7CisKK3ZhciBhcnJvd0Z1bmN0aW9uID0g
eyB4IDogInJpZ2h0IiwgZ2V0QXJyb3dGdW5jdGlvbiA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9
PiB0aGlzLnggKyB6OyB9fS5nZXRBcnJvd0Z1bmN0aW9uKCk7Cit2YXIgaG9zdE9iaiA9IHsgeCA6
ICJ3cm9uZyIsIGZ1bmMgOiBhcnJvd0Z1bmN0aW9uIH07CisKK3Nob3VsZEJlKCJhcnJvd0Z1bmN0
aW9uKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworc2hvdWxkQmUoImhvc3RPYmouZnVuYygn
LXRoaXMnKSIsICcicmlnaHQtdGhpcyInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1vdGhlcnMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1v
dGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5OTMxYzNkZWJjYjUwMjdhZDE0ZmQxNTQ3ZTVhYmEwMzhi
NGIxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyBJbnNwaXJlZCBieSBtb3pp
bGxhIHRlc3RzCitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBpbnN0
YW5jZW9mIGFuZCB0eXBlb2Ygb3BlcmF0b3JzJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9u
ID0gKCkgPT4ge307CisKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJy
b3dGdW5jdGlvbikiLCAiRnVuY3Rpb24ucHJvdG90eXBlIik7CitzaG91bGRCZSgic2ltcGxlQXJy
b3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRydWUiKTsKK3Nob3VsZEJlKCJzaW1w
bGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIiwgInRydWUiKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFmNThmYzY1MTNlZGFiZGUx
ZGQ2NTA3NDk2YWU4NjRiNjExZmZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNj
cmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRkeicpOworCit2YXIg
QSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVj
dG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3Vw
ZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgaXNSZWZlcmVuY2VF
cnJvciA9IGZhbHNlOwordHJ5IHsKKyAgICAgbmV3IEIodHJ1ZSk7Cit9IGNhdGNoIChlKSB7Cisg
ICAgaXNSZWZlcmVuY2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKK30KKwor
c2hvdWxkQmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOworCit2YXIgZSA9IG5ldyBCKGZh
bHNlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjJhYTI2OTBmZGE4MmM2YTMyOGVhMGFiYzM1NWQyZDhiZTNkNDhkNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpA
QCAtMCwwICsxLDEyIEBACit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIgYWYyID0gKGEpID0+IHth
ICsgMX07CisKK3Nob3VsZEJlKCJ0eXBlb2YgYWYxID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsK
Kworc2hvdWxkQmUoInR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91
bGRCZSgidHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxk
QmUoInR5cGVvZiAoKGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259124</attachid>
            <date>2015-08-16 07:14:18 -0700</date>
            <delta_ts>2015-08-16 11:45:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150816171356.patch</filename>
            <type>text/plain</type>
            <size>177749</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uMjU2YmIyZjBjNzg3MDE5ZDU1YTVlMWUxMWJh
NmQ4ZTA3NTQxN2U3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC02Miw2ICs2MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHBva2UoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyBhcmd1bWVudEluZGV4IC0gR1BSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7CiAgICAgfQogCisjaWYgT1MoV0lORE9XUykKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlVyhHUFJSZWcgYXJn
MSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVw
VHdvU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjM+KGFyZzEsIGFyZzMpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB1
c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJzLgogICAgIC8v
IE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252ZW50aW9ucywgd2hpY2ggcGFzcyBhbGwg
YXJndW1lbnRzIG9uIHRoZQogICAgIC8vIHN0YWNrLiBPbiBvdGhlciBhcmNoaXRlY3R1cmVzIHdl
IG1heSBuZWVkIHRvIHNvcnQgdmFsdWVzIGludG8gdGhlCkBAIC05NTUsNiArOTY0LDcgQEAgcHVi
bGljOgogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CiAgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAg
ICAgfQorICAgIAogI2VsaWYgQ1BVKEFSTSkKICNpZiBDUFUoQVJNX0hBUkRGUCkKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCkBAIC0xMjEzLDYgKzEy
MjMsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcg
YXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOworICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogI2VuZGlmCiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAwMzhm
NWQ3ZGJjMDZhZjgxMGY3MWE3ZDQyNDBkN2ZmMmViYTQwZWI0Li5iYmM4NTIzZjViYjIzYTM5MzBj
MDk0ZWQ0ODYyMTc0NjRkODZjNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0y
MTksNiArMjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZW50ZXIpCiAgICAgICAg
IERFRklORV9PUChvcF9nZXRfc2NvcGUpCisgICAgICAgIERFRklORV9PUChvcF9sb2FkX2Fycm93
ZnVuY3Rpb25fdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAgICBERUZJTkVf
T1Aob3BfZXFfbnVsbCkKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CkBA
IC0yNTksNiArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9w
X25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25l
d19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAgICAgICBERUZJ
TkVfT1Aob3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODQxMWE3ZWY2NWE5YzZi
ZGNjMTZiMzY0ZWIyOGU0MTAxNmI1ODU4Ni4uNzcxZmQ5YjQwNjViZGQxNzIyYzBlNzJiODg3MjA4
ZWM2MmYxZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTgsNiArNDk4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xv
YWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVsbChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKik7CkBA
IC01MzksNiArNTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
ZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpAQCAtNjUzLDYgKzY1NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwg
Ym9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNp
Z25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGlu
dCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwog
ICAgICAgICB2b2lkIGVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludCBzY29wZSwgU3RydWN0
dXJlKiogc3RydWN0dXJlU2xvdCk7CkBAIC03MjMsNiArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpKQnksIGludCwgR1BSUmVnLCBHUFJSZWcsIEJ5VmFsSW5mbyopOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2MsIEdQUlJl
Zyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpzY0MsIGludCwgR1BSUmVnLCBKU0NlbGwqKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0osIGludCwgR1BSUmVn
LCBKU0NlbGwqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBHUFJSZWcsIGludDMyX3QpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBp
bnQsIEdQUlJlZywgaW50MzJfdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggNWQ2ODY5MDA4MWM5OTZkN2UzM2JmM2JkMjVkY2M1
OGIwMzBmN2Q2Yy4uZmJhYjJjYzBmMzk3MjQ5NTZiZjU4NDkxYjNkZTc4M2E2ZmNkYzIzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI3MSw2ICsyNzEsMTIgQEAg
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpzY0Mgb3BlcmEKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSnNjQ0ogb3BlcmF0aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBH
UFJSZWcgYXJnMikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKK30KKyAgICAKIEFMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VQIG9wZXJhdGlvbiwgaW50IGRzdCwgdm9pZCogcG9pbnRlcikKIHsKICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1OThkNGVjOTljMWQxOGU2YzM5
NjIxMTk3MjBhY2VhYzFlZTJmYTZkLi5jODNiY2M4YzQ1ZGU2NjZmNzNjOWU5MTFmNTE0MjlmMzVl
YjExMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC02NzMsNiArNjc0LDE0IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdU
MCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KKyAgICAKK3ZvaWQgSklUOjpl
bWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdU
MCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
VGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtOTYyLDI2ICs5NzEsNDUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAgZW1pdE5l
d0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisgICAgCit2b2lkIEpJVDo6
ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
Y3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24g
PSBvcGNvZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgCiAgICAgSnVtcCBub3RV
bmRlZmluZWRTY29wZTsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVu
Y3Rpb24pCisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJhbmNoNjQo
Tm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpKSk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIGRz
dCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRM
b2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAg
bm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFn
KSk7CiAgICAgZW1pdFN0b3JlKGRzdCwganNVbmRlZmluZWQoKSk7CiAjZW5kaWYKLQogICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKICAgICBub3RVbmRlZmluZWRTY29wZS5saW5rKHRoaXMpOwotCi0g
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhwciA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkV4
cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4cHIpOworICAgICAgICAKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhw
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0
aW9uKQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRz
dCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMSk7CisgICAgZWxzZQorICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAgICAgZG9u
ZS5saW5rKHRoaXMpOwogfQotCisgICAgCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVu
Y0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKIHZvaWQgSklUOjplbWl0
X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDkxYzAwZTNmZDQ1ZTA5N2Uz
YmIxYzM3OWQ3YzkwM2YwZmQ2MjA5OWEuLmIzOWFlMWQxYTMwNjgwMzQzZTlmZDlhNzIzMTQyOWI2
ZTU0NDEwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRS
ZWNvcmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC05MjIsNiArOTIzLDE0IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUMCk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1Zh
bHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30KKwogdm9p
ZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGI1Zjll
MzY5YTdlNTdiYWZmMDQ2ZDJhMzY1ZGJjMDI0Y2RjZGI5M2IuLjRmZjBlM2QxNTBiNDI2MGVmOTRi
MjFlM2NiYTBmMjMxMmZiNDM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgog
I2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC05NDIsNiArOTQzLDMwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0
aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkp
OwogfQogCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFi
bGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQoreworICAg
IEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6
aW5mbygpKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICAgICAgCisgICAgSlNBcnJvd0Z1bmN0aW9uKiBhcnJvd0Z1bmN0aW9uICA9IGlzSW52
YWxpZGF0ZWQKKyAgICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSkKKyAgICAgICAgOiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICAKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycm93RnVuY3Rpb24pOworfQorICAgIAorRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwg
ZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworfQorICAgIAorRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29t
bW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOwor
fQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDNkODNmNTkw
ZGNmOTE4MDNhMzQ0OGJhMDgzYjJmOTJiY2JlODRmOWIuLmE2N2NhYWNiMzJmYjIxNThhOWMwNWU2
YTUwOTYyMWIzYjgzZThlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCkBAIC0xMjIsNiArMTIyLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm8KIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQUykoRXhl
Y1N0YXRlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNj
QykoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0NKKShFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNTKShFeGVjU3RhdGUqLCBzaXplX3QsIHNp
emVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJh
dGlvbl9FU3NpQ0kpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgVW5p
cXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKQEAgLTI4OCw2ICsyODksOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyV2l0aFBy
b2ZpbGUoRXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRp
b25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2Vs
bCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0
ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFu
ZGxlV2F0Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4
IDJkNDY3N2M2NjU1N2JiY2M1ZTRkMTA5ZWY5YjAxMzhkOWE4M2YxZWMuLmEyYTZiMmIxMWM1Njgx
ZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiVk0uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDU1Yjgx
ZWUwZjc4ZmE3YWQ5YTIwZGNkNDc2ODEyYjQxZjU2ODVkN2YuLjJjZDlmNmViOGQ2ODM4Njg3MDk3
YzRlY2NlNzkyMTU5MTUxMDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2lu
Y2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAg
LTE3MSw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAg
ICAgRXhlY1N0YXRlKiBfX3JjZl9leGVjID0gKGV4ZWNDYWxsZWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgX19yY2ZfZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKLQorICAg
IAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVj
U3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwMTMsMTIgKzEwMTQsMjQgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOworICAgIAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25F
eHByKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIHNjb3BlKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwogICAg
IAotICAgIExMSU5UX1JFVFVSTihmdW5jKTsKKyAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoNCkuanNWYWx1ZSgpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlv
bkV4cHIocGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNBcnJvd0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCB0aGlzVmFsdWUpKTsKIH0KIAog
c3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWND
YWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKQEAgLTEwOTYsNyArMTEwOSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
CiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgVk0m
IHZtID0gKnNjb3BlLT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2Fs
bGVlLT5leGVjdXRhYmxlKCk7Ci0gICAgCisKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29k
ZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUt
PmlzSG9zdEZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCmluZGV4IDhjYzY5YTk2MDBiYmY5ZDg1MzM5ZDYwOTU5NWY2N2M2OGQwNzY3MWIu
LjNmMWRhYTgxMmI3MDJlMjNjNmFhZWY5ZmQ3YzA2NzFlZTIwMjVjMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05Nyw2ICs5Nyw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY29uc3RydWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzkxMDYxN2VkODM0Yjc0
YzlmMmY4ZWU0YjI2ODdjOGI5Y2ZlM2M3Yy4uNzNmYzU4ODQ0MmRkYzRiOWNmYTdiODhmMDA0Y2E4
NjczZTQ5OWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTE4Myw2ICsxMTgzLDEwIEBAIF9sbGludF9vcF9uZXdf
ZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhw
KQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19h
cnJvd19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg1KQogCiBfbGxpbnRfb3BfY2FsbDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGU5MGVjZWRmYTczMDk4MmZlZWY3
MWVlYjBjZWE2NDM4MjM0YTY5MWMuLjdlZjZiODdjMTcwYWQwODNiMWY1MjlkYTg4MzZjMDBjZGE2
NGI0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMzczLDMgKzIzNzMsMTIgQEAgX2xsaW50X29w
X3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisK
K19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIEpT
QXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigxLCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ5NDU1Zjc1YzdiNjY0
MmZiOGM4NzIzZmMxNTJhMzc5MDkxMDNiNWIuLmQyMTUyYTJmMjc3YWRlNTg3OTc2YTFjM2YxMjAy
MzcyOWIzOGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMjI2LDMgKzIyMjYsMTEgQEAgX2xsaW50X29w
X3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisK
K19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCisgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjpt
X2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAg
IHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmlu
ZGV4IDdiNTg3NzMwYTZmMDM1NDQwZGI5MGQ5YzQyNjgwYWQ1NzhiOTRhNjcuLjgwNmRiNTIzMDNk
NWFkM2E3MTg4MTI5Zjg4YmQ3NjRjNmI1MGVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjEsMTkgKzM2MSwxOSBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQs
IAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUpCisgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFy
c2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3Ry
dWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBpblN0cmljdENv
bnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5j
dGlvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKKyAgICAgICAgdXNlc1RoaXMo
KTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Np
b24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5j
dGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLQotICAg
ICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJO
b2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3Vy
Y2UpOworICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBBcnJvd0Z1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1lLCBmdW5j
dGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExv
YyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24u
c3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAppbmRleCBhYmI3MmE3NGUxMjg4NDhlYThiNDNmZDg2MzY5NzRjYjk5N2MzN2Ri
Li5iZGMxYmVlNzc4NDQ4NzJhYTYyNGQ0NDNiY2JhMTk2OTNhZGJkMTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtODkwLDEzICs4
OTAsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5j
RXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAKKyAgICBpbmxpbmUgQmFzZUZ1bmNFeHBy
Tm9kZTo6QmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2Nh
dGlvbikKICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCiAgICAgewogICAgICAgICBt
X21ldGFkYXRhLT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lv
bik7CiAgICAgfQogCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQor
ICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBz
b3VyY2UpCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNs
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1f
bWV0YWRhdGEobV9tZXRhZGF0YSkKQEAgLTkwNCw2ICs5MTAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rp
b25EZWNsYXJhdGlvbik7CiAgICAgfQogCisgICAgaW5saW5lIEFycm93RnVuY0V4cHJOb2RlOjpB
cnJvd0Z1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVuY0V4cHJOb2RlKGxvY2F0aW9u
LCBpZGVudCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAgICB9CisKICNpZiBFTkFCTEUo
RVM2X0NMQVNTX1NZTlRBWCkKICAgICBpbmxpbmUgQ2xhc3NEZWNsTm9kZTo6Q2xhc3NEZWNsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY2xhc3NE
ZWNsYXJhdGlvbikKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjZjRmZTQ1MGE5MjQ5NTA0ZjMwYmE4NWEy
NjRlNjdiYWE5YTU1Yzk2Li4xOGY4NDU1MzMwNWM0YTBjMjFjNzMzODgzOWMyOWYyM2M3NGRlOTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3
IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICBQYXJz
ZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRl
eHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAg
ICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVt
bihlbmRDb2x1bW4pCkBAIC0xNjMsNiArMTYzLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1
bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAg
ICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKKyAg
ICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgQVNTRVJU
KG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rvcktp
bmQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAxZDZiMDNkNzc2
NjI5N2FlMTc1OTNiYmE5YWVjNTYwOTMyOTMwYzJkLi44NzM2NjhlYzM3YjQyN2I5MjA2NDlkZTMw
NjgzODFlMmNkOGExNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0x
NjUsNiArMTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rv
dEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0xODA5LDcgKzE4MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAg
ICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
LCBTb3VyY2VQYXJzZU1vZGUpOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbik7CiAKICAgICAgICAgdm9p
ZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM1LDYgKzE4MzYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9j
b25zdHJ1Y3RvcktpbmQpOyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNp
Z25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBs
aW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4NjAsNiArMTg2Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVu
c2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0
cnVjdG9yS2luZCA6IDI7CisgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsK
ICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9k
ZSB7CkBAIC0xODg5LDE4ICsxODkyLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNp
Z25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBCYXNlRnVuY0V4cHJOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNFeHByTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgICAgIEJhc2VGdW5jRXhwck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBt
ZXRhZGF0YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7CisgICAgfTsKKworCisgICAgY2xh
c3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgfTsKIAotICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAg
ICBjbGFzcyBBcnJvd0Z1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNlRnVuY0V4cHJOb2RlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJj
ZUNvZGUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYWVlNzBiNmE3
MzI5YmMxMWI1Y2U3M2Q1MzUyZDMxM2UyMmEyN2JlMS4uZjUwODE0ZTdiMTQyYWI1MzAwZDg0YTRi
NzAxOWY5Yzk4NGUyYjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cApAQCAtMTU0NiwxMSArMTU0NiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24s
IGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRl
ckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogeworICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBi
b2R5VHlwZTsKICAgICBpZiAoYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB8
fCBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrKSB7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBl
bmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1l
dGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xNTYyLDcgKzE1NjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5j
dGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIGVsc2UKICAg
ICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVj
a0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8g
IkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5
IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tl
bkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3Rh
cnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5j
dGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3Ry
aWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwg
dG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBj
b25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlv
bik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCkBAIC0xNzM3LDcgKzE3MzgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZAogICAgIH0KICAgICAKICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvciA9IGNvbnN0cnVj
dG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0KKyAgICAKICAgICBmdW5jdGlvbklu
Zm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8gSWYgd2Uga25v
dyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZv
IGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCkBAIC0xNzU2
LDExICsxNzU3LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgICAgICBlbmRM
b2NhdGlvbi5zdGFydE9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldCA6CiAg
ICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gcGFyc2VUeXBlID09IEFycm93RnVuY3Rpb25QYXJzZVR5cGU7Cisg
ICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5j
dGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAK
LSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2Fj
aGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgICAgICAgICAgY2FjaGVkSW5mby0+
c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwg
bW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUt
PnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9w
U2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CkBAIC0xNzc0LDcgKzE3NzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICBt
X2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAg
ZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0Owog
Ci0gICAgICAgIGlmIChwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkKKyAgICAg
ICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBj
YWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDA3NjBjMTllYjE2
MzZkYjIxYTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcuLmRjNTYxZjliMWE2ZGEzNjQzYjgyNzJmZTdi
MTJlMjE1ZTQ0ZjQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIENsYXNzRXhwcmVzc2lv
biBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0
eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAg
IGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsgcmV0dXJuIEZ1bmN0aW9uQm9k
eVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wp
IHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAg
IHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVB
cmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGFiMTY3MjExNjgxOTRjMWE2MDI4
OWViODU2ZTk4YzBjZmExN2I3OS4uOWRjNjk0ZjI3YTQ1ODczYjJhMjE2N2EzNjk2MzVkM2U1OTQ1
YWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
QEAgLTIzNiw4ICsyMzYsNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpu
ZXdDb2RlQmxvY2tGb3IoCiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGdsb2JhbE9i
amVjdC0+aGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKICAgICBQcm9m
aWxlck1vZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNQcm9maWxlcigpID8gUHJv
ZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0KLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmNvZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2Us
IGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcigqdm0sIGV4ZWN1dGFibGUtPm1f
c291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIGV4ZWN1dGFi
bGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKICAgICByZWNvcmRQYXJzZShleGVjdXRhYmxlLT5tX3Vu
bGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1
dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBz
dGFydENvbHVtbigpLCBlbmRDb2x1bW4oKSk7IAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2sp
IHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0tPnRocm93RXhjZXB0aW9uKApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGJjZTI0MjhjYmMxMDFkZGE2Y2Ix
MDFkNzBiZjAyN2Y3ZTBlYTNkZjAuLmNmMmJkZTg4YzVhNmU5MTY3NjAzNmVlMjdkNzQ0Zjc2NDUz
OWNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAg
LTQ3NCw3ICs0NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7
IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1
bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUzMCw3ICs1MzAsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFs
c2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBA
IC02MzMsNiArNjMzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0
QWJpbGl0eSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xh
c3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNv
bnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pbmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxYzI2MGUxNmEyMGUyYjg0MDlh
ZWJiOWEyZTU5ZGI5YjNkZjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Fycm93RnVuY3Rpb246OnNfaW5mbyA9IHsgIkFycm93
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXJyb3dG
dW5jdGlvbikgfTsKKwordm9pZCBKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQoreworICAgIHN0YXRpY19jYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpLT5KU0Fycm93RnVu
Y3Rpb246On5KU0Fycm93RnVuY3Rpb24oKTsKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93
RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEpTQXJyb3dGdW5jdGlv
biogcmVzdWx0ID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7
CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIHJl
c3VsdCwgIkFsbG9jYXRpbmcgYW4gYXJyb3cgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitKU0Fycm93RnVuY3Rpb246OkpTQXJyb3dGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlz
KQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKQorICAgICwgbV9ib3VuZFRoaXModm0sIHRoaXMs
IGJvdW5kVGhpcykKK3sKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNy
ZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhp
cykKK3sKKyAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+aGFzQmVl
bkludmFsaWRhdGVkKCkpOworICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
LCBib3VuZFRoaXMpOworfQorCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXJyb3dGdW5jdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNBcnJvd0Z1bmN0
aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQoreworICAgIHJl
dHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmNTZmNjhlZmVlZGQ4MjMxYTM1YjJmYzI0OWZkODFhYzk3ZjViMjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaApAQCAt
MCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtv
diA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSlNBcnJvd0Z1bmN0aW9uX2gKKyNkZWZpbmUgSlNBcnJvd0Z1
bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIEpTR2xvYmFsT2JqZWN0Owor
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsK
KyAgICAKK2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBm
cmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBE
Rkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwor
I2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5j
dGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0Fycm93
RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlv
blNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVv
ZihKU0Fycm93RnVuY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0
aW9uKiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgeworICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJvd0Z1
bmN0aW9uPih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
Ym91bmRUaGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFs
T2JqZWN0KCkpOworICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAg
ICByZXR1cm4gZnVuY3Rpb247CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworCisgICAgSlNWYWx1
ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQorICAgIAorICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZUaGlzVmFsdWUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Fycm93RnVuY3Rpb24sIG1fYm91bmRU
aGlzKTsKKyAgICB9CisgICAgCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIAorcHJpdmF0
ZToKKyAgICBKU0Fycm93RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
KiwgSlNWYWx1ZSk7CisgICAgCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7Cit9OworICAg
IAorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Fycm93RnVuY3Rpb25faApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDBiODdkNzVjOTE0
NTBjNWFmMWFhZWQyN2E2MWE3NDhlZjgwZjA5M2UuLjkyODM1MGUyNDc4YzQ1ZjdiZjdlOGFhODRj
OWVjM2E0ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAg
ICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVy
ZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBp
bnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENy
ZWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25J
bmxpbmVzLmgKaW5kZXggZjZjNmQ1OGVjNmU1YzExNjRjYjI3ZmE1ZTQxNjE4YjRiODE0MmYwMi4u
ZjA1OTU4NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNiNjQ0YTg4NDQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC00NCw2ICs0
NCwxMyBAQCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgICwgbV9yYXJlRGF0YSgpCiB7CiB9
CisgICAgCitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZSh2
bSwgdGhpcywgZXhlY3V0YWJsZSkKKyAgICAsIG1fcmFyZURhdGEoKQoreworfQogCiBpbmxpbmUg
RnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGNlZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAwNDQxN2MyMjlhZDA0MjMuLmRhMWFjMjVhYWIw
MDg2MmNkNTM3MzBmOWE1YWQxMjVhMmRjMGZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVy
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNB
cnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjU5
LDYgKzI2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIGV4ZWMt
PnNldENhbGxlZShtX2dsb2JhbENhbGxlZS5nZXQoKSk7CiAKICAgICBtX2Z1bmN0aW9uU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlvblN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBt
X2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsKICAgICBt
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsK
QEAgLTc5NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBi
MTMxMDJiMjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMwNTVlOWJhZTMwYmI3M2ZkOTAxNWJjMDAzODM2
M2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fY2FsbGVlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
ZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1
bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5j
dGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKQEAgLTQ2
Miw2ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxsZWVTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
ZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBh
cnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgUHJv
cGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlv
bk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9z
cmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlM2E2NmVhOTJm
MDMwZGIzNzc5YTRjM2U0MDJlN2MxMThkMWQ4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmst
b3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpAQCAtMCwwICsxLDQ2IEBACisidXNl
IHN0cmljdCI7CisKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gc2hvdWxkVGhyb3dURFoo
ZnVuYykgeworICAgIHZhciBoYXNUaHJvd24gPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBm
dW5jKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmIChlLm5hbWUuaW5kZXhPZigiUmVm
ZXJlbmNlRXJyb3IiKSAhPT0gLTEpCisgICAgICAgICAgICBoYXNUaHJvd24gPSB0cnVlOworICAg
IH0KKyAgICBpZiAoIWhhc1Rocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWQgbm90
IHRocm93IFREWiBlcnJvciIpOworfQorCitmdW5jdGlvbiBiYXIoZikgeyB9CisKK2Z1bmN0aW9u
IGZvbyhiKSB7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICAoeCkgPT4geyBy
ZXN1bHQgPSB4OyByZXR1cm4gdGR6UGVycGV0cmF0b3I7IH0KKyAgICBpZiAoYikgeworICAgICAg
ICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAg
ICAgICAgICAgIHJldHVybiB0ZHpQZXJwZXRyYXRvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBs
ZXQgdGR6UGVycGV0cmF0b3I7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFy
KTsKK25vSW5saW5lKGZvbyk7Citub0lubGluZShzaG91bGRUaHJvd1REWik7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIGJvb2wgPSAhKGkgJSAxMDApOworICAgIGlm
IChib29sKQorICAgICAgICBzaG91bGRUaHJvd1REWigoKT0+IHsgZm9vKGJvb2wpOyB9KTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhib29sKTsKKyAgICAgICAgaWYgKHJl
c3VsdCAhPSAwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFj
dGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQxYmJl
MTQwMjQxNGRiMjZjNmI3ZmQ0MDFmYjBlOWM2NWE0YmE3NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9u
LXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuID0g
MTAwMDAwMDsKKworZnVuY3Rpb24gYmFyKHNldCkgeworICAgIHZhciByZXN1bHQgPSBzZXQoMCk7
CisgICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2
YWx1ZTogIiArIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0
ID0gMDsKKyAgICB2YXIgaW1VbmRlZmluZWQ7CisgICAgdmFyIGJhejsKKyAgICB2YXIgc2V0ID0g
ICh4KSA9PiB7CisgICAgICAgIHJlc3VsdCA9IHg7CisgICAgICAgIGlmIChiYXogIT09IDUwKQor
ICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBiYXo7CisgICAgICAgIHJl
dHVybiBpbVVuZGVmaW5lZDsKKyAgICB9OworICAgIGJheiA9IDUwOworICAgIGlmIChiKSB7Cisg
ICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlm
IChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJlNDM3YWY3YjJjMmFkMzQ1ZTI2YzIwMzc3ODkwZGY1ZjMxZmFmMDcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwyNSBAQAor
dmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVuY3Rpb24gZm9vKGIp
IHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsgcmVzdWx0ID0g
eDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsK
KyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9v
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9v
KCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9u
LXNpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZhNzllYzllYWE2NWM1NDE5MzBiOTA0ODI2ZTdhMjNhMTNm
YjJlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAsMCArMSwyNCBAQAordmFy
IG4gPSAxMDAwMDAwMDsKKworZnVuY3Rpb24gYmFyKGYpIHsgZigxMCk7IH0KKworZnVuY3Rpb24g
Zm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0geCA9PiB7IHJlc3Vs
dCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgaWYgKHJl
c3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkOiAiICsgcmVzdWx0Owor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9Jbmxp
bmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7
CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDAp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1i
b3VuZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1ib3VuZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjAzMjA4OGFiZjI2ZGFlMmFlNzFhMmFjNGMwNWQ0ZjA3
NzU1ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGQg
PSB7CisgIHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLngg
KyB6OyB9Cit9OworCitub0lubGluZShkLnkpOworCit2YXIgZSA9IHsgeCA6ICJiYXoiIH07CisK
K2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQueSgpLmJpbmQoZSwg
ImxleSIpKCksICJiYXJsZXkiLCAiRXJyb3I6IGZ1bmN0aW9uIGJpbmQgc2hvdWxkbid0IGNoYW5n
ZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY4NzdlMGFkOWM4M2FjNTNhN2Y2ZDM1MTk2MjMyMTRjMWU5ZmM2MGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE4IEBACit2YXIgdGVzdENhc2UgPSBmdW5j
dGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsg
IicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBkID0geworICB4
IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsK
K25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJhciIgfTsKKworZm9yICh2YXIgaT0w
OyBpPDEwMDAwO2krKyl7CisgICAgdGVzdENhc2UoZC55KCkuY2FsbChlKSwgImZvbyIsICJFcnJv
cjogZnVuY3Rpb24gY2FsbCBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGluZyBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICB0ZXN0Q2FzZShkLnkoKS5hcHBseShlKSwgImZvbyIs
ICJFcnJvcjogZnVuY3Rpb24gYXBwbHkgc2hvdWxuJ3QgY2hhbmdlIHRoZSBsZXhpY2FsIGJpbmRp
bmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3Iu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTViZWI1NTdkNzk0OWJjNmIyYzc4YWI0NjU5ZWE4YzJhYzYzZGU2Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDIyIEBACit2YXIgdGVzdENhc2Ug
PSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVj
dGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBzaW1w
bGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93RnVuY3Rp
b24pOworCit2YXIgZXJyb3JPbkNyZWF0ZSA9IGZhbHNlOworCitmb3IgKGk9MDtpPDEwMDAwO2kr
KykgeworICAgdHJ5IHsKKyAgICAgICB2YXIgZmMgPSBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigp
OworICAgfQorICAgY2F0Y2ggKGUpIHsKKyAgICAgZXJyb3JPbkNyZWF0ZSA9IHRydWU7CisgICB9
CisKKyAgICB0ZXN0Q2FzZShlcnJvck9uQ3JlYXRlLCB0cnVlLCAiRXJyb3I6IE5vIGV4Y2VwdGlv
biBkdXJpbmcgcnVuIG5ldyBBcnJvd0Z1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZmFiMjRjOTFiYzU3Yzk1ODc2
MzJkZmVjOWE0YzkzNzk4ZTIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwpA
QCAtMCwwICsxLDE5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3Rl
ZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1l
c3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1
YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9
IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlz
LmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOworfQorCitu
b0lubGluZShEb2cpCisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdmFyIGQgPSBu
ZXcgRG9nKCJNYXgiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0
aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24g
IzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lSGFyZCgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjExN2RiMzAzY2RmZTNkMTVkYTQ1YzgxNjRlNDhkMDNhNjdlYjkyYTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpAQCAtMCwwICsxLDM5IEBACit2YXIgdGVzdENhc2UgPSBm
dW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVk
ICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBmdW5jdGlv
bkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOwor
fTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKwordGVzdENh
c2UoaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5v
dCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKwor
dmFyIG9iaiA9IHsKKyAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHRo
aXM7CisgIH0KK307CisKK25vSW5saW5lKG9iai5tZXRob2QpOworCitmb3IgKHZhciBpPTA7IGkg
PCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCkgPT09IG9iaiwgdHJ1
ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzMiKTsKK30KKwordmFyIGZha2UgPSB7c3RlYWw6IG9iai5tZXRob2QoKX07
Citub0lubGluZShmYWtlLnN0ZWFsKTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykg
eworICAgIHRlc3RDYXNlKGZha2Uuc3RlYWwoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIp
OworfQorCit2YXIgcmVhbCA9IHtib3Jyb3c6IG9iai5tZXRob2R9Oworbm9JbmxpbmUocmVhbC5i
b3Jyb3cpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uo
cmVhbC5ib3Jyb3coKSgpID09PSByZWFsLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDE5MDg2
ZDU4NDc5YzRiZDRmZTBmNTI3YjNhN2JiODkzOWMwOTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLTMuanMKQEAgLTAsMCArMSwyOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFj
dHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsK
KyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQg
d2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7IG5hbWU6J29i
aicsIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAi
LW5hbWUtIiArIHZhbHVlOyB9fTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAg
dGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdvYmotbmFtZS10
ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworZm9yICh2YXIgaT0wOyBp
PDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDEgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50
b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0MSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0
cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitvYmoubmFtZT0nbmV3T2JqJzsKKworZm9yICh2
YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyAr
IGkudG9TdHJpbmcoKSksICduZXdPYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9y
OiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzUiKTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3Vs
dDIgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVz
dWx0MiwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMg
bm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NWJkMzYzZTRlNDZiMDJkMmYxOWJiZTM4NTAyZjUyODIzM2E5ZjEzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTQuanMKQEAgLTAsMCArMSwyNiBAQAordmFyIHRlc3RDYXNlID0gZnVu
Y3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCAr
ICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7
CisgIG5hbWU6J29iaicsCisgIGludGVybmFsT2JqZWN0OiB7CisgICAgbmFtZSAgOidpbnRlcm5h
bE9iamVjdCcsCisgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRo
aXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH0KKyAgfQorfTsKKworbm9JbmxpbmUob2JqLmlu
dGVybmFsT2JqZWN0Lm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7Cisg
ICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJp
bmcoKSksICdpbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMSIpOworfQorCitvYmouaW50ZXJuYWxPYmplY3QubmFtZT0nbmV3SW50ZXJuYWxPYmplY3Qn
OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKG9iai5pbnRl
cm5hbE9iamVjdC5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnbmV3SW50ZXJuYWxP
YmplY3QtbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy01LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc1NDk0
Y2U2YjY2ZGIwYTdlYjQzZGNjODNlYzFlYWNlNjI4NzU0NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy01LmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBzb3J0ZWRWYWx1ZXM7CisKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
Cit2YXIgb2JqID0geworICBhcnI6IFsxLCA0LCA2LCAzLCA3LCAwXSwKKyAgYnViYmxlU29ydDog
ZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB7CisgICAgICB2YXIgdG1wOworICAgICAg
dmFyIGFyID0gdGhpcy5hcnIuc2xpY2UoKTsKKyAgICAgIHZhciBfbGVuZ3RoID0gYXIubGVuZ3Ro
CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9sZW5ndGg7IGkrKykgeworICAgICAgICBmb3Ig
KHZhciBqID0gaTsgaiA+IDA7IGotLSkgeworICAgICAgICAgIGlmICgoYXJbal0gLSBhcltqIC0g
MV0pIDwgMCkgeworICAgICAgICAgICAgdG1wID0gYXJbal07CisgICAgICAgICAgICBhcltqXSA9
IGFyW2ogLSAxXTsKKyAgICAgICAgICAgIGFyW2ogLSAxXSA9IHRtcDsKKyAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBhcjsKKyAgICB9CisgIH0KK307CisKK25v
SW5saW5lKG9iai5idWJibGVTb3J0KTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsK
KyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDMsIDcsIDBdOworICAgIHRlc3RDYXNlKG9iai5i
dWJibGVTb3J0KCkoKS5sZW5ndGgsIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisKKyAgICB2YXIgc29ydGVk
VmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1sw
XSwgMCwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24gIzYiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbNl0sIDcsICJF
cnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICM3Iik7CisKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDUsIDgsIDIxLCAxOSwg
MF07CisKKyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCkubGVuZ3RoLCA5LCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjOCIpOworCisgICAgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRl
c3RDYXNlKHNvcnRlZFZhbHVlc1sxXSwgMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkg
YmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEyIik7CisgICAgdGVzdENhc2Uo
c29ydGVkVmFsdWVzWzhdLCAyMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEzIik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMtNi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTdiYzdjOGYxODA1MzU4
YmRiYTg1YjJjZWY2YTY5YjVmNDFlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5q
cwpAQCAtMCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBl
Y3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93
IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBh
Y3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFt
ZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+ICB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0
TmFtZU5lc3RpbmdMZXZlbDEgPSAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0TmFt
ZU5lc3RpbmdMZXZlbDIgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBk
ID0gbmV3IERvZygiTWF4Iik7CisKK25vSW5saW5lKGQuZ2V0TmFtZSgpKTsKK25vSW5saW5lKGQu
Z2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpKTsKK25vSW5saW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZl
bDIoKSgpKCkpOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQu
Z2V0TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5l
c3RpbmdMZXZlbDEoKSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisgIHRlc3RDYXNlKGQuZ2V0
TmFtZU5lc3RpbmdMZXZlbDIoKSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24t
c2luay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTBhMzFkNjczMWFlNjk3NGQ2NjdlZDhkMjQ4
NzBiNWQ1MzFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay1vc3Jl
eGl0LmpzCkBAIC0wLDAgKzEsMzQgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK3ZhciBuZXdDb250
ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGJhcigpIHsgfQor
CitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAo
eCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAor
ICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQp
CisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24nOworICAg
ICAgcmVzdWx0ID0geDsKKyAgICB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOwor
ICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9Jbmxp
bmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7
CisgICAgdmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRleHQsICEoaSAlIDEwMCkpOworICAg
IGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFj
dGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTQzMDYzN2M4NWJmOTQyMWFlOWM5N2UwZGQ3
ZjZjZDEzNWM0Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMK
QEAgLTAsMCArMSwzOCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRleHQgPSB7
CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKGYpIHsKKyAgICBpZiAo
dGhpcyA9PSBuZXdDb250ZXh0KQorICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBuZXN0
aW5nIGZ1bmN0aW9uJzsKKyAgICBmKDEwKTsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2
YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsKKyAgICAgIHJlc3VsdCA9IHg7
CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBp
ZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAg
ICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAgfTsKKwor
ICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVzdWx0ICE9IDEw
KQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOwor
bm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIg
cmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3Vs
dCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1z
aW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjllMDI3MTM5YzE2Njdl
MTA2OWJhYmQyOTVhNmQ3ZmMwYjllNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5n
LW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM3IEBACit2YXIgbmV3Q29udGV4dCA9
IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0g
MzsgfQorbm9JbmxpbmUoY2FsbCk7CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0
aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgewor
ICAgIHZhciBmID0gKCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3Rv
cmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5l
d0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVu
Y3Rpb24gIzEnOworICAgIH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9y
Y2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0
KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4
JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAw
OyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7
CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0
byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgYXJy
b3cgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVj
ayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3Zh
ciBmID0gc2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJvdyAiRXJyb3I6
IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhp
cy1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZmZjYjNmYTViMWU3N2ZiNjI4NjE4MGIzMzJhM2JlN2RlMjhmNjBlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNiBAQAordmFyIG5ld0Nv
bnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxkIGJlIGludm9j
ZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBz
aW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93
IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwg
dGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0
IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKyAgICAgIHJldHVybiB4OworICAgIH07CisgICAgaWYg
KHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB7Cisg
ICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAo
dGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAg
ICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMic7CisgICAgICByZXR1
cm4geDsKKyAgICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZh
bHNlKTsvLyBTdWJzdGl0dXRlIHRoaXMKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYg
KHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiAr
IHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBj
b21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMg
cHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250
ZXh0LHRydWUsIHRydWUpOy8vIFN1YnN0aXR1dGUgdGhpcwordmFyIHJlc3VsdCA9IGYoNDIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3Qg
IiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtp
bmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1N2VhMDc2MzVhNDEzMWNkMjMxMWQ0NTA3MzVmNTdjMWRk
OTU4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEs
NDUgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKKy8v
IFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29u
dGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB7CisgICAgICAv
LyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAh
PSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJv
dyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisKKyAgICAgIHJldHVybiB4
OworICAgIH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0K
KyAgICByZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbiAjMic7CisKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNh
bGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Ly8gdXNlIGNhbGwgdG8gc3Vic3RpdHV0ZSBjb250
ZXh0CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0
IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0
byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVy
IGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7
Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8vIFRoaXMgc2hv
dWxkbid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3IgY29tcGxldGVs
eSBjcmFzaAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAiICsgcmVzdWx0
OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhl
IHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUs
IHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRo
cm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90
aGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRjZTBjNjU4ZDNhMmY3OTIyOWRmNGY4OTJjY2RhMTUx
M2M5NGU1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCArMSwxNyBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIg
c2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitub0lubGluZShzaW1wbGVBcnJvd0Z1
bmN0aW9uKTsKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0ZXN0Q2FzZShPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiksIEZ1bmN0aW9uLnByb3RvdHlw
ZSwgIkVycm9yOiBOb3QgY29ycmVjdCBnZXRQcm90b3R5cGVPZiB2YWx1ZSBmb3IgYXJyb3cgZnVu
Y3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1
bmN0aW9uLCB0cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3VsdCBmb3IgaW5zdGFuY2VvZiBt
ZXRob2QgZm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RDYXNlKHNpbXBsZUFycm93RnVu
Y3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3Qg
cmVzdWx0IGZvciBjb25zdHJ1Y3RvciBtZXRob2Qgb2YgYXJyb3cgZnVuY3RpbyAgIG4iKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1ydW4tMTAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ExZjBhNDljYjE2ODYzYzU5MjEz
NjFmMGFkYjFlMTRlYzliNjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCkBAIC0wLDAgKzEsMjQg
QEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4
cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAg
fQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBm
b3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1l
KSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4g
dGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsK
KyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZh
bHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMSks
IHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24g
b25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmlu
ZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4t
MTAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRjZGIzYzcwYTFiMjdjM2RiYjUyMzgwOTU1ZjUzNTNkNzY3
NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rp
b24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxj
b3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlz
Lm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1l
Iik7OworICAgIH07CisKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAg
IGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7
CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwgdHJ1
ZSwgIkVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIG9uZSB0aW1lIik7
Cit0ZXN0Q2FzZShydW4oMTApLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJy
b3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZTVmNmJjODZiZDMxNDUxYjAxY2EyN2QwYjk3MjBiNTdlOGQ2MDUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXJ1bi0xMDAwMC0xLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0
aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAi
JywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNv
dW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsr
KSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBu
YW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5uYW1lOworICAgIH07CisKKyAg
ICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9i
ai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1
cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0cnVlLCAiRXJyb3I6IEVycm9y
OiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwMDAwIHRpbWVzIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
cnVuLTEwMDAwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0MjcxZjRhMzE1OTE2MjVhMGJk
M2Q3NDRkMjUxMjYzMzMwMmU0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpAQCAtMCwwICsx
LDIzIEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2Fn
ZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAi
LiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7
CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0ID0gdHJ1ZTsK
KyAgZm9yICh2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24g
KG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAo
KSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2Jq
KCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAg
ICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
c3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24g
b2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1h
bGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjg2MmM2Mjhl
M2IyY2EzMDQ0MTBiMWFlMjI2OTQ3MTgwNTFkZWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91
YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGNhbGwobykgeyBvLngg
PSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZh
ciBmID0gKCkgPT4geyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNl
IGFsbG9jYXRpb24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6
IDIgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsg
KytpKSB7CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMp
CisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyBy
ZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29t
cGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHBy
b3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwor
aWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0
IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MjdmM2NhM2JkZThkYTMwMTQwZmExNDk5NzNlMTdhYWE4ZDkxMDVlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBzaW5rIChw
LCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQo
KTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB4OworfQorbm9JbmxpbmUoc2luayk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luayh0cnVl
LCBmYWxzZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIp
CisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisK
Ky8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0
byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9j
YXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9
IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQy
IGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZGI3MGJiOWFiYzIzMTQ4ZjYyN2VmYzYxODZiZTA1N2MzY2JiMjc2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsK
KyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyBy
ZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIHRy
dWUpOworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAg
IHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBB
dCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhl
IEZUTAorCisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNl
IGJyYW5jaAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsK
K2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNo
b3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVy
cm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhl
IGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAor
dmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVz
dWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAi
ICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NDkyMzk3MTk4M2RjZGEzNGMy
NjkzOTIxMTdiMTc0OGU2N2I0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAgLTAsMCArMSwyNyBAQAor
dmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgeworICBjb25z
dHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBpZiAoYWNjZXNzVGhpc0JlZm9y
ZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7CisgICAgICBzdXBlcigpOworICAg
IH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQorfTsKKwordmFyIGV4Y2VwdGlv
biA9IG51bGw7Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0cnkgeworICAgICAg
IG5ldyBCKHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgICBleGNlcHRpb24gPSBlOworICAg
ICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKKyAgICAgICAgICB0aHJvdyAi
RXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVycm9yIjsKKyAgfQorCisgIGlm
ICghZXhjZXB0aW9uKQorICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1
bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7CisKKyAgdmFyIGUgPSBuZXcgQihmYWxzZSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tdHlwZW9mLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTNlYzBkZGQ1NTE0ZmFmNGQwZDAz
YzllMDY1NzBhMGM4MmJlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCwwICsxLDI3IEBA
Cit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewor
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBl
Y3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0K
K307CisKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKwor
bm9JbmxpbmUoYWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkgeworICB0ZXN0Q2FzZSh0eXBlb2YgYWYxLCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5v
dCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKHR5
cGVvZiBhZjIsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzIiKTsKKworLy9GaXhtZTogU29tZSBidWcgaW4gaW5saW5pbmcgdHlwZW9m
IHdpdGggZm9sbG93aW5nIHJ1biBwYXJhbWV0ZXJzIGZ0bC1uby1jaml0LW5vLWlubGluZS12YWxp
ZGF0ZQorLy8gLS11c2VGVExKSVRcPXRydWUgLS1lbmFibGVGdW5jdGlvbkRvdEFyZ3VtZW50c1w9
dHJ1ZSAtLWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10aHJlc2hvbGRGb3JKSVRBZnRlcldh
cm1VcD0xMDAgIC0tdmFsaWRhdGVHcmFwaD10cnVlIC0tbWF4aW11bUlubGluaW5nRGVwdGg9MQor
Ly8KKy8vIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgIHsKKy8vICAgaWYgKHR5cGVv
ZiAoZnVuY3Rpb24gKCkge30pICE9PSAnZnVuY3Rpb24nKQorLy8gICAgICAgdGhyb3cgJ1dyb25n
IHR5cGUnOworLy8gfQorLy8gIHRlc3RDYXNlKHR5cGVvZiAoKT0+e30sICJmdW5jdGlvbiIsICJF
cnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMtIiArIGkpOwor
CisvLyAgdGVzdENhc2UodHlwZW9mICgoYikgPT4ge2IgKyAxfSksICJmdW5jdGlvbiIsICJFcnJv
cjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzQiKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhOTBiOGYzYTFkOTVmYzQzYmRlZWJlMzQ1N2NhYTY0ZDFlNmI3YTAyLi5mMWQxYjhmMTUwMGFk
Y2NlOGI3M2M2ODg1YzgwNTg4M2M5NjcwNTEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUt
MDgtMTIgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1bmN0
aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2YgdGhpcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0OTU2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJp
bmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJpbmQu
aHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9h
cnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tdHlwZW9mLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVz
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanM6
IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5q
czogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2Yu
anM6IEFkZGVkLgorCiAyMDE1LTA4LTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVkdWNlIGZsYWtpbmVzcyBvZiBpbnNw
ZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmIzMjZjY2JiNGUx
NGM2ODlkZDdkOTM4M2NjNWJjOTRmZjdmMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
ZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBk
dXJpbmcgaW52b2tlIGJpbmQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
ZC55KCkuYmluZChlLCAnbGV5JykoKSBpcyAnYmFybGV5JworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tYmluZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1i
aW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI5YWNiMmJjOGZkNTA0YzY4ZjA0NDVhNmVhYzRhNmExNDU0
YWJhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmlu
ZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWMwNzdmOTk3OWFjZjQ1ZTE2Yjk5NjU3MmQxYWZkZWVkZDU5MTEyNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhp
cyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5CisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmNhbGwoZSkgaXMgJ2ZvbycKK1BB
U1MgZC55KCkuYXBwbHkoZSkgaXMgJ2ZvbycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMxZDhhNDdlMzBiNmE4NzQ5ZWM1YjdlNzgzYzZhOWVjMzEzMmQyZDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTY3MDZmZmYxN2MyMTIzODUzNjQwYmIyYTRlYjE3ZDYzZTFhMzcy
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cg
ZnVuY3Rpb24gbm8gY29uc3RydWN0b3IKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNpbXBsZUFy
cm93RnVuY3Rpb24oKScpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3Iu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMGMwYjlhOWNkZDRkOGJkZmE2MjQxY2I2YmVmYmYwNGNjOTU4MzBm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I2NmZjMjg4
Y2FjYmQ5YzkzN2M5NzFjMmJkNmI2OGU2NjRhOTQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5k
IG9mIHRoaXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC5nZXROYW1l
KCkgaXMgZC5uYW1lCitQQVNTIGQuZ2V0TmFtZUhhcmQoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXRO
YW1lTmVzdGluZygpKCkoKSBpcyBkLm5hbWUKK1BBU1Mgb2JqLm1ldGhvZCgpKCdjb3JyZWN0Jykg
aXMgJ29iakNvZGUtbmFtZS1jb3JyZWN0JworUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBp
cyAnbmV3T2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3Qu
bWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnaW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFT
UyBkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ25ld0ludGVy
bmFsT2JqZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5j
ZSBpcyB0cnVlCitQQVNTIG93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2JqIGlzIHRydWUK
K1BBU1MgZmFrZS5zdGVhbCgpID09PSBvd25lck9iaiBpcyB0cnVlCitQQVNTIHJlYWwuYm9ycm93
KCkoKSA9PT0gcmVhbCBpcyB0cnVlCitQQVNTIGFycm93RnVuY3Rpb24oJy10aGlzJykgaXMgInJp
Z2h0LXRoaXMiCitQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODFlYTIyYTc2ZmRmOGJmZjVlNzJlNTFiNzc5NGIzZTM0N2QxNjQyYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLW90aGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90
aGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNTJlNWUzN2M2OTE1ZjM4MjNlMjliMjBh
OTRkZjUzZDA4YzAwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyBmb3IgRVM2
IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKHNpbXBs
ZUFycm93RnVuY3Rpb24pIGlzIEZ1bmN0aW9uLnByb3RvdHlwZQorUEFTUyBzaW1wbGVBcnJvd0Z1
bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzaW1wbGVBcnJvd0Z1bmN0
aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1vdGhlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3ZjhiMDBlNDYwNTVlZTZmYWU1YzFlODI4OWVm
ZWUxZjExMDkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1vdGhlcnMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10
ZHotZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3YWY2Y2Q4NjAwZTg4NDEyNzdjNDk0YTk4OTAyMjQ1MmVhNmFi
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlv
biB0ZXN0IHRkegorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpc1JlZmVy
ZW5jZUVycm9yIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRk
ei5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mOGVmMTcxY2I4MjBiZWIzY2I0YTdkM2ZjNDhlNWM1M2ZjMTE5MjZkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApAQCAtMCwwICsxLDEw
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi10ZHouanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZmIy
Y2U5NjRiZDAzMzIxYjgzMmNiODdiYmFlMGNhNTM0OWMxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitQQVNTIHR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBl
b2YgYWYyID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoKT0+e30pID09PSAn
ZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rp
b24nIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMGFjYWFhMWE0ZTRkMGU0Y2IzZDA3NjVlMzczZmVkYjc0MzgwZTAxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApAQCAtMCwwICsx
LDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi10eXBlb2YuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlYjU1MmY4MGY2NjFkZTNiYWI1MjA5YzcyZGRjZjUwMjEwMDM0NWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2Fs
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24g
dGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwu
aHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjNkODQ1NGJmZjYxODJlNjFjYmViMGI5ZWUxMzNmZTg3MzExMmJmYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0
bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI0Yzg0Mjc2ZTcxMDg3Nzg2YzU5
NDBhODIyYmNjNmY5N2MwNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTUgQEAK
K3ZhciBhZiA9IChhLCBiKSA9PiBhICsgYjsKKworbm9JbmxpbmUoYWYpOworCitmdW5jdGlvbiBi
YXIoYSwgYikgeworICAgIHJldHVybiBhZihhLCBiKTsKK30KKworbm9JbmxpbmUoYmFyKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gYmFy
KDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3M2MzYjVlMGNhNzkx
Nzk0ZjI1MTY5YTkxY2I0YTdkYzliMjhjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBA
QAordmFyIGZlID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyBiO30KKworbm9JbmxpbmUo
ZmUpOworCitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBmZShhLCBiKTsKK30KKwor
bm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUz
ZjA4ZTk2NmM3OTRjYmFmOWFkNGEzYWRiNGU5OTc5YzAyYWMyYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKQEAgLTAs
MCArMSwxMiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRo
aXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZCcpOworCit2YXIgZCA9
IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCAr
IHo7IH0KK307CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKworc2hvdWxkQmUoImQueSgpLmJp
bmQoZSwgJ2xleScpKCkiLCAiJ2JhcmxleSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41Yzg4OGY5MTFiZjFjNDRkMzg5ZDBhM2QyMTg0NjgzNDg0YjZm
OTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDEzIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGlu
dm9rZSBjYWxsJmFwcGx5Jyk7CisKK3ZhciBkID0geworICB4IDogImZvbyIsCisgIHkgOiBmdW5j
dGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmFy
IiB9OworCitzaG91bGRCZSgnZC55KCkuY2FsbChlKScsICInZm9vJyIpOworc2hvdWxkQmUoJ2Qu
eSgpLmFwcGx5KGUpJywgIidmb28nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
Y29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWZhZDA3Njg0N2JmZjQ5MjlmNzgwNzc2NWY5
OTBiNzM3M2NkZjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw3IEBACitkZXNjcmlw
dGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcicpOworCit2
YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitzaG91bGRUaHJvdygnbmV3IHNp
bXBsZUFycm93RnVuY3Rpb24oKScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1NmExNTUzMGYzNGNjMzA4
YWNlNmIwZmFhNGNmZTdjMWU5NzhjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzCkBAIC0wLDAg
KzEsNjcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGxleGlj
YWwgYmluZCBvZiB0aGlzJyk7CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9
IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlz
LmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOworICB0aGlz
LmdldE5hbWVOZXN0aW5nID0gKCkgPT4gKCkgPT4gKCkgPT4gdGhpcy5uYW1lOworfQorCit2YXIg
ZCA9IG5ldyBEb2coIk1heCIpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZSgpJywgJ2QubmFtZScpOwor
c2hvdWxkQmUoJ2QuZ2V0TmFtZUhhcmQoKScsICdkLm5hbWUnKTsKK3Nob3VsZEJlKCdkLmdldE5h
bWVOZXN0aW5nKCkoKSgpJywgJ2QubmFtZScpOworCit2YXIgb2JqID0geworICBuYW1lICAgOiAn
b2JqQ29kZScsCisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKHZhbHVlKSA9
PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOworICB9Cit9OworCitzaG91bGRCZSgib2Jq
Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ29iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworb2JqLm5h
bWU9J25ld09iakNvZGUnOworc2hvdWxkQmUoIm9iai5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidu
ZXdPYmpDb2RlLW5hbWUtY29ycmVjdCciKTsKKwordmFyIGRlZXBPYmogPSB7CisgIG5hbWUgOiAn
d3JvbmdPYmpDb2RlJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFs
T2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhp
cy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9Oworc2hvdWxkQmUoImRlZXBPYmou
aW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInaW50ZXJuYWxPYmplY3QtbmFt
ZS1jb3JyZWN0JyIpOworCitkZWVwT2JqLmludGVybmFsT2JqZWN0Lm5hbWUgPSAnbmV3SW50ZXJu
YWxPYmplY3QnOworCitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgn
Y29ycmVjdCcpIiwgIiduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK3ZhciBm
dW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0
aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKwor
c2hvdWxkQmUoImluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2UiLCAidHJ1ZSIpOworCit2YXIg
b3duZXJPYmogPSB7CisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4g
dGhpczsKKyAgfQorfTsKKworc2hvdWxkQmUoIm93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVy
T2JqIiwgInRydWUiKTsKKwordmFyIGZha2UgPSB7IHN0ZWFsIDogb3duZXJPYmoubWV0aG9kKCkg
fTsKK3Nob3VsZEJlKCJmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFy
IHJlYWwgPSB7IGJvcnJvdyA6IG93bmVyT2JqLm1ldGhvZCB9Oworc2hvdWxkQmUoInJlYWwuYm9y
cm93KCkoKSA9PT0gcmVhbCIsICJ0cnVlIik7CisKK3ZhciBhcnJvd0Z1bmN0aW9uID0geyB4IDog
InJpZ2h0IiwgZ2V0QXJyb3dGdW5jdGlvbiA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlz
LnggKyB6OyB9fS5nZXRBcnJvd0Z1bmN0aW9uKCk7Cit2YXIgaG9zdE9iaiA9IHsgeCA6ICJ3cm9u
ZyIsIGZ1bmMgOiBhcnJvd0Z1bmN0aW9uIH07CisKK3Nob3VsZEJlKCJhcnJvd0Z1bmN0aW9uKCct
dGhpcycpIiwgJyJyaWdodC10aGlzIicpOworc2hvdWxkQmUoImhvc3RPYmouZnVuYygnLXRoaXMn
KSIsICcicmlnaHQtdGhpcyInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTc5OTMxYzNkZWJjYjUwMjdhZDE0ZmQxNTQ3ZTVhYmEwMzhiNGIxMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyBJbnNwaXJlZCBieSBtb3ppbGxhIHRl
c3RzCitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBpbnN0YW5jZW9m
IGFuZCB0eXBlb2Ygb3BlcmF0b3JzJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkg
PT4ge307CisKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5j
dGlvbikiLCAiRnVuY3Rpb24ucHJvdG90eXBlIik7CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5j
dGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRydWUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJv
d0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIiwgInRydWUiKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFmNThmYzY1MTNlZGFiZGUxZGQ2NTA3
NDk2YWU4NjRiNjExZmZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNjcmlwdGlv
bignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRkeicpOworCit2YXIgQSA9IGNs
YXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFj
Y2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsK
KyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsK
KyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgaXNSZWZlcmVuY2VFcnJvciA9
IGZhbHNlOwordHJ5IHsKKyAgICAgbmV3IEIodHJ1ZSk7Cit9IGNhdGNoIChlKSB7CisgICAgaXNS
ZWZlcmVuY2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKK30KKworc2hvdWxk
QmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOworCit2YXIgZSA9IG5ldyBCKGZhbHNlKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJhYTI2
OTBmZGE4MmM2YTMyOGVhMGFiYzM1NWQyZDhiZTNkNDhkNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCww
ICsxLDEyIEBACit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIgYWYyID0gKGEpID0+IHthICsgMX07
CisKK3Nob3VsZEJlKCJ0eXBlb2YgYWYxID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hv
dWxkQmUoInR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgi
dHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5
cGVvZiAoKGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259127</attachid>
            <date>2015-08-16 11:45:12 -0700</date>
            <delta_ts>2015-08-16 12:30:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150816214450.patch</filename>
            <type>text/plain</type>
            <size>178028</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uZmRjNDQ2ZjhhNzhiNzQxN2M1YTEzMzJhZmIz
NzU0NDU3YmM4ZGQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25B
cmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVu
dHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVj
bCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAg
ICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2
YWx1ZXMgaW50byB0aGUKQEAgLTk1NSw2ICs5NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxpZiBD
UFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OSw2ICs5OTksMTMgQEAgcHVibGljOgogICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGVXKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQor
ICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAgIG1vdmUoYXJnMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIFRydXN0ZWRJbW0zMiwgRlBSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBtb3Zl
RG91YmxlKGFyZzQsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CkBAIC0xMjEzLDYgKzEyMjAsMTMg
QEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMykK
KyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOworICAgICAgICBtb3ZlKGFyZzIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogI2VuZGlmCiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAwMzhmNWQ3ZGJj
MDZhZjgxMGY3MWE3ZDQyNDBkN2ZmMmViYTQwZWI0Li5iYmM4NTIzZjViYjIzYTM5MzBjMDk0ZWQ0
ODYyMTc0NjRkODZjNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTksNiAr
MjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZW50ZXIpCiAgICAgICAgIERFRklO
RV9PUChvcF9nZXRfc2NvcGUpCisgICAgICAgIERFRklORV9PUChvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZXFfbnVsbCkKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CkBAIC0yNTks
NiArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9wX25ld19m
dW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVf
T1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmpl
Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAgICAgICBERUZJTkVfT1Ao
b3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODQxMWE3ZWY2NWE5YzZiZGNjMTZi
MzY0ZWIyOGU0MTAxNmI1ODU4Ni4uNzcxZmQ5YjQwNjViZGQxNzIyYzBlNzJiODg3MjA4ZWM2MmYx
ZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTgsNiArNDk4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xvYWRfYXJy
b3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcShJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKik7CkBAIC01Mzks
NiArNTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJy
YXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpAQCAtNjUzLDYgKzY1NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBp
c1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7
CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGludCBzY29w
ZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwogICAgICAg
ICB2b2lkIGVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludCBzY29wZSwgU3RydWN0dXJlKiog
c3RydWN0dXJlU2xvdCk7CkBAIC03MjMsNiArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpK
QnksIGludCwgR1BSUmVnLCBHUFJSZWcsIEJ5VmFsSW5mbyopOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2MsIEdQUlJlZyk7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpzY0MsIGludCwgR1BSUmVnLCBKU0NlbGwqKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0osIGludCwgR1BSUmVnLCBKU0Nl
bGwqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VKc2NaLCBHUFJSZWcsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBpbnQsIEdQ
UlJlZywgaW50MzJfdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKaW5kZXggNWQ2ODY5MDA4MWM5OTZkN2UzM2JmM2JkMjVkY2M1OGIwMzBm
N2Q2Yy4uZmJhYjJjYzBmMzk3MjQ5NTZiZjU4NDkxYjNkZTc4M2E2ZmNkYzIzNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI3MSw2ICsyNzEsMTIgQEAgQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpzY0Mgb3BlcmEKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNj
Q0ogb3BlcmF0aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBHUFJSZWcg
YXJnMikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZElt
bVB0cihjZWxsKSwgYXJnMik7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKK30KKyAgICAKIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VQIG9wZXJhdGlvbiwgaW50IGRzdCwgdm9pZCogcG9pbnRlcikKIHsKICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1OThkNGVjOTljMWQxOGU2YzM5NjIxMTk3
MjBhY2VhYzFlZTJmYTZkLi5jODNiY2M4YzQ1ZGU2NjZmNzNjOWU5MTFmNTE0MjlmMzVlYjExMzQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCkBAIC02NzMsNiArNjc0LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMCk7CiAg
ICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29w
X2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUMCk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1Zh
bHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewpAQCAtOTYyLDI2ICs5NzEsNDUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNf
ZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAgZW1pdE5ld0Z1bmNF
eHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisgICAgCit2b2lkIEpJVDo6ZW1pdE5l
d0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVu
dEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBvcGNv
ZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgCiAgICAgSnVtcCBub3RVbmRlZmlu
ZWRTY29wZTsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24p
CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJhbmNoNjQoTm90RXF1
YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7
CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
KSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwog
I2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRMb2FkUGF5
bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5k
ZWZpbmVkU2NvcGUgPSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSk7CiAg
ICAgZW1pdFN0b3JlKGRzdCwganNVbmRlZmluZWQoKSk7CiAjZW5kaWYKLQogICAgIEp1bXAgZG9u
ZSA9IGp1bXAoKTsKICAgICBub3RVbmRlZmluZWRTY29wZS5saW5rKHRoaXMpOwotCi0gICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhwciA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4cHIpOworICAgICAgICAKKyAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVn
VDAsIGZ1bmN0aW9uLCByZWdUMSk7CisgICAgZWxzZQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAgICAgZG9uZS5saW5r
KHRoaXMpOwogfQotCisgICAgCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJD
b21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKIHZvaWQgSklUOjplbWl0X29wX25l
d19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDkxYzAwZTNmZDQ1ZTA5N2UzYmIxYzM3
OWQ3YzkwM2YwZmQ2MjA5OWEuLmIzOWFlMWQxYTMwNjgwMzQzZTlmZDlhNzIzMTQyOWI2ZTU0NDEw
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC05MjIsNiArOTIzLDE0IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2xvYWRf
YXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdl
dEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUMCk7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkp
LCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30KKwogdm9pZCBKSVQ6
OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGI1ZjllMzY5YTdl
NTdiYWZmMDQ2ZDJhMzY1ZGJjMDI0Y2RjZGI5M2IuLjRmZjBlM2QxNTBiNDI2MGVmOTRiMjFlM2Ni
YTBmMjMxMmZiNDM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC05NDIsNiArOTQzLDMwIEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpj
cmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQoreworICAgIEFTU0VS
VChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygp
KSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAg
ICAgICAgCisgICAgSlNBcnJvd0Z1bmN0aW9uKiBhcnJvd0Z1bmN0aW9uICA9IGlzSW52YWxpZGF0
ZWQKKyAgICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSkKKyAgICAgICAgOiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICAKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycm93RnVuY3Rpb24pOworfQorICAgIAorRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQorewor
ICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rp
b25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOworfQorCiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDNkODNmNTkwZGNmOTE4
MDNhMzQ0OGJhMDgzYjJmOTJiY2JlODRmOWIuLmE2N2NhYWNiMzJmYjIxNThhOWMwNWU2YTUwOTYy
MWIzYjgzZThlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CkBAIC0xMjIsNiArMTIyLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
ICgqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm8KIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQUykoRXhlY1N0YXRl
Kiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQykoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0NKKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNTKShFeGVjU3RhdGUqLCBzaXplX3QsIHNpemVfdCk7
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9F
U3NpQ0kpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgVW5pcXVlZFN0
cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklU
T3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKQEAgLTI4OCw2ICsyODksOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyV2l0aFByb2ZpbGUo
RXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZv
aWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlV2F0
Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDJkNDY3
N2M2NjU1N2JiY2M1ZTRkMTA5ZWY5YjAxMzhkOWE4M2YxZWMuLmEyYTZiMmIxMWM1NjgxZTBiNmU5
NzBjNGZkMTFjOTZlMTlkYjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NlbGwu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiVk0uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDU1YjgxZWUwZjc4
ZmE3YWQ5YTIwZGNkNDc2ODEyYjQxZjU2ODVkN2YuLjJjZDlmNmViOGQ2ODM4Njg3MDk3YzRlY2Nl
NzkyMTU5MTUxMDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUg
IkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE3MSw3
ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgRXhl
Y1N0YXRlKiBfX3JjZl9leGVjID0gKGV4ZWNDYWxsZWUpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgX19yY2ZfZXhlYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKLQorICAgIAogZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAg
ICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwMTMsMTIgKzEwMTQsMjQgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOworICAgIAogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNTY29wZSogc2NvcGUgPSBl
eGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBj
WzNdLnUub3BlcmFuZCk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZnVuY3Rpb24sIHNjb3BlKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwogICAgIAotICAg
IExMSU5UX1JFVFVSTihmdW5jKTsKKyAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoNCkuanNWYWx1ZSgpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBl
eGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIo
cGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNBcnJvd0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCB0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKQEAgLTEwOTYsNyArMTEwOSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0
VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlCiAgICAg
SlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgVk0mIHZtID0g
KnNjb3BlLT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5l
eGVjdXRhYmxlKCk7Ci0gICAgCisKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9z
dEZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCmluZGV4IDhjYzY5YTk2MDBiYmY5ZDg1MzM5ZDYwOTU5NWY2N2M2OGQwNzY3MWIuLjNmMWRh
YTgxMmI3MDJlMjNjNmFhZWY5ZmQ3YzA2NzFlZTIwMjVjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05Nyw2ICs5Nyw3IEBAIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY29uc3RydWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
c2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzkxMDYxN2VkODM0Yjc0YzlmMmY4
ZWU0YjI2ODdjOGI5Y2ZlM2M3Yy4uNzNmYzU4ODQ0MmRkYzRiOWNmYTdiODhmMDA0Y2E4NjczZTQ5
OWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQpAQCAtMTE4Myw2ICsxMTgzLDEwIEBAIF9sbGludF9vcF9uZXdfZnVuY19l
eHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAg
IGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJvd19m
dW5jX2V4cCkKKyAgICBkaXNwYXRjaCg1KQogCiBfbGxpbnRfb3BfY2FsbDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGU5MGVjZWRmYTczMDk4MmZlZWY3MWVlYjBj
ZWE2NDM4MjM0YTY5MWMuLjdlZjZiODdjMTcwYWQwODNiMWY1MjlkYTg4MzZjMDBjZGE2NGI0Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMzczLDMgKzIzNzMsMTIgQEAgX2xsaW50X29wX3Byb2Zp
bGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisKK19sbGlu
dF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIEpTQXJyb3dG
dW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigx
LCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ5NDU1Zjc1YzdiNjY0MmZiOGM4
NzIzZmMxNTJhMzc5MDkxMDNiNWIuLmQyMTUyYTJmMjc3YWRlNTg3OTc2YTFjM2YxMjAyMzcyOWIz
OGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0yMjI2LDMgKzIyMjYsMTEgQEAgX2xsaW50X29wX3Byb2Zp
bGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisKK19sbGlu
dF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCisgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5k
VGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3Jl
cSB0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDdi
NTg3NzMwYTZmMDM1NDQwZGI5MGQ5YzQyNjgwYWQ1NzhiOTRhNjcuLjgwNmRiNTIzMDNkNWFkM2E3
MTg4MTI5Zjg4YmQ3NjRjNmI1MGVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCkBAIC0zNjEsMTkgKzM2MSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5h
bWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAotICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUpCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9k
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJl
bmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAK
ICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQs
IGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbik7
CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxB
U1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKKyAgICAgICAgdXNlc1RoaXMoKTsKICAg
ICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVu
Y3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbklu
Zm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLQotICAgICAgICBG
dW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxv
Y2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwor
ICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBB
cnJvd0Z1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1lLCBmdW5jdGlvbklu
Zm8uYm9keSwgc291cmNlKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5j
dGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRP
ZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3Rv
cnMuaAppbmRleCBhYmI3MmE3NGUxMjg4NDhlYThiNDNmZDg2MzY5NzRjYjk5N2MzN2RiLi5iZGMx
YmVlNzc4NDQ4NzJhYTYyNGQ0NDNiY2JhMTk2OTNhZGJkMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtODkwLDEzICs4OTAsMTkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jRXhwck5v
ZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAKKyAgICBpbmxpbmUgQmFzZUZ1bmNFeHByTm9kZTo6
QmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCiAgICAgewogICAgICAgICBtX21ldGFk
YXRhLT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lvbik7CiAg
ICAgfQogCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAg
ICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2Up
CisgICAgeworICAgIH0KKwogICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRh
dGEobV9tZXRhZGF0YSkKQEAgLTkwNCw2ICs5MTAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25EZWNs
YXJhdGlvbik7CiAgICAgfQogCisgICAgaW5saW5lIEFycm93RnVuY0V4cHJOb2RlOjpBcnJvd0Z1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBpZGVu
dCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAgICB9CisKICNpZiBFTkFCTEUoRVM2X0NM
QVNTX1NZTlRBWCkKICAgICBpbmxpbmUgQ2xhc3NEZWNsTm9kZTo6Q2xhc3NEZWNsTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY2xhc3NEZWNsYXJh
dGlvbikKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjZjRmZTQ1MGE5MjQ5NTA0ZjMwYmE4NWEyNjRlNjdi
YWE5YTU1Yzk2Li4xOGY4NDU1MzMwNWM0YTBjMjFjNzMzODgzOWMyOWYyM2M3NGRlOTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICBQYXJzZXJBcmVu
YSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVk
IGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAot
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAg
ICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRD
b2x1bW4pCkBAIC0xNjMsNiArMTYzLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9u
TWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9p
c0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVj
dG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKKyAgICAgICAg
LCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fY29u
c3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAxZDZiMDNkNzc2NjI5N2Fl
MTc1OTNiYmE5YWVjNTYwOTMyOTMwYzJkLi44NzM2NjhlYzM3YjQyN2I5MjA2NDlkZTMwNjgzODFl
MmNkOGExNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjUsNiAr
MTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vz
c29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAg
ICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0xODA5LDcgKzE4MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgICAg
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3Vy
Y2VQYXJzZU1vZGUpOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291
cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbik7CiAKICAgICAgICAgdm9pZCBmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
b2RlKTsKICAgICAgICAgCkBAIC0xODM1LDYgKzE4MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRP
ZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1
Y3RvcktpbmQpOyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBm
aXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3Rh
cnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4NjAsNiArMTg2Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVk
IG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9y
S2luZCA6IDI7CisgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICB9
OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CkBA
IC0xODg5LDE4ICsxODkyLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBt
X2VuZENvbHVtbjsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBCYXNlRnVuY0V4cHJOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBj
b25zdCBTb3VyY2VDb2RlJik7CisgICAgICAgIEJhc2VGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29u
c3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0
YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7CisgICAgfTsKKworCisgICAgY2xhc3MgRnVu
Y0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
fTsKIAotICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICBjbGFz
cyBBcnJvd0Z1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNlRnVuY0V4cHJOb2RlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUm
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKworICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYWVlNzBiNmE3MzI5YmMx
MWI1Y2U3M2Q1MzUyZDMxM2UyMmEyN2JlMS4uZjUwODE0ZTdiMTQyYWI1MzAwZDg0YTRiNzAxOWY5
Yzk4NGUyYjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
MTU0NiwxMSArMTU0NiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5j
dGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGludCBz
dGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogeworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBib2R5VHlw
ZTsKICAgICBpZiAoYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB8fCBib2R5
VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291
bnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwg
cGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTYy
LDcgKzE1NjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJv
ZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIGVsc2UKICAgICAgICAg
ZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0
cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5v
dCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRo
aXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVt
bigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOworICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5M
b2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiB9
CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VN
b2RlIG1vZGUpCkBAIC0xNzM3LDcgKzE3MzgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAog
ICAgIH0KICAgICAKICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yS2lu
ZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0KKyAgICAKICAgICBmdW5jdGlvbkluZm8uYm9k
eVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8gSWYgd2Uga25vdyBhYm91
dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBz
a2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCkBAIC0xNzU2LDExICsx
NzU3LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgICAgICBlbmRMb2NhdGlv
bi5zdGFydE9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldCA6CiAgICAgICAg
ICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9s
b2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uID0gcGFyc2VUeXBlID09IEFycm93RnVuY3Rpb25QYXJzZVR5cGU7CisgICAgICAg
IAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbklu
Zm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAg
ICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5m
by0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0
TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwg
aXNBcnJvd0Z1bmN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3Rv
cmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9wU2NvcGUo
ZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0x
Nzc0LDcgKzE3NzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICBtX2xleGVy
LT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVuY3Rp
b25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0gICAg
ICAgIGlmIChwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkKKyAgICAgICAgaWYg
KGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJ
bmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
IDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVu
Y3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDA3NjBjMTllYjE2MzZkYjIx
YTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcuLmRjNTYxZjliMWE2ZGEzNjQzYjgyNzJmZTdiMTJlMjE1
ZTQ0ZjQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVh
dGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4
cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3Qp
IHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBj
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3Vs
dDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50
LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0
dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQg
c2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVu
dHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGFiMTY3MjExNjgxOTRjMWE2MDI4OWViODU2
ZTk4YzBjZmExN2I3OS4uOWRjNjk0ZjI3YTQ1ODczYjJhMjE2N2EzNjk2MzVkM2U1OTQ1YWJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTIz
Niw4ICsyMzYsNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2Rl
QmxvY2tGb3IoCiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGdsb2JhbE9iamVjdC0+
aGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKICAgICBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNQcm9maWxlcigpID8gUHJvZmlsZXJP
biA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2Vk
Q29kZUJsb2NrID0KLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNv
ZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQs
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgZXhlY3V0YWJsZS0+bV91
bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcigqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNl
LCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIGV4ZWN1dGFibGUtPmlz
QXJyb3dGdW5jdGlvbigpKTsKICAgICByZWNvcmRQYXJzZShleGVjdXRhYmxlLT5tX3VubGlua2Vk
RXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUt
Pmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydENv
bHVtbigpLCBlbmRDb2x1bW4oKSk7IAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKICAg
ICAgICAgZXhjZXB0aW9uID0gdm0tPnRocm93RXhjZXB0aW9uKApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGJjZTI0MjhjYmMxMDFkZGE2Y2IxMDFkNzBi
ZjAyN2Y3ZTBlYTNkZjAuLmNmMmJkZTg4YzVhNmU5MTY3NjAzNmVlMjdkNzQ0Zjc2NDUzOWNjNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ3NCw3
ICs0NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCks
IHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVy
biBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9j
ay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUzMCw3ICs1MzAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MzMs
NiArNjMzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlz
QnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0
eSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25z
dHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlz
Q2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElk
ZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5p
bmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyb3dGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxYzI2MGUxNmEyMGUyYjg0MDlhZWJiOWEy
ZTU5ZGI5YjNkZjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBKU0Fycm93RnVuY3Rpb246OnNfaW5mbyA9IHsgIkFycm93RnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXJyb3dGdW5jdGlv
bikgfTsKKwordm9pZCBKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQorewor
ICAgIHN0YXRpY19jYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpLT5KU0Fycm93RnVuY3Rpb246
On5KU0Fycm93RnVuY3Rpb24oKTsKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEpTQXJyb3dGdW5jdGlvbiogcmVz
dWx0ID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7CisgICAg
ZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIHJlc3VsdCwg
IkFsbG9jYXRpbmcgYW4gYXJyb3cgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitKU0Fycm93RnVuY3Rpb246OkpTQXJyb3dGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQorICAg
IDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXJy
b3dGdW5jdGlvblN0cnVjdHVyZSgpKQorICAgICwgbV9ib3VuZFRoaXModm0sIHRoaXMsIGJvdW5k
VGhpcykKK3sKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKK3sK
KyAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+aGFzQmVlbkludmFs
aWRhdGVkKCkpOworICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBib3Vu
ZFRoaXMpOworfQorCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXJyb3dGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2JvdW5kVGhpcyk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNBcnJvd0Z1bmN0aW9uOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQoreworICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNTZm
NjhlZmVlZGQ4MjMxYTM1YjJmYzI0OWZkODFhYzk3ZjViMjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaApAQCAtMCwwICsx
LDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3Nr
YWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNBcnJvd0Z1bmN0aW9uX2gKKyNkZWZpbmUgSlNBcnJvd0Z1bmN0aW9u
X2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKyAgICAK
K2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQg
Y2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNw
ZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlm
CisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBC
YXNlOworCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rp
b24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxp
bmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0Fy
cm93RnVuY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBj
cmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3Bl
KiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgeworICAgICAgICBKU0Fycm93RnVuY3Rp
b24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJvd0Z1bmN0aW9u
Pih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRU
aGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0
KCkpOworICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gZnVuY3Rpb247CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworCisgICAgSlNWYWx1ZSBib3Vu
ZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQorICAgIAorICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNG
dW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAgCisgICAg
c3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZUaGlzVmFsdWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Fycm93RnVuY3Rpb24sIG1fYm91bmRUaGlzKTsK
KyAgICB9CisgICAgCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIAorcHJpdmF0ZToKKyAg
ICBKU0Fycm93RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNW
YWx1ZSk7CisgICAgCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7Cit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Fycm93RnVuY3Rpb25faApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDBiODdkNzVjOTE0NTBjNWFm
MWFhZWQyN2E2MWE3NDhlZjgwZjA5M2UuLjkyODM1MGUyNDc4YzQ1ZjdiZjdlOGFhODRjOWVjM2E0
ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgK
QEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAg
SlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBKU0Z1
bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwog
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVz
LmgKaW5kZXggZjZjNmQ1OGVjNmU1YzExNjRjYjI3ZmE1ZTQxNjE4YjRiODE0MmYwMi4uZjA1OTU4
NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNiNjQ0YTg4NDQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC00NCw2ICs0NCwxMyBA
QCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgICwgbV9yYXJlRGF0YSgpCiB7CiB9CisgICAg
CitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhp
cywgZXhlY3V0YWJsZSkKKyAgICAsIG1fcmFyZURhdGEoKQoreworfQogCiBpbmxpbmUgRnVuY3Rp
b25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGNl
ZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAwNDQxN2MyMjlhZDA0MjMuLmRhMWFjMjVhYWIwMDg2MmNk
NTM3MzBmOWE1YWQxMjVhMmRjMGZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJK
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjU5LDYgKzI2
MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIGV4ZWMtPnNldENh
bGxlZShtX2dsb2JhbENhbGxlZS5nZXQoKSk7CiAKICAgICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBtX2Z1bmN0
aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsKICAgICBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTc5
NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Ym91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJi
MjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMwNTVlOWJhZTMwYmI3M2ZkOTAxNWJjMDAzODM2M2M2NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0yMzIsNiArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fY2FsbGVlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1
Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKQEAgLTQ2Miw2ICs0
NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxsZWVTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBhcnJvd0Z1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgUHJvcGVydHlP
ZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVP
ZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQt
ZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlM2E2NmVhOTJmMDMwZGIz
Nzc5YTRjM2U0MDJlN2MxMThkMWQ4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhp
dC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpAQCAtMCwwICsxLDQ2IEBACisidXNlIHN0cmlj
dCI7CisKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gc2hvdWxkVGhyb3dURFooZnVuYykg
eworICAgIHZhciBoYXNUaHJvd24gPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7
CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmIChlLm5hbWUuaW5kZXhPZigiUmVmZXJlbmNl
RXJyb3IiKSAhPT0gLTEpCisgICAgICAgICAgICBoYXNUaHJvd24gPSB0cnVlOworICAgIH0KKyAg
ICBpZiAoIWhhc1Rocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWQgbm90IHRocm93
IFREWiBlcnJvciIpOworfQorCitmdW5jdGlvbiBiYXIoZikgeyB9CisKK2Z1bmN0aW9uIGZvbyhi
KSB7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICAoeCkgPT4geyByZXN1bHQg
PSB4OyByZXR1cm4gdGR6UGVycGV0cmF0b3I7IH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JF
eGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAg
ICAgIHJldHVybiB0ZHpQZXJwZXRyYXRvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgdGR6
UGVycGV0cmF0b3I7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25v
SW5saW5lKGZvbyk7Citub0lubGluZShzaG91bGRUaHJvd1REWik7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIGJvb2wgPSAhKGkgJSAxMDApOworICAgIGlmIChib29s
KQorICAgICAgICBzaG91bGRUaHJvd1REWigoKT0+IHsgZm9vKGJvb2wpOyB9KTsKKyAgICBlbHNl
IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhib29sKTsKKyAgICAgICAgaWYgKHJlc3VsdCAh
PSAwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRp
b24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQxYmJlMTQwMjQx
NGRiMjZjNmI3ZmQ0MDFmYjBlOWM2NWE0YmE3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmst
b3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuID0gMTAwMDAw
MDsKKworZnVuY3Rpb24gYmFyKHNldCkgeworICAgIHZhciByZXN1bHQgPSBzZXQoMCk7CisgICAg
aWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTog
IiArIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsK
KyAgICB2YXIgaW1VbmRlZmluZWQ7CisgICAgdmFyIGJhejsKKyAgICB2YXIgc2V0ID0gICh4KSA9
PiB7CisgICAgICAgIHJlc3VsdCA9IHg7CisgICAgICAgIGlmIChiYXogIT09IDUwKQorICAgICAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBiYXo7CisgICAgICAgIHJldHVybiBp
bVVuZGVmaW5lZDsKKyAgICB9OworICAgIGJheiA9IDUwOworICAgIGlmIChiKSB7CisgICAgICAg
IE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Citub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBu
OyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1
bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlNDM3YWY3YjJjMmFkMzQ1ZTI2YzIwMzc3ODkwZGY1ZjMxZmFmMDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIG4g
PSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsgcmVzdWx0ID0geDsgfQor
ICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAg
ICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAl
IDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzZhNzllYzllYWE2NWM1NDE5MzBiOTA0ODI2ZTdhMjNhMTNmYjJlYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIG4gPSAx
MDAwMDAwMDsKKworZnVuY3Rpb24gYmFyKGYpIHsgZigxMCk7IH0KKworZnVuY3Rpb24gZm9vKGIp
IHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0geCA9PiB7IHJlc3VsdCA9IHg7
IH0KKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCAh
PSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkOiAiICsgcmVzdWx0OworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFy
KTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAg
dmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ib3VuZC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ib3Vu
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MjAzMjA4OGFiZjI2ZGFlMmFlNzFhMmFjNGMwNWQ0ZjA3NzU1ZTQw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWJvdW5kLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGQgPSB7Cisg
IHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLnggKyB6OyB9
Cit9OworCitub0lubGluZShkLnkpOworCit2YXIgZSA9IHsgeCA6ICJiYXoiIH07CisKK2ZvciAo
dmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQueSgpLmJpbmQoZSwgImxleSIp
KCksICJiYXJsZXkiLCAiRXJyb3I6IGZ1bmN0aW9uIGJpbmQgc2hvdWxkbid0IGNoYW5nZSBsZXhp
Y2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4NzdlMGFkOWM4M2FjNTNhN2Y2ZDM1MTk2MjMyMTRjMWU5ZmM2MGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAo
YWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkg
eworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1
dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBkID0geworICB4IDogImZv
byIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKK25vSW5s
aW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJhciIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEw
MDAwO2krKyl7CisgICAgdGVzdENhc2UoZC55KCkuY2FsbChlKSwgImZvbyIsICJFcnJvcjogZnVu
Y3Rpb24gY2FsbCBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24iKTsKKyAgICB0ZXN0Q2FzZShkLnkoKS5hcHBseShlKSwgImZvbyIsICJFcnJv
cjogZnVuY3Rpb24gYXBwbHkgc2hvdWxuJ3QgY2hhbmdlIHRoZSBsZXhpY2FsIGJpbmRpbmcgb2Yg
dGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTViZWI1NTdkNzk0OWJjNmIyYzc4YWI0NjU5ZWE4YzJhYzYzZGU2MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDIyIEBACit2YXIgdGVzdENhc2UgPSBmdW5j
dGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsg
IicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBzaW1wbGVBcnJv
d0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93RnVuY3Rpb24pOwor
Cit2YXIgZXJyb3JPbkNyZWF0ZSA9IGZhbHNlOworCitmb3IgKGk9MDtpPDEwMDAwO2krKykgewor
ICAgdHJ5IHsKKyAgICAgICB2YXIgZmMgPSBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpOworICAg
fQorICAgY2F0Y2ggKGUpIHsKKyAgICAgZXJyb3JPbkNyZWF0ZSA9IHRydWU7CisgICB9CisKKyAg
ICB0ZXN0Q2FzZShlcnJvck9uQ3JlYXRlLCB0cnVlLCAiRXJyb3I6IE5vIGV4Y2VwdGlvbiBkdXJp
bmcgcnVuIG5ldyBBcnJvd0Z1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZmFiMjRjOTFiYzU3Yzk1ODc2MzJkZmVj
OWE0YzkzNzk4ZTIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwpAQCAtMCww
ICsxLDE5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVz
c2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2Ug
KyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAi
JyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5hbWU7
CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlzLmdldE5h
bWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOworfQorCitub0lubGlu
ZShEb2cpCisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdmFyIGQgPSBuZXcgRG9n
KCJNYXgiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsK
KyAgdGVzdENhc2UoZC5nZXROYW1lSGFyZCgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3Qg
bGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEx
N2RiMzAzY2RmZTNkMTVkYTQ1YzgxNjRlNDhkMDNhNjdlYjkyYTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtMi5qcwpAQCAtMCwwICsxLDM5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlv
biAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIics
IGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBmdW5jdGlvbkNvbnN0
cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOworfTsKKwor
dmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKwordGVzdENhc2UoaW5z
dGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKwordmFyIG9i
aiA9IHsKKyAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHRoaXM7Cisg
IH0KK307CisKK25vSW5saW5lKG9iai5tZXRob2QpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCkgPT09IG9iaiwgdHJ1ZSwgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzMiKTsKK30KKwordmFyIGZha2UgPSB7c3RlYWw6IG9iai5tZXRob2QoKX07Citub0lu
bGluZShmYWtlLnN0ZWFsKTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykgeworICAg
IHRlc3RDYXNlKGZha2Uuc3RlYWwoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQor
Cit2YXIgcmVhbCA9IHtib3Jyb3c6IG9iai5tZXRob2R9Oworbm9JbmxpbmUocmVhbC5ib3Jyb3cp
OworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UocmVhbC5i
b3Jyb3coKSgpID09PSByZWFsLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDE5MDg2ZDU4NDc5
YzRiZDRmZTBmNTI3YjNhN2JiODkzOWMwOTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LTMuanMKQEAgLTAsMCArMSwyOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwg
ZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0
aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICci
ICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7IG5hbWU6J29iaicsIG1l
dGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUt
IiArIHZhbHVlOyB9fTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENh
c2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdvYmotbmFtZS10ZXN0JyAr
IGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lk
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAw
OyBpKyspIHsKKyAgdmFyIHJlc3VsdDEgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmlu
ZygpKTsKKyAgdGVzdENhc2UocmVzdWx0MSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygp
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMSIpOworfQorCitvYmoubmFtZT0nbmV3T2JqJzsKKworZm9yICh2YXIgaT0w
OyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9T
dHJpbmcoKSksICduZXdPYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlz
IGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUi
KTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDIgPSBv
YmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0Miwg
J25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxl
eGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWJk
MzYzZTRlNDZiMDJkMmYxOWJiZTM4NTAyZjUyODIzM2E5ZjEzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLTQuanMKQEAgLTAsMCArMSwyNiBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24g
KGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
IHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBi
dXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIG5h
bWU6J29iaicsCisgIGludGVybmFsT2JqZWN0OiB7CisgICAgbmFtZSAgOidpbnRlcm5hbE9iamVj
dCcsCisgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFt
ZSArICItbmFtZS0iICsgdmFsdWU7IH0KKyAgfQorfTsKKworbm9JbmxpbmUob2JqLmludGVybmFs
T2JqZWN0Lm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVz
dENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSks
ICdpbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIp
OworfQorCitvYmouaW50ZXJuYWxPYmplY3QubmFtZT0nbmV3SW50ZXJuYWxPYmplY3QnOworCitm
b3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKG9iai5pbnRlcm5hbE9i
amVjdC5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnbmV3SW50ZXJuYWxPYmplY3Qt
bmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkg
YmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy01LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc1NDk0Y2U2YjY2
ZGIwYTdlYjQzZGNjODNlYzFlYWNlNjI4NzU0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy01LmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBzb3J0ZWRWYWx1ZXM7CisKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworCit2YXIg
b2JqID0geworICBhcnI6IFsxLCA0LCA2LCAzLCA3LCAwXSwKKyAgYnViYmxlU29ydDogZnVuY3Rp
b24gKCkgeworICAgIHJldHVybiAoKSA9PiB7CisgICAgICB2YXIgdG1wOworICAgICAgdmFyIGFy
ID0gdGhpcy5hcnIuc2xpY2UoKTsKKyAgICAgIHZhciBfbGVuZ3RoID0gYXIubGVuZ3RoCisgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IF9sZW5ndGg7IGkrKykgeworICAgICAgICBmb3IgKHZhciBq
ID0gaTsgaiA+IDA7IGotLSkgeworICAgICAgICAgIGlmICgoYXJbal0gLSBhcltqIC0gMV0pIDwg
MCkgeworICAgICAgICAgICAgdG1wID0gYXJbal07CisgICAgICAgICAgICBhcltqXSA9IGFyW2og
LSAxXTsKKyAgICAgICAgICAgIGFyW2ogLSAxXSA9IHRtcDsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBhcjsKKyAgICB9CisgIH0KK307CisKK25vSW5saW5l
KG9iai5idWJibGVTb3J0KTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgICBv
YmouYXJyID0gWzEsIDIsIDQsIDYsIDMsIDcsIDBdOworICAgIHRlc3RDYXNlKG9iai5idWJibGVT
b3J0KCkoKS5sZW5ndGgsIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisKKyAgICB2YXIgc29ydGVkVmFsdWVz
ID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1swXSwgMCwg
IkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24gIzYiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbNl0sIDcsICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICM3Iik7CisKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDUsIDgsIDIxLCAxOSwgMF07CisK
KyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCkubGVuZ3RoLCA5LCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjOCIp
OworCisgICAgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNl
KHNvcnRlZFZhbHVlc1sxXSwgMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEyIik7CisgICAgdGVzdENhc2Uoc29ydGVk
VmFsdWVzWzhdLCAyMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lk
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEzIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMt
Ni5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy02LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTdiYzdjOGYxODA1MzU4YmRiYTg1
YjJjZWY2YTY5YjVmNDFlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5qcwpAQCAt
MCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5h
bWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+ICB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0TmFtZU5l
c3RpbmdMZXZlbDEgPSAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0TmFtZU5lc3Rp
bmdMZXZlbDIgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBkID0gbmV3
IERvZygiTWF4Iik7CisKK25vSW5saW5lKGQuZ2V0TmFtZSgpKTsKK25vSW5saW5lKGQuZ2V0TmFt
ZU5lc3RpbmdMZXZlbDEoKSgpKTsKK25vSW5saW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDIoKSgp
KCkpOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQuZ2V0TmFt
ZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUg
b2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5lc3RpbmdM
ZXZlbDEoKSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5l
c3RpbmdMZXZlbDIoKSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkg
YmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay1v
c3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTBhMzFkNjczMWFlNjk3NGQ2NjdlZDhkMjQ4NzBiNWQ1
MzFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay1vc3JleGl0Lmpz
CkBAIC0wLDAgKzEsMzQgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK3ZhciBuZXdDb250ZXh0ID0g
eworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5j
dGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4g
eworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAg
aWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAg
ICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24nOworICAgICAgcmVz
dWx0ID0geDsKKyAgICB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAg
ICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFy
KTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAg
dmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRleHQsICEoaSAlIDEwMCkpOworICAgIGlmIChy
ZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRp
b24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTQzMDYzN2M4NWJmOTQyMWFlOWM5N2UwZGQ3ZjZjZDEz
NWM0Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAs
MCArMSwzOCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRleHQgPSB7CisgIGlk
IDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKGYpIHsKKyAgICBpZiAodGhpcyA9
PSBuZXdDb250ZXh0KQorICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBuZXN0aW5nIGZ1
bmN0aW9uJzsKKyAgICBmKDEwKTsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVz
dWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsKKyAgICAgIHJlc3VsdCA9IHg7CisgICAg
ICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhp
cyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0
aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAgfTsKKworICAgIGlm
IChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAg
ICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9Jbmxp
bmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0
ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAw
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5n
LW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjllMDI3MTM5YzE2NjdlMTA2OWJh
YmQyOTVhNmQ3ZmMwYjllNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW5vLWRv
dWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM3IEBACit2YXIgbmV3Q29udGV4dCA9IHsKKyAg
aWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0gMzsgfQor
bm9JbmxpbmUoY2FsbCk7CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJz
dGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZh
ciBmID0gKCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29u
dGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRl
eHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24g
IzEnOworICAgIH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9yY2UgYWxs
b2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4JzogMiB9
OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kp
IHsKKyAgICB2YXIgbyA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7CisgICAg
aWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAy
IGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgYXJyb3cgZnVu
Y3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0
IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0g
c2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5r
aW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmZj
YjNmYTViMWU3N2ZiNjI4NjE4MGIzMzJhM2JlN2RlMjhmNjBlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
dGhpcy1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNiBAQAordmFyIG5ld0NvbnRleHQg
PSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkg
Y2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChw
LCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0
aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5p
ZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFy
cm93IGZ1bmN0aW9uICMxJzsKKyAgICAgIHJldHVybiB4OworICAgIH07CisgICAgaWYgKHApIHsg
aWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB7CisgICAgICAv
LyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAh
PSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJv
dyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMic7CisgICAgICByZXR1cm4geDsK
KyAgICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsv
LyBTdWJzdGl0dXRlIHRoaXMKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3Vs
dDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxl
ZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVy
bHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LHRy
dWUsIHRydWUpOy8vIFN1YnN0aXR1dGUgdGhpcwordmFyIHJlc3VsdCA9IGYoNDIpOworaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1N2VhMDc2MzVhNDEzMWNkMjMxMWQ0NTA3MzVmNTdjMWRkOTU4NjUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsNDUgQEAK
K3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKKy8vIFNob3Vs
ZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAor
ZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB7CisgICAgICAvLyBDaGVj
ayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdD
b250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3Jv
bmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisKKyAgICAgIHJldHVybiB4OworICAg
IH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0KKyAgICBy
ZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250
ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4
dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAj
Mic7CisKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3
Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Ly8gdXNlIGNhbGwgdG8gc3Vic3RpdHV0ZSBjb250ZXh0Cisg
ICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cg
IkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMg
cG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUg
RlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2Ug
YnJhbmNoCit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7Cit2YXIg
cmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8vIFRoaXMgc2hvdWxkbid0
IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3IgY29tcGxldGVseSBjcmFz
aAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAiICsgcmVzdWx0OworCisv
LyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhlIHByb3Bl
cnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIHRydWUp
OwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJF
cnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTRjZTBjNjU4ZDNhMmY3OTIyOWRmNGY4OTJjY2RhMTUxM2M5NGU1
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCArMSwxNyBAQAordmFyIHRlc3RDYXNlID0g
ZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3Rl
ZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIgc2ltcGxl
QXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitub0lubGluZShzaW1wbGVBcnJvd0Z1bmN0aW9u
KTsKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0ZXN0Q2FzZShPYmplY3QuZ2V0
UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiksIEZ1bmN0aW9uLnByb3RvdHlwZSwgIkVy
cm9yOiBOb3QgY29ycmVjdCBnZXRQcm90b3R5cGVPZiB2YWx1ZSBmb3IgYXJyb3cgZnVuY3Rpb24i
KTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9u
LCB0cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3VsdCBmb3IgaW5zdGFuY2VvZiBtZXRob2Qg
Zm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RDYXNlKHNpbXBsZUFycm93RnVuY3Rpb24u
Y29uc3RydWN0b3IgPT0gRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0
IGZvciBjb25zdHJ1Y3RvciBtZXRob2Qgb2YgYXJyb3cgZnVuY3RpbyAgIG4iKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1y
dW4tMTAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1ydW4tMTAtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ExZjBhNDljYjE2ODYzYzU5MjEzNjFmMGFk
YjFlMTRlYzliNjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCkBAIC0wLDAgKzEsMjQgQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFy
IGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7Cisg
ICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5u
YW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBp
ZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOwor
ICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMSksIHRydWUs
ICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gb25lIHRp
bWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVj
dXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZGRjZGIzYzcwYTFiMjdjM2RiYjUyMzgwOTU1ZjUzNTNkNzY3NDI1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVu
KGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsg
aSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUg
PSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7Owor
ICAgIH07CisKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChv
YmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAg
fQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwgdHJ1ZSwgIkVy
cm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIG9uZSB0aW1lIik7Cit0ZXN0
Q2FzZShydW4oMTApLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVu
Y3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZTVmNmJjODZiZDMxNDUxYjAxY2EyN2QwYjk3MjBiNTdlOGQ2MDUxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1
bi0xMDAwMC0xLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7
CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7Cisg
ICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOwor
ICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIg
b2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXRO
YW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVz
dWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0cnVlLCAiRXJyb3I6IEVycm9yOiBkdXJp
bmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwMDAwIHRpbWVzIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEw
MDAwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tcnVuLTEwMDAwLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0MjcxZjRhMzE1OTE2MjVhMGJkM2Q3NDRk
MjUxMjYzMzMwMmU0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpAQCAtMCwwICsxLDIzIEBA
Cit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewor
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBl
Y3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0K
K307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgZm9y
ICh2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUp
IHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBl
dmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVt
IiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVz
dWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNl
KHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJy
b3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1z
aW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjg2MmM2MjhlM2IyY2Ez
MDQ0MTBiMWFlMjI2OTQ3MTgwNTFkZWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFs
bG9jYXRlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9
Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBmID0g
KCkgPT4geyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9j
YXRpb24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsK
K30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAg
ICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7
Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQg
ZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5
IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYu
eCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIg
KyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MjdmM2NhM2JkZThkYTMwMTQwZmExNDk5NzNlMTdhYWE4ZDkxMDVlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNp
bmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBzaW5rIChwLCBxKSB7
CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0
dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB4OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luayh0cnVlLCBmYWxz
ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0
IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUg
RlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBv
biBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYoNDIp
OworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBn
b3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZGI3MGJiOWFiYzIzMTQ4ZjYyN2VmYzYxODZiZTA1N2MzY2JiMjc2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtp
bmctcHV0LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2
YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyByZXR1cm4g
ZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwor
ICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93
ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlz
IHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAor
CisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNlIGJyYW5j
aAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChy
ZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBi
ZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBl
eHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9j
YXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYg
PSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NDkyMzk3MTk4M2RjZGEzNGMyNjkzOTIx
MTdiMTc0OGU2N2I0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAgLTAsMCArMSwyNyBAQAordmFyIEEg
PSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgeworICBjb25zdHJ1Y3Rv
cihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBpZiAoYWNjZXNzVGhpc0JlZm9yZVN1cGVy
KSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7CisgICAgICBzdXBlcigpOworICAgIH0gZWxz
ZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQorfTsKKwordmFyIGV4Y2VwdGlvbiA9IG51
bGw7Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0cnkgeworICAgICAgIG5ldyBC
KHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgICBleGNlcHRpb24gPSBlOworICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKKyAgICAgICAgICB0aHJvdyAiRXhjZXB0
aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVycm9yIjsKKyAgfQorCisgIGlmICghZXhj
ZXB0aW9uKQorICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFs
aXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7CisKKyAgdmFyIGUgPSBuZXcgQihmYWxzZSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTNlYzBkZGQ1NTE0ZmFmNGQwZDAzYzllMDY1
NzBhMGM4MmJlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCwwICsxLDI3IEBACit2YXIg
dGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAn
IiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisK
K3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKworbm9Jbmxp
bmUoYWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgeworICB0ZXN0Q2FzZSh0eXBlb2YgYWYxLCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5vdCBjb3Jy
ZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKHR5cGVvZiBh
ZjIsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzIiKTsKKworLy9GaXhtZTogU29tZSBidWcgaW4gaW5saW5pbmcgdHlwZW9mIHdpdGgg
Zm9sbG93aW5nIHJ1biBwYXJhbWV0ZXJzIGZ0bC1uby1jaml0LW5vLWlubGluZS12YWxpZGF0ZQor
Ly8gLS11c2VGVExKSVRcPXRydWUgLS1lbmFibGVGdW5jdGlvbkRvdEFyZ3VtZW50c1w9dHJ1ZSAt
LWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0x
MDAgIC0tdmFsaWRhdGVHcmFwaD10cnVlIC0tbWF4aW11bUlubGluaW5nRGVwdGg9MQorLy8KKy8v
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgIHsKKy8vICAgaWYgKHR5cGVvZiAoZnVu
Y3Rpb24gKCkge30pICE9PSAnZnVuY3Rpb24nKQorLy8gICAgICAgdGhyb3cgJ1dyb25nIHR5cGUn
OworLy8gfQorLy8gIHRlc3RDYXNlKHR5cGVvZiAoKT0+e30sICJmdW5jdGlvbiIsICJFcnJvcjog
Tm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMtIiArIGkpOworCisvLyAg
dGVzdENhc2UodHlwZW9mICgoYikgPT4ge2IgKyAxfSksICJmdW5jdGlvbiIsICJFcnJvcjogTm90
IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzQiKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhOTBi
OGYzYTFkOTVmYzQzYmRlZWJlMzQ1N2NhYTY0ZDFlNmI3YTAyLi5mMWQxYjhmMTUwMGFkY2NlOGI3
M2M2ODg1YzgwNTg4M2M5NjcwNTEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDgtMTIg
IFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgW0VT
Nl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1bmN0aW9uIHNw
ZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2YgdGhpcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0OTU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbDog
QWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1
bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tdHlwZW9mLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyb3dmdW5j
dGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJv
d2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgICog
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanM6IEFkZGVk
LgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qczogQWRk
ZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6IEFk
ZGVkLgorCiAyMDE1LTA4LTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVkdWNlIGZsYWtpbmVzcyBvZiBpbnNwZWN0b3Iv
aW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmIzMjZjY2JiNGUxNGM2ODlk
ZDdkOTM4M2NjNWJjOTRmZjdmMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBm
b3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcg
aW52b2tlIGJpbmQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCku
YmluZChlLCAnbGV5JykoKSBpcyAnYmFybGV5JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tYmluZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGI5YWNiMmJjOGZkNTA0YzY4ZjA0NDVhNmVhYzRhNmExNDU0YWJhYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWMwNzdmOTk3OWFjZjQ1ZTE2Yjk5NjU3MmQxYWZkZWVkZDU5MTEyNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91
bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5CisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmNhbGwoZSkgaXMgJ2ZvbycKK1BBU1MgZC55
KCkuYXBwbHkoZSkgaXMgJ2ZvbycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxZDhhNDdlMzBiNmE4NzQ5ZWM1YjdlNzgzYzZhOWVjMzEzMmQyZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTY3MDZmZmYxN2MyMTIzODUzNjQwYmIyYTRlYjE3ZDYzZTFhMzcyMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rp
b24gbm8gY29uc3RydWN0b3IKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBmdW5j
dGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNpbXBsZUFycm93RnVu
Y3Rpb24oKScpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0
b3IuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMGMwYjlhOWNkZDRkOGJkZmE2MjQxY2I2YmVmYmYwNGNjOTU4MzBmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I2NmZjMjg4Y2FjYmQ5
YzkzN2M5NzFjMmJkNmI2OGU2NjRhOTQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRo
aXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC5nZXROYW1lKCkgaXMg
ZC5uYW1lCitQQVNTIGQuZ2V0TmFtZUhhcmQoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lTmVz
dGluZygpKCkoKSBpcyBkLm5hbWUKK1BBU1Mgb2JqLm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ29i
akNvZGUtbmFtZS1jb3JyZWN0JworUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3
T2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9k
KCkoJ2NvcnJlY3QnKSBpcyAnaW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBkZWVw
T2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ25ld0ludGVybmFsT2Jq
ZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSBpcyB0
cnVlCitQQVNTIG93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1Mg
ZmFrZS5zdGVhbCgpID09PSBvd25lck9iaiBpcyB0cnVlCitQQVNTIHJlYWwuYm9ycm93KCkoKSA9
PT0gcmVhbCBpcyB0cnVlCitQQVNTIGFycm93RnVuY3Rpb24oJy10aGlzJykgaXMgInJpZ2h0LXRo
aXMiCitQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODFlYTIyYTc2ZmRmOGJmZjVlNzJlNTFiNzc5NGIzZTM0N2QxNjQyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRt
bApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90
aGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNTJlNWUzN2M2OTE1ZjM4MjNlMjliMjBhOTRkZjUz
ZDA4YzAwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
b3RoZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyBmb3IgRVM2IGFycm93
IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKHNpbXBsZUFycm93
RnVuY3Rpb24pIGlzIEZ1bmN0aW9uLnByb3RvdHlwZQorUEFTUyBzaW1wbGVBcnJvd0Z1bmN0aW9u
IGluc3RhbmNlb2YgRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzaW1wbGVBcnJvd0Z1bmN0aW9uLmNv
bnN0cnVjdG9yID09IEZ1bmN0aW9uIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLW90aGVycy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3ZjhiMDBlNDYwNTVlZTZmYWU1YzFlODI4OWVmZWUxZjEx
MDkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3YWY2Y2Q4NjAwZTg4NDEyNzdjNDk0YTk4OTAyMjQ1MmVhNmFiNWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0
IHRkegorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpc1JlZmVyZW5jZUVy
cm9yIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1s
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGVm
MTcxY2I4MjBiZWIzY2I0YTdkM2ZjNDhlNWM1M2ZjMTE5MjZkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi10ZHouanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZmIyY2U5NjRi
ZDAzMzIxYjgzMmNiODdiYmFlMGNhNTM0OWMxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBA
CitQQVNTIHR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgYWYy
ID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rp
b24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGFj
YWFhMWE0ZTRkMGU0Y2IzZDA3NjVlMzczZmVkYjc0MzgwZTAxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi10eXBlb2YuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlYjU1MmY4MGY2NjFkZTNiYWI1MjA5YzcyZGRjZjUwMjEwMDM0NWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbCBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjNkODQ1NGJmZjYxODJlNjFjYmViMGI5ZWUxMzNmZTg3MzExMmJmYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI0Yzg0Mjc2ZTcxMDg3Nzg2YzU5NDBhODIy
YmNjNmY5N2MwNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTUgQEAKK3ZhciBh
ZiA9IChhLCBiKSA9PiBhICsgYjsKKworbm9JbmxpbmUoYWYpOworCitmdW5jdGlvbiBiYXIoYSwg
YikgeworICAgIHJldHVybiBhZihhLCBiKTsKK30KKworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIp
OworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3M2MzYjVlMGNhNzkxNzk0ZjI1
MTY5YTkxY2I0YTdkYzliMjhjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBAQAordmFy
IGZlID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyBiO30KKworbm9JbmxpbmUoZmUpOwor
CitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBmZShhLCBiKTsKK30KKworbm9Jbmxp
bmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIg
cmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUzZjA4ZTk2
NmM3OTRjYmFmOWFkNGEzYWRiNGU5OTc5YzAyYWMyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKQEAgLTAsMCArMSwx
MiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hv
dWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZCcpOworCit2YXIgZCA9IHsKKyAg
eCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH0K
K307CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKworc2hvdWxkQmUoImQueSgpLmJpbmQoZSwg
J2xleScpKCkiLCAiJ2JhcmxleSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
YWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41Yzg4OGY5MTFiZjFjNDRkMzg5ZDBhM2QyMTg0NjgzNDg0YjZmOTZkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tY2FsbC5qcwpAQCAtMCwwICsxLDEzIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBh
cnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBj
YWxsJmFwcGx5Jyk7CisKK3ZhciBkID0geworICB4IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigp
IHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9Owor
CitzaG91bGRCZSgnZC55KCkuY2FsbChlKScsICInZm9vJyIpOworc2hvdWxkQmUoJ2QueSgpLmFw
cGx5KGUpJywgIidmb28nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3Ry
dWN0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25z
dHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWZhZDA3Njg0N2JmZjQ5MjlmNzgwNzc2NWY5OTBiNzM3
M2NkZjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw3IEBACitkZXNjcmlwdGlvbign
VGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcicpOworCit2YXIgc2lt
cGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitzaG91bGRUaHJvdygnbmV3IHNpbXBsZUFy
cm93RnVuY3Rpb24oKScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1NmExNTUzMGYzNGNjMzA4YWNlNmIw
ZmFhNGNmZTdjMWU5NzhjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzCkBAIC0wLDAgKzEsNjcg
QEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGxleGljYWwgYmlu
ZCBvZiB0aGlzJyk7CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5hbWU7
CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlzLmdldE5h
bWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOworICB0aGlzLmdldE5h
bWVOZXN0aW5nID0gKCkgPT4gKCkgPT4gKCkgPT4gdGhpcy5uYW1lOworfQorCit2YXIgZCA9IG5l
dyBEb2coIk1heCIpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZSgpJywgJ2QubmFtZScpOworc2hvdWxk
QmUoJ2QuZ2V0TmFtZUhhcmQoKScsICdkLm5hbWUnKTsKK3Nob3VsZEJlKCdkLmdldE5hbWVOZXN0
aW5nKCkoKSgpJywgJ2QubmFtZScpOworCit2YXIgb2JqID0geworICBuYW1lICAgOiAnb2JqQ29k
ZScsCisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKHZhbHVlKSA9PiB0aGlz
Lm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOworICB9Cit9OworCitzaG91bGRCZSgib2JqLm1ldGhv
ZCgpKCdjb3JyZWN0JykiLCAiJ29iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworb2JqLm5hbWU9J25l
d09iakNvZGUnOworc2hvdWxkQmUoIm9iai5tZXRob2QoKSgnY29ycmVjdCcpIiwgIiduZXdPYmpD
b2RlLW5hbWUtY29ycmVjdCciKTsKKwordmFyIGRlZXBPYmogPSB7CisgIG5hbWUgOiAnd3JvbmdP
YmpDb2RlJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFsT2JqZWN0
JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1l
ICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9Oworc2hvdWxkQmUoImRlZXBPYmouaW50ZXJu
YWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInaW50ZXJuYWxPYmplY3QtbmFtZS1jb3Jy
ZWN0JyIpOworCitkZWVwT2JqLmludGVybmFsT2JqZWN0Lm5hbWUgPSAnbmV3SW50ZXJuYWxPYmpl
Y3QnOworCitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVj
dCcpIiwgIiduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK3ZhciBmdW5jdGlv
bkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOwor
fTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKworc2hvdWxk
QmUoImluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2UiLCAidHJ1ZSIpOworCit2YXIgb3duZXJP
YmogPSB7CisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4gdGhpczsK
KyAgfQorfTsKKworc2hvdWxkQmUoIm93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2JqIiwg
InRydWUiKTsKKwordmFyIGZha2UgPSB7IHN0ZWFsIDogb3duZXJPYmoubWV0aG9kKCkgfTsKK3No
b3VsZEJlKCJmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFyIHJlYWwg
PSB7IGJvcnJvdyA6IG93bmVyT2JqLm1ldGhvZCB9Oworc2hvdWxkQmUoInJlYWwuYm9ycm93KCko
KSA9PT0gcmVhbCIsICJ0cnVlIik7CisKK3ZhciBhcnJvd0Z1bmN0aW9uID0geyB4IDogInJpZ2h0
IiwgZ2V0QXJyb3dGdW5jdGlvbiA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLnggKyB6
OyB9fS5nZXRBcnJvd0Z1bmN0aW9uKCk7Cit2YXIgaG9zdE9iaiA9IHsgeCA6ICJ3cm9uZyIsIGZ1
bmMgOiBhcnJvd0Z1bmN0aW9uIH07CisKK3Nob3VsZEJlKCJhcnJvd0Z1bmN0aW9uKCctdGhpcycp
IiwgJyJyaWdodC10aGlzIicpOworc2hvdWxkQmUoImhvc3RPYmouZnVuYygnLXRoaXMnKSIsICci
cmlnaHQtdGhpcyInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTc5OTMxYzNkZWJjYjUwMjdhZDE0ZmQxNTQ3ZTVhYmEwMzhiNGIxMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90
aGVycy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyBJbnNwaXJlZCBieSBtb3ppbGxhIHRlc3RzCitk
ZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBpbnN0YW5jZW9mIGFuZCB0
eXBlb2Ygb3BlcmF0b3JzJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307
CisKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiki
LCAiRnVuY3Rpb24ucHJvdG90eXBlIik7CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5jdGlvbiBp
bnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRydWUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0
aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIiwgInRydWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi10ZHouanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFmNThmYzY1MTNlZGFiZGUxZGQ2NTA3NDk2YWU4
NjRiNjExZmZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNjcmlwdGlvbignVGVz
dHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRkeicpOworCit2YXIgQSA9IGNsYXNzIEEg
eyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1Ro
aXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAg
IHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAg
IHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgaXNSZWZlcmVuY2VFcnJvciA9IGZhbHNl
OwordHJ5IHsKKyAgICAgbmV3IEIodHJ1ZSk7Cit9IGNhdGNoIChlKSB7CisgICAgaXNSZWZlcmVu
Y2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKK30KKworc2hvdWxkQmUoJ2lz
UmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOworCit2YXIgZSA9IG5ldyBCKGZhbHNlKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJhYTI2OTBmZGE4
MmM2YTMyOGVhMGFiYzM1NWQyZDhiZTNkNDhkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCwwICsxLDEy
IEBACit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIgYWYyID0gKGEpID0+IHthICsgMX07CisKK3No
b3VsZEJlKCJ0eXBlb2YgYWYxID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxkQmUo
InR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9m
ICgoKT0+e30pID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5cGVvZiAo
KGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259128</attachid>
            <date>2015-08-16 12:30:44 -0700</date>
            <delta_ts>2015-08-16 23:47:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150816223022.patch</filename>
            <type>text/plain</type>
            <size>178262</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uM2QxZGQ1YzU5NjkxMDJiNjQwMWI0NjhiNGJl
MmQxNTU0ZjIxYmY5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25B
cmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVu
dHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVj
bCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAg
ICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2
YWx1ZXMgaW50byB0aGUKQEAgLTk1NSw2ICs5NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxpZiBD
UFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICs5OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0K
KyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAg
ICB7CiAgICAgICAgIG1vdmVEb3VibGUoYXJnNCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAg
LTEwMDcsNiArMTAwNywxMyBAQCBwdWJsaWM6CiAgICAgfQogCiAjZWxzZQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGVXKEdQUlJlZyBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHVi
QXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJn
MSwgYXJnMyk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
KEZQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7CkBAIC0xMjEzLDYgKzEy
MjAsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcg
YXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOworICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogI2VuZGlmCiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAwMzhm
NWQ3ZGJjMDZhZjgxMGY3MWE3ZDQyNDBkN2ZmMmViYTQwZWI0Li5iYmM4NTIzZjViYjIzYTM5MzBj
MDk0ZWQ0ODYyMTc0NjRkODZjNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0y
MTksNiArMjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZW50ZXIpCiAgICAgICAg
IERFRklORV9PUChvcF9nZXRfc2NvcGUpCisgICAgICAgIERFRklORV9PUChvcF9sb2FkX2Fycm93
ZnVuY3Rpb25fdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAgICBERUZJTkVf
T1Aob3BfZXFfbnVsbCkKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CkBA
IC0yNTksNiArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9w
X25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25l
d19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAgICAgICBERUZJ
TkVfT1Aob3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODQxMWE3ZWY2NWE5YzZi
ZGNjMTZiMzY0ZWIyOGU0MTAxNmI1ODU4Ni4uNzcxZmQ5YjQwNjViZGQxNzIyYzBlNzJiODg3MjA4
ZWM2MmYxZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTgsNiArNDk4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xv
YWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVsbChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKik7CkBA
IC01MzksNiArNTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
ZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpAQCAtNjUzLDYgKzY1NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwg
Ym9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNp
Z25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGlu
dCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwog
ICAgICAgICB2b2lkIGVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludCBzY29wZSwgU3RydWN0
dXJlKiogc3RydWN0dXJlU2xvdCk7CkBAIC03MjMsNiArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpKQnksIGludCwgR1BSUmVnLCBHUFJSZWcsIEJ5VmFsSW5mbyopOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2MsIEdQUlJl
Zyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpzY0MsIGludCwgR1BSUmVnLCBKU0NlbGwqKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0osIGludCwgR1BSUmVn
LCBKU0NlbGwqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBHUFJSZWcsIGludDMyX3QpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBp
bnQsIEdQUlJlZywgaW50MzJfdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggNWQ2ODY5MDA4MWM5OTZkN2UzM2JmM2JkMjVkY2M1
OGIwMzBmN2Q2Yy4uZmJhYjJjYzBmMzk3MjQ5NTZiZjU4NDkxYjNkZTc4M2E2ZmNkYzIzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI3MSw2ICsyNzEsMTIgQEAg
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpzY0Mgb3BlcmEKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSnNjQ0ogb3BlcmF0aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBH
UFJSZWcgYXJnMikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKK30KKyAgICAKIEFMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VQIG9wZXJhdGlvbiwgaW50IGRzdCwgdm9pZCogcG9pbnRlcikKIHsKICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1OThkNGVjOTljMWQxOGU2YzM5
NjIxMTk3MjBhY2VhYzFlZTJmYTZkLi5jODNiY2M4YzQ1ZGU2NjZmNzNjOWU5MTFmNTE0MjlmMzVl
YjExMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC02NzMsNiArNjc0LDE0IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdU
MCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KKyAgICAKK3ZvaWQgSklUOjpl
bWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdU
MCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
VGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtOTYyLDI2ICs5NzEsNDUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAgZW1pdE5l
d0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisgICAgCit2b2lkIEpJVDo6
ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
Y3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24g
PSBvcGNvZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgCiAgICAgSnVtcCBub3RV
bmRlZmluZWRTY29wZTsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVu
Y3Rpb24pCisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJhbmNoNjQo
Tm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpKSk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIGRz
dCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRM
b2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAg
bm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFn
KSk7CiAgICAgZW1pdFN0b3JlKGRzdCwganNVbmRlZmluZWQoKSk7CiAjZW5kaWYKLQogICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKICAgICBub3RVbmRlZmluZWRTY29wZS5saW5rKHRoaXMpOwotCi0g
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhwciA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkV4
cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4cHIpOworICAgICAgICAKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhw
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0
aW9uKQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRz
dCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMSk7CisgICAgZWxzZQorICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAgICAgZG9u
ZS5saW5rKHRoaXMpOwogfQotCisgICAgCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVu
Y0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKIHZvaWQgSklUOjplbWl0
X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDkxYzAwZTNmZDQ1ZTA5N2Uz
YmIxYzM3OWQ3YzkwM2YwZmQ2MjA5OWEuLmIzOWFlMWQxYTMwNjgwMzQzZTlmZDlhNzIzMTQyOWI2
ZTU0NDEwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRS
ZWNvcmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC05MjIsNiArOTIzLDE0IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUMCk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1Zh
bHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30KKwogdm9p
ZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGI1Zjll
MzY5YTdlNTdiYWZmMDQ2ZDJhMzY1ZGJjMDI0Y2RjZGI5M2IuLjRmZjBlM2QxNTBiNDI2MGVmOTRi
MjFlM2NiYTBmMjMxMmZiNDM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgog
I2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC05NDIsNiArOTQzLDMwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0
aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkp
OwogfQogCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFi
bGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQoreworICAg
IEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6
aW5mbygpKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICAgICAgCisgICAgSlNBcnJvd0Z1bmN0aW9uKiBhcnJvd0Z1bmN0aW9uICA9IGlzSW52
YWxpZGF0ZWQKKyAgICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSkKKyAgICAgICAgOiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICAKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycm93RnVuY3Rpb24pOworfQorICAgIAorRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwg
ZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworfQorICAgIAorRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29t
bW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOwor
fQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDNkODNmNTkw
ZGNmOTE4MDNhMzQ0OGJhMDgzYjJmOTJiY2JlODRmOWIuLmE2N2NhYWNiMzJmYjIxNThhOWMwNWU2
YTUwOTYyMWIzYjgzZThlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCkBAIC0xMjIsNiArMTIyLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm8KIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQUykoRXhl
Y1N0YXRlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNj
QykoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0NKKShFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNTKShFeGVjU3RhdGUqLCBzaXplX3QsIHNp
emVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJh
dGlvbl9FU3NpQ0kpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgVW5p
cXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKQEAgLTI4OCw2ICsyODksOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyV2l0aFBy
b2ZpbGUoRXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRp
b25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2Vs
bCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0
ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFu
ZGxlV2F0Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4
IDJkNDY3N2M2NjU1N2JiY2M1ZTRkMTA5ZWY5YjAxMzhkOWE4M2YxZWMuLmEyYTZiMmIxMWM1Njgx
ZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiVk0uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDU1Yjgx
ZWUwZjc4ZmE3YWQ5YTIwZGNkNDc2ODEyYjQxZjU2ODVkN2YuLjJjZDlmNmViOGQ2ODM4Njg3MDk3
YzRlY2NlNzkyMTU5MTUxMDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2lu
Y2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAg
LTE3MSw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAg
ICAgRXhlY1N0YXRlKiBfX3JjZl9leGVjID0gKGV4ZWNDYWxsZWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgX19yY2ZfZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKLQorICAg
IAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVj
U3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwMTMsMTIgKzEwMTQsMjQgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOworICAgIAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25F
eHByKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIHNjb3BlKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwogICAg
IAotICAgIExMSU5UX1JFVFVSTihmdW5jKTsKKyAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoNCkuanNWYWx1ZSgpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlv
bkV4cHIocGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNBcnJvd0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCB0aGlzVmFsdWUpKTsKIH0KIAog
c3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWND
YWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKQEAgLTEwOTYsNyArMTEwOSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
CiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgVk0m
IHZtID0gKnNjb3BlLT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2Fs
bGVlLT5leGVjdXRhYmxlKCk7Ci0gICAgCisKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29k
ZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUt
PmlzSG9zdEZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCmluZGV4IDhjYzY5YTk2MDBiYmY5ZDg1MzM5ZDYwOTU5NWY2N2M2OGQwNzY3MWIu
LjNmMWRhYTgxMmI3MDJlMjNjNmFhZWY5ZmQ3YzA2NzFlZTIwMjVjMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05Nyw2ICs5Nyw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY29uc3RydWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzkxMDYxN2VkODM0Yjc0
YzlmMmY4ZWU0YjI2ODdjOGI5Y2ZlM2M3Yy4uNzNmYzU4ODQ0MmRkYzRiOWNmYTdiODhmMDA0Y2E4
NjczZTQ5OWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTE4Myw2ICsxMTgzLDEwIEBAIF9sbGludF9vcF9uZXdf
ZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhw
KQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19h
cnJvd19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg1KQogCiBfbGxpbnRfb3BfY2FsbDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGU5MGVjZWRmYTczMDk4MmZlZWY3
MWVlYjBjZWE2NDM4MjM0YTY5MWMuLjdlZjZiODdjMTcwYWQwODNiMWY1MjlkYTg4MzZjMDBjZGE2
NGI0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMzczLDMgKzIzNzMsMTIgQEAgX2xsaW50X29w
X3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisK
K19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIEpT
QXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigxLCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ5NDU1Zjc1YzdiNjY0
MmZiOGM4NzIzZmMxNTJhMzc5MDkxMDNiNWIuLmQyMTUyYTJmMjc3YWRlNTg3OTc2YTFjM2YxMjAy
MzcyOWIzOGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMjI2LDMgKzIyMjYsMTEgQEAgX2xsaW50X29w
X3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisK
K19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCisgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjpt
X2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAg
IHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmlu
ZGV4IDdiNTg3NzMwYTZmMDM1NDQwZGI5MGQ5YzQyNjgwYWQ1NzhiOTRhNjcuLjgwNmRiNTIzMDNk
NWFkM2E3MTg4MTI5Zjg4YmQ3NjRjNmI1MGVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjEsMTkgKzM2MSwxOSBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQs
IAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUpCisgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFy
c2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3Ry
dWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBpblN0cmljdENv
bnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5j
dGlvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKKyAgICAgICAgdXNlc1RoaXMo
KTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Np
b24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5j
dGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLQotICAg
ICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJO
b2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3Vy
Y2UpOworICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBBcnJvd0Z1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1lLCBmdW5j
dGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExv
YyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24u
c3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAppbmRleCBhYmI3MmE3NGUxMjg4NDhlYThiNDNmZDg2MzY5NzRjYjk5N2MzN2Ri
Li5iZGMxYmVlNzc4NDQ4NzJhYTYyNGQ0NDNiY2JhMTk2OTNhZGJkMTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtODkwLDEzICs4
OTAsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5j
RXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAKKyAgICBpbmxpbmUgQmFzZUZ1bmNFeHBy
Tm9kZTo6QmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2Nh
dGlvbikKICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCiAgICAgewogICAgICAgICBt
X21ldGFkYXRhLT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lv
bik7CiAgICAgfQogCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQor
ICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBz
b3VyY2UpCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNs
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1f
bWV0YWRhdGEobV9tZXRhZGF0YSkKQEAgLTkwNCw2ICs5MTAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rp
b25EZWNsYXJhdGlvbik7CiAgICAgfQogCisgICAgaW5saW5lIEFycm93RnVuY0V4cHJOb2RlOjpB
cnJvd0Z1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVuY0V4cHJOb2RlKGxvY2F0aW9u
LCBpZGVudCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAgICB9CisKICNpZiBFTkFCTEUo
RVM2X0NMQVNTX1NZTlRBWCkKICAgICBpbmxpbmUgQ2xhc3NEZWNsTm9kZTo6Q2xhc3NEZWNsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY2xhc3NE
ZWNsYXJhdGlvbikKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjZjRmZTQ1MGE5MjQ5NTA0ZjMwYmE4NWEy
NjRlNjdiYWE5YTU1Yzk2Li4xOGY4NDU1MzMwNWM0YTBjMjFjNzMzODgzOWMyOWYyM2M3NGRlOTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3
IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICBQYXJz
ZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRl
eHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAg
ICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVt
bihlbmRDb2x1bW4pCkBAIC0xNjMsNiArMTYzLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1
bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAg
ICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKKyAg
ICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgQVNTRVJU
KG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rvcktp
bmQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAxZDZiMDNkNzc2
NjI5N2FlMTc1OTNiYmE5YWVjNTYwOTMyOTMwYzJkLi44NzM2NjhlYzM3YjQyN2I5MjA2NDlkZTMw
NjgzODFlMmNkOGExNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0x
NjUsNiArMTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rv
dEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0xODA5LDcgKzE4MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAg
ICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
LCBTb3VyY2VQYXJzZU1vZGUpOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbik7CiAKICAgICAgICAgdm9p
ZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM1LDYgKzE4MzYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9j
b25zdHJ1Y3RvcktpbmQpOyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNp
Z25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBs
aW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4NjAsNiArMTg2Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVu
c2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0
cnVjdG9yS2luZCA6IDI7CisgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsK
ICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9k
ZSB7CkBAIC0xODg5LDE4ICsxODkyLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNp
Z25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBCYXNlRnVuY0V4cHJOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNFeHByTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgICAgIEJhc2VGdW5jRXhwck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBt
ZXRhZGF0YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7CisgICAgfTsKKworCisgICAgY2xh
c3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgfTsKIAotICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAg
ICBjbGFzcyBBcnJvd0Z1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNlRnVuY0V4cHJOb2RlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJj
ZUNvZGUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYWVlNzBiNmE3
MzI5YmMxMWI1Y2U3M2Q1MzUyZDMxM2UyMmEyN2JlMS4uZjUwODE0ZTdiMTQyYWI1MzAwZDg0YTRi
NzAxOWY5Yzk4NGUyYjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cApAQCAtMTU0NiwxMSArMTU0NiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24s
IGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRl
ckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogeworICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBi
b2R5VHlwZTsKICAgICBpZiAoYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB8
fCBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrKSB7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBl
bmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1l
dGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xNTYyLDcgKzE1NjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5j
dGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIGVsc2UKICAg
ICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVj
a0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8g
IkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5
IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tl
bkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3Rh
cnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5j
dGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3Ry
aWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwg
dG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBj
b25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlv
bik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCkBAIC0xNzM3LDcgKzE3MzgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZAogICAgIH0KICAgICAKICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvciA9IGNvbnN0cnVj
dG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0KKyAgICAKICAgICBmdW5jdGlvbklu
Zm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8gSWYgd2Uga25v
dyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZv
IGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCkBAIC0xNzU2
LDExICsxNzU3LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgICAgICBlbmRM
b2NhdGlvbi5zdGFydE9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldCA6CiAg
ICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gcGFyc2VUeXBlID09IEFycm93RnVuY3Rpb25QYXJzZVR5cGU7Cisg
ICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5j
dGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAK
LSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2Fj
aGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgICAgICAgICAgY2FjaGVkSW5mby0+
c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwg
bW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUt
PnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9w
U2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CkBAIC0xNzc0LDcgKzE3NzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICBt
X2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAg
ZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0Owog
Ci0gICAgICAgIGlmIChwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkKKyAgICAg
ICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBj
YWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDA3NjBjMTllYjE2
MzZkYjIxYTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcuLmRjNTYxZjliMWE2ZGEzNjQzYjgyNzJmZTdi
MTJlMjE1ZTQ0ZjQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIENsYXNzRXhwcmVzc2lv
biBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0
eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAg
IGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsgcmV0dXJuIEZ1bmN0aW9uQm9k
eVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wp
IHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAg
IHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVB
cmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGFiMTY3MjExNjgxOTRjMWE2MDI4
OWViODU2ZTk4YzBjZmExN2I3OS4uOWRjNjk0ZjI3YTQ1ODczYjJhMjE2N2EzNjk2MzVkM2U1OTQ1
YWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
QEAgLTIzNiw4ICsyMzYsNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpu
ZXdDb2RlQmxvY2tGb3IoCiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGdsb2JhbE9i
amVjdC0+aGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKICAgICBQcm9m
aWxlck1vZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNQcm9maWxlcigpID8gUHJv
ZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0KLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmNvZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2Us
IGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcigqdm0sIGV4ZWN1dGFibGUtPm1f
c291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIGV4ZWN1dGFi
bGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKICAgICByZWNvcmRQYXJzZShleGVjdXRhYmxlLT5tX3Vu
bGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1
dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBz
dGFydENvbHVtbigpLCBlbmRDb2x1bW4oKSk7IAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2sp
IHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0tPnRocm93RXhjZXB0aW9uKApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGJjZTI0MjhjYmMxMDFkZGE2Y2Ix
MDFkNzBiZjAyN2Y3ZTBlYTNkZjAuLmNmMmJkZTg4YzVhNmU5MTY3NjAzNmVlMjdkNzQ0Zjc2NDUz
OWNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAg
LTQ3NCw3ICs0NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7
IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1
bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUzMCw3ICs1MzAsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFs
c2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBA
IC02MzMsNiArNjMzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0
QWJpbGl0eSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xh
c3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNv
bnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pbmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxYzI2MGUxNmEyMGUyYjg0MDlh
ZWJiOWEyZTU5ZGI5YjNkZjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Fycm93RnVuY3Rpb246OnNfaW5mbyA9IHsgIkFycm93
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXJyb3dG
dW5jdGlvbikgfTsKKwordm9pZCBKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQoreworICAgIHN0YXRpY19jYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpLT5KU0Fycm93RnVu
Y3Rpb246On5KU0Fycm93RnVuY3Rpb24oKTsKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93
RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEpTQXJyb3dGdW5jdGlv
biogcmVzdWx0ID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7
CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIHJl
c3VsdCwgIkFsbG9jYXRpbmcgYW4gYXJyb3cgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitKU0Fycm93RnVuY3Rpb246OkpTQXJyb3dGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlz
KQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKQorICAgICwgbV9ib3VuZFRoaXModm0sIHRoaXMs
IGJvdW5kVGhpcykKK3sKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNy
ZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhp
cykKK3sKKyAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+aGFzQmVl
bkludmFsaWRhdGVkKCkpOworICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
LCBib3VuZFRoaXMpOworfQorCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXJyb3dGdW5jdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNBcnJvd0Z1bmN0
aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQoreworICAgIHJl
dHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmNTZmNjhlZmVlZGQ4MjMxYTM1YjJmYzI0OWZkODFhYzk3ZjViMjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaApAQCAt
MCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtv
diA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSlNBcnJvd0Z1bmN0aW9uX2gKKyNkZWZpbmUgSlNBcnJvd0Z1
bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIEpTR2xvYmFsT2JqZWN0Owor
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsK
KyAgICAKK2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBm
cmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBE
Rkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwor
I2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5j
dGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0Fycm93
RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlv
blNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVv
ZihKU0Fycm93RnVuY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0
aW9uKiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgeworICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJvd0Z1
bmN0aW9uPih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
Ym91bmRUaGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFs
T2JqZWN0KCkpOworICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAg
ICByZXR1cm4gZnVuY3Rpb247CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworCisgICAgSlNWYWx1
ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQorICAgIAorICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZUaGlzVmFsdWUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Fycm93RnVuY3Rpb24sIG1fYm91bmRU
aGlzKTsKKyAgICB9CisgICAgCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIAorcHJpdmF0
ZToKKyAgICBKU0Fycm93RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
KiwgSlNWYWx1ZSk7CisgICAgCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7Cit9OworICAg
IAorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Fycm93RnVuY3Rpb25faApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDBiODdkNzVjOTE0
NTBjNWFmMWFhZWQyN2E2MWE3NDhlZjgwZjA5M2UuLjkyODM1MGUyNDc4YzQ1ZjdiZjdlOGFhODRj
OWVjM2E0ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAg
ICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVy
ZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBp
bnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENy
ZWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25J
bmxpbmVzLmgKaW5kZXggZjZjNmQ1OGVjNmU1YzExNjRjYjI3ZmE1ZTQxNjE4YjRiODE0MmYwMi4u
ZjA1OTU4NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNiNjQ0YTg4NDQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC00NCw2ICs0
NCwxMyBAQCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgICwgbV9yYXJlRGF0YSgpCiB7CiB9
CisgICAgCitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZSh2
bSwgdGhpcywgZXhlY3V0YWJsZSkKKyAgICAsIG1fcmFyZURhdGEoKQoreworfQogCiBpbmxpbmUg
RnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGNlZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAwNDQxN2MyMjlhZDA0MjMuLmRhMWFjMjVhYWIw
MDg2MmNkNTM3MzBmOWE1YWQxMjVhMmRjMGZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVy
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNB
cnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjU5
LDYgKzI2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIGV4ZWMt
PnNldENhbGxlZShtX2dsb2JhbENhbGxlZS5nZXQoKSk7CiAKICAgICBtX2Z1bmN0aW9uU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlvblN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBt
X2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsKICAgICBt
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsK
QEAgLTc5NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBi
MTMxMDJiMjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMwNTVlOWJhZTMwYmI3M2ZkOTAxNWJjMDAzODM2
M2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fY2FsbGVlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
ZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1
bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5j
dGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKQEAgLTQ2
Miw2ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxsZWVTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
ZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBh
cnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgUHJv
cGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlv
bk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9z
cmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlM2E2NmVhOTJm
MDMwZGIzNzc5YTRjM2U0MDJlN2MxMThkMWQ4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmst
b3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpAQCAtMCwwICsxLDQ2IEBACisidXNl
IHN0cmljdCI7CisKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gc2hvdWxkVGhyb3dURFoo
ZnVuYykgeworICAgIHZhciBoYXNUaHJvd24gPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBm
dW5jKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmIChlLm5hbWUuaW5kZXhPZigiUmVm
ZXJlbmNlRXJyb3IiKSAhPT0gLTEpCisgICAgICAgICAgICBoYXNUaHJvd24gPSB0cnVlOworICAg
IH0KKyAgICBpZiAoIWhhc1Rocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWQgbm90
IHRocm93IFREWiBlcnJvciIpOworfQorCitmdW5jdGlvbiBiYXIoZikgeyB9CisKK2Z1bmN0aW9u
IGZvbyhiKSB7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICAoeCkgPT4geyBy
ZXN1bHQgPSB4OyByZXR1cm4gdGR6UGVycGV0cmF0b3I7IH0KKyAgICBpZiAoYikgeworICAgICAg
ICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAg
ICAgICAgICAgIHJldHVybiB0ZHpQZXJwZXRyYXRvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBs
ZXQgdGR6UGVycGV0cmF0b3I7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFy
KTsKK25vSW5saW5lKGZvbyk7Citub0lubGluZShzaG91bGRUaHJvd1REWik7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIGJvb2wgPSAhKGkgJSAxMDApOworICAgIGlm
IChib29sKQorICAgICAgICBzaG91bGRUaHJvd1REWigoKT0+IHsgZm9vKGJvb2wpOyB9KTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhib29sKTsKKyAgICAgICAgaWYgKHJl
c3VsdCAhPSAwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFj
dGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQxYmJl
MTQwMjQxNGRiMjZjNmI3ZmQ0MDFmYjBlOWM2NWE0YmE3NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9u
LXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuID0g
MTAwMDAwMDsKKworZnVuY3Rpb24gYmFyKHNldCkgeworICAgIHZhciByZXN1bHQgPSBzZXQoMCk7
CisgICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2
YWx1ZTogIiArIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0
ID0gMDsKKyAgICB2YXIgaW1VbmRlZmluZWQ7CisgICAgdmFyIGJhejsKKyAgICB2YXIgc2V0ID0g
ICh4KSA9PiB7CisgICAgICAgIHJlc3VsdCA9IHg7CisgICAgICAgIGlmIChiYXogIT09IDUwKQor
ICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBiYXo7CisgICAgICAgIHJl
dHVybiBpbVVuZGVmaW5lZDsKKyAgICB9OworICAgIGJheiA9IDUwOworICAgIGlmIChiKSB7Cisg
ICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlm
IChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJlNDM3YWY3YjJjMmFkMzQ1ZTI2YzIwMzc3ODkwZGY1ZjMxZmFmMDcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwyNSBAQAor
dmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVuY3Rpb24gZm9vKGIp
IHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsgcmVzdWx0ID0g
eDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsK
KyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9v
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9v
KCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9u
LXNpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZhNzllYzllYWE2NWM1NDE5MzBiOTA0ODI2ZTdhMjNhMTNm
YjJlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAsMCArMSwyNCBAQAordmFy
IG4gPSAxMDAwMDAwMDsKKworZnVuY3Rpb24gYmFyKGYpIHsgZigxMCk7IH0KKworZnVuY3Rpb24g
Zm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0geCA9PiB7IHJlc3Vs
dCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgaWYgKHJl
c3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkOiAiICsgcmVzdWx0Owor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9Jbmxp
bmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7
CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDAp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1i
b3VuZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1ib3VuZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjAzMjA4OGFiZjI2ZGFlMmFlNzFhMmFjNGMwNWQ0ZjA3
NzU1ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGQg
PSB7CisgIHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLngg
KyB6OyB9Cit9OworCitub0lubGluZShkLnkpOworCit2YXIgZSA9IHsgeCA6ICJiYXoiIH07CisK
K2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQueSgpLmJpbmQoZSwg
ImxleSIpKCksICJiYXJsZXkiLCAiRXJyb3I6IGZ1bmN0aW9uIGJpbmQgc2hvdWxkbid0IGNoYW5n
ZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY4NzdlMGFkOWM4M2FjNTNhN2Y2ZDM1MTk2MjMyMTRjMWU5ZmM2MGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE4IEBACit2YXIgdGVzdENhc2UgPSBmdW5j
dGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsg
IicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBkID0geworICB4
IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsK
K25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJhciIgfTsKKworZm9yICh2YXIgaT0w
OyBpPDEwMDAwO2krKyl7CisgICAgdGVzdENhc2UoZC55KCkuY2FsbChlKSwgImZvbyIsICJFcnJv
cjogZnVuY3Rpb24gY2FsbCBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGluZyBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICB0ZXN0Q2FzZShkLnkoKS5hcHBseShlKSwgImZvbyIs
ICJFcnJvcjogZnVuY3Rpb24gYXBwbHkgc2hvdWxuJ3QgY2hhbmdlIHRoZSBsZXhpY2FsIGJpbmRp
bmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3Iu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTViZWI1NTdkNzk0OWJjNmIyYzc4YWI0NjU5ZWE4YzJhYzYzZGU2Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDIyIEBACit2YXIgdGVzdENhc2Ug
PSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVj
dGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBzaW1w
bGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93RnVuY3Rp
b24pOworCit2YXIgZXJyb3JPbkNyZWF0ZSA9IGZhbHNlOworCitmb3IgKGk9MDtpPDEwMDAwO2kr
KykgeworICAgdHJ5IHsKKyAgICAgICB2YXIgZmMgPSBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigp
OworICAgfQorICAgY2F0Y2ggKGUpIHsKKyAgICAgZXJyb3JPbkNyZWF0ZSA9IHRydWU7CisgICB9
CisKKyAgICB0ZXN0Q2FzZShlcnJvck9uQ3JlYXRlLCB0cnVlLCAiRXJyb3I6IE5vIGV4Y2VwdGlv
biBkdXJpbmcgcnVuIG5ldyBBcnJvd0Z1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZmFiMjRjOTFiYzU3Yzk1ODc2
MzJkZmVjOWE0YzkzNzk4ZTIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwpA
QCAtMCwwICsxLDE5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3Rl
ZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1l
c3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1
YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9
IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlz
LmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOworfQorCitu
b0lubGluZShEb2cpCisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdmFyIGQgPSBu
ZXcgRG9nKCJNYXgiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0
aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24g
IzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lSGFyZCgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjExN2RiMzAzY2RmZTNkMTVkYTQ1YzgxNjRlNDhkMDNhNjdlYjkyYTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpAQCAtMCwwICsxLDM5IEBACit2YXIgdGVzdENhc2UgPSBm
dW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVk
ICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBmdW5jdGlv
bkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOwor
fTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKwordGVzdENh
c2UoaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5v
dCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKwor
dmFyIG9iaiA9IHsKKyAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHRo
aXM7CisgIH0KK307CisKK25vSW5saW5lKG9iai5tZXRob2QpOworCitmb3IgKHZhciBpPTA7IGkg
PCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCkgPT09IG9iaiwgdHJ1
ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzMiKTsKK30KKwordmFyIGZha2UgPSB7c3RlYWw6IG9iai5tZXRob2QoKX07
Citub0lubGluZShmYWtlLnN0ZWFsKTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykg
eworICAgIHRlc3RDYXNlKGZha2Uuc3RlYWwoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIp
OworfQorCit2YXIgcmVhbCA9IHtib3Jyb3c6IG9iai5tZXRob2R9Oworbm9JbmxpbmUocmVhbC5i
b3Jyb3cpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uo
cmVhbC5ib3Jyb3coKSgpID09PSByZWFsLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDE5MDg2
ZDU4NDc5YzRiZDRmZTBmNTI3YjNhN2JiODkzOWMwOTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLTMuanMKQEAgLTAsMCArMSwyOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFj
dHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsK
KyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQg
d2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7IG5hbWU6J29i
aicsIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAi
LW5hbWUtIiArIHZhbHVlOyB9fTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAg
dGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdvYmotbmFtZS10
ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworZm9yICh2YXIgaT0wOyBp
PDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDEgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50
b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0MSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0
cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitvYmoubmFtZT0nbmV3T2JqJzsKKworZm9yICh2
YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyAr
IGkudG9TdHJpbmcoKSksICduZXdPYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9y
OiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzUiKTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3Vs
dDIgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVz
dWx0MiwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMg
bm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NWJkMzYzZTRlNDZiMDJkMmYxOWJiZTM4NTAyZjUyODIzM2E5ZjEzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTQuanMKQEAgLTAsMCArMSwyNiBAQAordmFyIHRlc3RDYXNlID0gZnVu
Y3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCAr
ICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7
CisgIG5hbWU6J29iaicsCisgIGludGVybmFsT2JqZWN0OiB7CisgICAgbmFtZSAgOidpbnRlcm5h
bE9iamVjdCcsCisgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRo
aXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH0KKyAgfQorfTsKKworbm9JbmxpbmUob2JqLmlu
dGVybmFsT2JqZWN0Lm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7Cisg
ICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJp
bmcoKSksICdpbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMSIpOworfQorCitvYmouaW50ZXJuYWxPYmplY3QubmFtZT0nbmV3SW50ZXJuYWxPYmplY3Qn
OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKG9iai5pbnRl
cm5hbE9iamVjdC5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnbmV3SW50ZXJuYWxP
YmplY3QtbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy01LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc1NDk0
Y2U2YjY2ZGIwYTdlYjQzZGNjODNlYzFlYWNlNjI4NzU0NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy01LmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBzb3J0ZWRWYWx1ZXM7CisKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
Cit2YXIgb2JqID0geworICBhcnI6IFsxLCA0LCA2LCAzLCA3LCAwXSwKKyAgYnViYmxlU29ydDog
ZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB7CisgICAgICB2YXIgdG1wOworICAgICAg
dmFyIGFyID0gdGhpcy5hcnIuc2xpY2UoKTsKKyAgICAgIHZhciBfbGVuZ3RoID0gYXIubGVuZ3Ro
CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9sZW5ndGg7IGkrKykgeworICAgICAgICBmb3Ig
KHZhciBqID0gaTsgaiA+IDA7IGotLSkgeworICAgICAgICAgIGlmICgoYXJbal0gLSBhcltqIC0g
MV0pIDwgMCkgeworICAgICAgICAgICAgdG1wID0gYXJbal07CisgICAgICAgICAgICBhcltqXSA9
IGFyW2ogLSAxXTsKKyAgICAgICAgICAgIGFyW2ogLSAxXSA9IHRtcDsKKyAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBhcjsKKyAgICB9CisgIH0KK307CisKK25v
SW5saW5lKG9iai5idWJibGVTb3J0KTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsK
KyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDMsIDcsIDBdOworICAgIHRlc3RDYXNlKG9iai5i
dWJibGVTb3J0KCkoKS5sZW5ndGgsIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisKKyAgICB2YXIgc29ydGVk
VmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1sw
XSwgMCwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24gIzYiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbNl0sIDcsICJF
cnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICM3Iik7CisKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDUsIDgsIDIxLCAxOSwg
MF07CisKKyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCkubGVuZ3RoLCA5LCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjOCIpOworCisgICAgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRl
c3RDYXNlKHNvcnRlZFZhbHVlc1sxXSwgMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkg
YmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEyIik7CisgICAgdGVzdENhc2Uo
c29ydGVkVmFsdWVzWzhdLCAyMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEzIik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMtNi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTdiYzdjOGYxODA1MzU4
YmRiYTg1YjJjZWY2YTY5YjVmNDFlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5q
cwpAQCAtMCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBl
Y3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93
IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBh
Y3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFt
ZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+ICB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0
TmFtZU5lc3RpbmdMZXZlbDEgPSAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0TmFt
ZU5lc3RpbmdMZXZlbDIgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBk
ID0gbmV3IERvZygiTWF4Iik7CisKK25vSW5saW5lKGQuZ2V0TmFtZSgpKTsKK25vSW5saW5lKGQu
Z2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpKTsKK25vSW5saW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZl
bDIoKSgpKCkpOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQu
Z2V0TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5l
c3RpbmdMZXZlbDEoKSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisgIHRlc3RDYXNlKGQuZ2V0
TmFtZU5lc3RpbmdMZXZlbDIoKSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24t
c2luay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTBhMzFkNjczMWFlNjk3NGQ2NjdlZDhkMjQ4
NzBiNWQ1MzFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay1vc3Jl
eGl0LmpzCkBAIC0wLDAgKzEsMzQgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK3ZhciBuZXdDb250
ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGJhcigpIHsgfQor
CitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAo
eCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAor
ICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQp
CisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24nOworICAg
ICAgcmVzdWx0ID0geDsKKyAgICB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOwor
ICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9Jbmxp
bmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7
CisgICAgdmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRleHQsICEoaSAlIDEwMCkpOworICAg
IGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFj
dGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTQzMDYzN2M4NWJmOTQyMWFlOWM5N2UwZGQ3
ZjZjZDEzNWM0Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMK
QEAgLTAsMCArMSwzOCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRleHQgPSB7
CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKGYpIHsKKyAgICBpZiAo
dGhpcyA9PSBuZXdDb250ZXh0KQorICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBuZXN0
aW5nIGZ1bmN0aW9uJzsKKyAgICBmKDEwKTsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2
YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsKKyAgICAgIHJlc3VsdCA9IHg7
CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBp
ZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAg
ICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAgfTsKKwor
ICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVzdWx0ICE9IDEw
KQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOwor
bm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIg
cmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3Vs
dCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1z
aW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjllMDI3MTM5YzE2Njdl
MTA2OWJhYmQyOTVhNmQ3ZmMwYjllNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5n
LW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM3IEBACit2YXIgbmV3Q29udGV4dCA9
IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0g
MzsgfQorbm9JbmxpbmUoY2FsbCk7CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0
aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgewor
ICAgIHZhciBmID0gKCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3Rv
cmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5l
d0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVu
Y3Rpb24gIzEnOworICAgIH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9y
Y2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0
KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4
JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAw
OyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7
CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0
byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgYXJy
b3cgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVj
ayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3Zh
ciBmID0gc2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJvdyAiRXJyb3I6
IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhp
cy1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZmZjYjNmYTViMWU3N2ZiNjI4NjE4MGIzMzJhM2JlN2RlMjhmNjBlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNiBAQAordmFyIG5ld0Nv
bnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxkIGJlIGludm9j
ZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBz
aW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93
IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwg
dGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0
IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKyAgICAgIHJldHVybiB4OworICAgIH07CisgICAgaWYg
KHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB7Cisg
ICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAo
dGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAg
ICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMic7CisgICAgICByZXR1
cm4geDsKKyAgICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZh
bHNlKTsvLyBTdWJzdGl0dXRlIHRoaXMKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYg
KHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiAr
IHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBj
b21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMg
cHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250
ZXh0LHRydWUsIHRydWUpOy8vIFN1YnN0aXR1dGUgdGhpcwordmFyIHJlc3VsdCA9IGYoNDIpOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3Qg
IiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtp
bmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1N2VhMDc2MzVhNDEzMWNkMjMxMWQ0NTA3MzVmNTdjMWRk
OTU4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEs
NDUgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKKy8v
IFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29u
dGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB7CisgICAgICAv
LyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAh
PSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJv
dyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisKKyAgICAgIHJldHVybiB4
OworICAgIH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0K
KyAgICByZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbiAjMic7CisKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNh
bGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Ly8gdXNlIGNhbGwgdG8gc3Vic3RpdHV0ZSBjb250
ZXh0CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0
IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0
byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVy
IGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7
Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8vIFRoaXMgc2hv
dWxkbid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3IgY29tcGxldGVs
eSBjcmFzaAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAiICsgcmVzdWx0
OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhl
IHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUs
IHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRo
cm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90
aGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRjZTBjNjU4ZDNhMmY3OTIyOWRmNGY4OTJjY2RhMTUx
M2M5NGU1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCArMSwxNyBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIg
c2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitub0lubGluZShzaW1wbGVBcnJvd0Z1
bmN0aW9uKTsKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0ZXN0Q2FzZShPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiksIEZ1bmN0aW9uLnByb3RvdHlw
ZSwgIkVycm9yOiBOb3QgY29ycmVjdCBnZXRQcm90b3R5cGVPZiB2YWx1ZSBmb3IgYXJyb3cgZnVu
Y3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1
bmN0aW9uLCB0cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3VsdCBmb3IgaW5zdGFuY2VvZiBt
ZXRob2QgZm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RDYXNlKHNpbXBsZUFycm93RnVu
Y3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3Qg
cmVzdWx0IGZvciBjb25zdHJ1Y3RvciBtZXRob2Qgb2YgYXJyb3cgZnVuY3RpbyAgIG4iKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1ydW4tMTAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ExZjBhNDljYjE2ODYzYzU5MjEz
NjFmMGFkYjFlMTRlYzliNjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCkBAIC0wLDAgKzEsMjQg
QEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4
cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAg
fQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBm
b3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1l
KSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4g
dGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsK
KyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZh
bHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMSks
IHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24g
b25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmlu
ZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4t
MTAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRjZGIzYzcwYTFiMjdjM2RiYjUyMzgwOTU1ZjUzNTNkNzY3
NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rp
b24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxj
b3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlz
Lm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1l
Iik7OworICAgIH07CisKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAg
IGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7
CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwgdHJ1
ZSwgIkVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIG9uZSB0aW1lIik7
Cit0ZXN0Q2FzZShydW4oMTApLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJy
b3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZTVmNmJjODZiZDMxNDUxYjAxY2EyN2QwYjk3MjBiNTdlOGQ2MDUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXJ1bi0xMDAwMC0xLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0
aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAi
JywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNv
dW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsr
KSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBu
YW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5uYW1lOworICAgIH07CisKKyAg
ICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9i
ai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1
cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0cnVlLCAiRXJyb3I6IEVycm9y
OiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwMDAwIHRpbWVzIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
cnVuLTEwMDAwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0MjcxZjRhMzE1OTE2MjVhMGJk
M2Q3NDRkMjUxMjYzMzMwMmU0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpAQCAtMCwwICsx
LDIzIEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2Fn
ZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAi
LiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7
CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0ID0gdHJ1ZTsK
KyAgZm9yICh2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24g
KG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAo
KSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2Jq
KCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAg
ICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
c3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24g
b2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1h
bGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjg2MmM2Mjhl
M2IyY2EzMDQ0MTBiMWFlMjI2OTQ3MTgwNTFkZWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91
YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGNhbGwobykgeyBvLngg
PSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZh
ciBmID0gKCkgPT4geyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNl
IGFsbG9jYXRpb24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6
IDIgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsg
KytpKSB7CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMp
CisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyBy
ZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29t
cGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHBy
b3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwor
aWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0
IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MjdmM2NhM2JkZThkYTMwMTQwZmExNDk5NzNlMTdhYWE4ZDkxMDVlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBzaW5rIChw
LCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQo
KTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB4OworfQorbm9JbmxpbmUoc2luayk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luayh0cnVl
LCBmYWxzZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIp
CisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisK
Ky8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0
byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9j
YXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9
IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQy
IGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZGI3MGJiOWFiYzIzMTQ4ZjYyN2VmYzYxODZiZTA1N2MzY2JiMjc2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsK
KyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyBy
ZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIHRy
dWUpOworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAg
IHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBB
dCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhl
IEZUTAorCisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNl
IGJyYW5jaAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsK
K2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNo
b3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVy
cm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhl
IGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAor
dmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVz
dWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAi
ICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NDkyMzk3MTk4M2RjZGEzNGMy
NjkzOTIxMTdiMTc0OGU2N2I0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAgLTAsMCArMSwyNyBAQAor
dmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgeworICBjb25z
dHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBpZiAoYWNjZXNzVGhpc0JlZm9y
ZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7CisgICAgICBzdXBlcigpOworICAg
IH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQorfTsKKwordmFyIGV4Y2VwdGlv
biA9IG51bGw7Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0cnkgeworICAgICAg
IG5ldyBCKHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgICBleGNlcHRpb24gPSBlOworICAg
ICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKKyAgICAgICAgICB0aHJvdyAi
RXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVycm9yIjsKKyAgfQorCisgIGlm
ICghZXhjZXB0aW9uKQorICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1
bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7CisKKyAgdmFyIGUgPSBuZXcgQihmYWxzZSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tdHlwZW9mLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTNlYzBkZGQ1NTE0ZmFmNGQwZDAz
YzllMDY1NzBhMGM4MmJlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCwwICsxLDI3IEBA
Cit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewor
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBl
Y3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0K
K307CisKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKwor
bm9JbmxpbmUoYWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkgeworICB0ZXN0Q2FzZSh0eXBlb2YgYWYxLCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5v
dCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKHR5
cGVvZiBhZjIsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzIiKTsKKworLy9GaXhtZTogU29tZSBidWcgaW4gaW5saW5pbmcgdHlwZW9m
IHdpdGggZm9sbG93aW5nIHJ1biBwYXJhbWV0ZXJzIGZ0bC1uby1jaml0LW5vLWlubGluZS12YWxp
ZGF0ZQorLy8gLS11c2VGVExKSVRcPXRydWUgLS1lbmFibGVGdW5jdGlvbkRvdEFyZ3VtZW50c1w9
dHJ1ZSAtLWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10aHJlc2hvbGRGb3JKSVRBZnRlcldh
cm1VcD0xMDAgIC0tdmFsaWRhdGVHcmFwaD10cnVlIC0tbWF4aW11bUlubGluaW5nRGVwdGg9MQor
Ly8KKy8vIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgIHsKKy8vICAgaWYgKHR5cGVv
ZiAoZnVuY3Rpb24gKCkge30pICE9PSAnZnVuY3Rpb24nKQorLy8gICAgICAgdGhyb3cgJ1dyb25n
IHR5cGUnOworLy8gfQorLy8gIHRlc3RDYXNlKHR5cGVvZiAoKT0+e30sICJmdW5jdGlvbiIsICJF
cnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMtIiArIGkpOwor
CisvLyAgdGVzdENhc2UodHlwZW9mICgoYikgPT4ge2IgKyAxfSksICJmdW5jdGlvbiIsICJFcnJv
cjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzQiKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhOTBiOGYzYTFkOTVmYzQzYmRlZWJlMzQ1N2NhYTY0ZDFlNmI3YTAyLi5mMWQxYjhmMTUwMGFk
Y2NlOGI3M2M2ODg1YzgwNTg4M2M5NjcwNTEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUt
MDgtMTIgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1bmN0
aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2YgdGhpcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0OTU2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJp
bmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJpbmQu
aHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9h
cnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tdHlwZW9mLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVz
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanM6
IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5q
czogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2Yu
anM6IEFkZGVkLgorCiAyMDE1LTA4LTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVkdWNlIGZsYWtpbmVzcyBvZiBpbnNw
ZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmIzMjZjY2JiNGUx
NGM2ODlkZDdkOTM4M2NjNWJjOTRmZjdmMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
ZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBk
dXJpbmcgaW52b2tlIGJpbmQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
ZC55KCkuYmluZChlLCAnbGV5JykoKSBpcyAnYmFybGV5JworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tYmluZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1i
aW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI5YWNiMmJjOGZkNTA0YzY4ZjA0NDVhNmVhYzRhNmExNDU0
YWJhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmlu
ZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWMwNzdmOTk3OWFjZjQ1ZTE2Yjk5NjU3MmQxYWZkZWVkZDU5MTEyNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhp
cyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5CisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmNhbGwoZSkgaXMgJ2ZvbycKK1BB
U1MgZC55KCkuYXBwbHkoZSkgaXMgJ2ZvbycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMxZDhhNDdlMzBiNmE4NzQ5ZWM1YjdlNzgzYzZhOWVjMzEzMmQyZDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTY3MDZmZmYxN2MyMTIzODUzNjQwYmIyYTRlYjE3ZDYzZTFhMzcy
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cg
ZnVuY3Rpb24gbm8gY29uc3RydWN0b3IKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNpbXBsZUFy
cm93RnVuY3Rpb24oKScpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3Iu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMGMwYjlhOWNkZDRkOGJkZmE2MjQxY2I2YmVmYmYwNGNjOTU4MzBm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I2NmZjMjg4
Y2FjYmQ5YzkzN2M5NzFjMmJkNmI2OGU2NjRhOTQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5k
IG9mIHRoaXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC5nZXROYW1l
KCkgaXMgZC5uYW1lCitQQVNTIGQuZ2V0TmFtZUhhcmQoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXRO
YW1lTmVzdGluZygpKCkoKSBpcyBkLm5hbWUKK1BBU1Mgb2JqLm1ldGhvZCgpKCdjb3JyZWN0Jykg
aXMgJ29iakNvZGUtbmFtZS1jb3JyZWN0JworUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBp
cyAnbmV3T2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3Qu
bWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnaW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFT
UyBkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ25ld0ludGVy
bmFsT2JqZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5j
ZSBpcyB0cnVlCitQQVNTIG93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2JqIGlzIHRydWUK
K1BBU1MgZmFrZS5zdGVhbCgpID09PSBvd25lck9iaiBpcyB0cnVlCitQQVNTIHJlYWwuYm9ycm93
KCkoKSA9PT0gcmVhbCBpcyB0cnVlCitQQVNTIGFycm93RnVuY3Rpb24oJy10aGlzJykgaXMgInJp
Z2h0LXRoaXMiCitQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODFlYTIyYTc2ZmRmOGJmZjVlNzJlNTFiNzc5NGIzZTM0N2QxNjQyYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLW90aGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90
aGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNTJlNWUzN2M2OTE1ZjM4MjNlMjliMjBh
OTRkZjUzZDA4YzAwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyBmb3IgRVM2
IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKHNpbXBs
ZUFycm93RnVuY3Rpb24pIGlzIEZ1bmN0aW9uLnByb3RvdHlwZQorUEFTUyBzaW1wbGVBcnJvd0Z1
bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzaW1wbGVBcnJvd0Z1bmN0
aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1vdGhlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3ZjhiMDBlNDYwNTVlZTZmYWU1YzFlODI4OWVm
ZWUxZjExMDkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1vdGhlcnMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10
ZHotZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3YWY2Y2Q4NjAwZTg4NDEyNzdjNDk0YTk4OTAyMjQ1MmVhNmFi
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlv
biB0ZXN0IHRkegorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpc1JlZmVy
ZW5jZUVycm9yIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRk
ei5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mOGVmMTcxY2I4MjBiZWIzY2I0YTdkM2ZjNDhlNWM1M2ZjMTE5MjZkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApAQCAtMCwwICsxLDEw
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi10ZHouanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZmIy
Y2U5NjRiZDAzMzIxYjgzMmNiODdiYmFlMGNhNTM0OWMxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitQQVNTIHR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBl
b2YgYWYyID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoKT0+e30pID09PSAn
ZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rp
b24nIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMGFjYWFhMWE0ZTRkMGU0Y2IzZDA3NjVlMzczZmVkYjc0MzgwZTAxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApAQCAtMCwwICsx
LDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi10eXBlb2YuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlYjU1MmY4MGY2NjFkZTNiYWI1MjA5YzcyZGRjZjUwMjEwMDM0NWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2Fs
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24g
dGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwu
aHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjNkODQ1NGJmZjYxODJlNjFjYmViMGI5ZWUxMzNmZTg3MzExMmJmYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0
bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI0Yzg0Mjc2ZTcxMDg3Nzg2YzU5
NDBhODIyYmNjNmY5N2MwNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTUgQEAK
K3ZhciBhZiA9IChhLCBiKSA9PiBhICsgYjsKKworbm9JbmxpbmUoYWYpOworCitmdW5jdGlvbiBi
YXIoYSwgYikgeworICAgIHJldHVybiBhZihhLCBiKTsKK30KKworbm9JbmxpbmUoYmFyKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gYmFy
KDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3M2MzYjVlMGNhNzkx
Nzk0ZjI1MTY5YTkxY2I0YTdkYzliMjhjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBA
QAordmFyIGZlID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyBiO30KKworbm9JbmxpbmUo
ZmUpOworCitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBmZShhLCBiKTsKK30KKwor
bm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUz
ZjA4ZTk2NmM3OTRjYmFmOWFkNGEzYWRiNGU5OTc5YzAyYWMyYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKQEAgLTAs
MCArMSwxMiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRo
aXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZCcpOworCit2YXIgZCA9
IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCAr
IHo7IH0KK307CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKworc2hvdWxkQmUoImQueSgpLmJp
bmQoZSwgJ2xleScpKCkiLCAiJ2JhcmxleSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41Yzg4OGY5MTFiZjFjNDRkMzg5ZDBhM2QyMTg0NjgzNDg0YjZm
OTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDEzIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGlu
dm9rZSBjYWxsJmFwcGx5Jyk7CisKK3ZhciBkID0geworICB4IDogImZvbyIsCisgIHkgOiBmdW5j
dGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmFy
IiB9OworCitzaG91bGRCZSgnZC55KCkuY2FsbChlKScsICInZm9vJyIpOworc2hvdWxkQmUoJ2Qu
eSgpLmFwcGx5KGUpJywgIidmb28nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
Y29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWZhZDA3Njg0N2JmZjQ5MjlmNzgwNzc2NWY5
OTBiNzM3M2NkZjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw3IEBACitkZXNjcmlw
dGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcicpOworCit2
YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitzaG91bGRUaHJvdygnbmV3IHNp
bXBsZUFycm93RnVuY3Rpb24oKScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1NmExNTUzMGYzNGNjMzA4
YWNlNmIwZmFhNGNmZTdjMWU5NzhjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzCkBAIC0wLDAg
KzEsNjcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGxleGlj
YWwgYmluZCBvZiB0aGlzJyk7CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9
IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlz
LmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOworICB0aGlz
LmdldE5hbWVOZXN0aW5nID0gKCkgPT4gKCkgPT4gKCkgPT4gdGhpcy5uYW1lOworfQorCit2YXIg
ZCA9IG5ldyBEb2coIk1heCIpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZSgpJywgJ2QubmFtZScpOwor
c2hvdWxkQmUoJ2QuZ2V0TmFtZUhhcmQoKScsICdkLm5hbWUnKTsKK3Nob3VsZEJlKCdkLmdldE5h
bWVOZXN0aW5nKCkoKSgpJywgJ2QubmFtZScpOworCit2YXIgb2JqID0geworICBuYW1lICAgOiAn
b2JqQ29kZScsCisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKHZhbHVlKSA9
PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOworICB9Cit9OworCitzaG91bGRCZSgib2Jq
Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ29iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworb2JqLm5h
bWU9J25ld09iakNvZGUnOworc2hvdWxkQmUoIm9iai5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidu
ZXdPYmpDb2RlLW5hbWUtY29ycmVjdCciKTsKKwordmFyIGRlZXBPYmogPSB7CisgIG5hbWUgOiAn
d3JvbmdPYmpDb2RlJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFs
T2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhp
cy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9Oworc2hvdWxkQmUoImRlZXBPYmou
aW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInaW50ZXJuYWxPYmplY3QtbmFt
ZS1jb3JyZWN0JyIpOworCitkZWVwT2JqLmludGVybmFsT2JqZWN0Lm5hbWUgPSAnbmV3SW50ZXJu
YWxPYmplY3QnOworCitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgn
Y29ycmVjdCcpIiwgIiduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK3ZhciBm
dW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0
aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKwor
c2hvdWxkQmUoImluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2UiLCAidHJ1ZSIpOworCit2YXIg
b3duZXJPYmogPSB7CisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4g
dGhpczsKKyAgfQorfTsKKworc2hvdWxkQmUoIm93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVy
T2JqIiwgInRydWUiKTsKKwordmFyIGZha2UgPSB7IHN0ZWFsIDogb3duZXJPYmoubWV0aG9kKCkg
fTsKK3Nob3VsZEJlKCJmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFy
IHJlYWwgPSB7IGJvcnJvdyA6IG93bmVyT2JqLm1ldGhvZCB9Oworc2hvdWxkQmUoInJlYWwuYm9y
cm93KCkoKSA9PT0gcmVhbCIsICJ0cnVlIik7CisKK3ZhciBhcnJvd0Z1bmN0aW9uID0geyB4IDog
InJpZ2h0IiwgZ2V0QXJyb3dGdW5jdGlvbiA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlz
LnggKyB6OyB9fS5nZXRBcnJvd0Z1bmN0aW9uKCk7Cit2YXIgaG9zdE9iaiA9IHsgeCA6ICJ3cm9u
ZyIsIGZ1bmMgOiBhcnJvd0Z1bmN0aW9uIH07CisKK3Nob3VsZEJlKCJhcnJvd0Z1bmN0aW9uKCct
dGhpcycpIiwgJyJyaWdodC10aGlzIicpOworc2hvdWxkQmUoImhvc3RPYmouZnVuYygnLXRoaXMn
KSIsICcicmlnaHQtdGhpcyInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTc5OTMxYzNkZWJjYjUwMjdhZDE0ZmQxNTQ3ZTVhYmEwMzhiNGIxMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyBJbnNwaXJlZCBieSBtb3ppbGxhIHRl
c3RzCitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBpbnN0YW5jZW9m
IGFuZCB0eXBlb2Ygb3BlcmF0b3JzJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkg
PT4ge307CisKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5j
dGlvbikiLCAiRnVuY3Rpb24ucHJvdG90eXBlIik7CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5j
dGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRydWUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJv
d0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIiwgInRydWUiKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFmNThmYzY1MTNlZGFiZGUxZGQ2NTA3
NDk2YWU4NjRiNjExZmZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNjcmlwdGlv
bignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRkeicpOworCit2YXIgQSA9IGNs
YXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFj
Y2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsK
KyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsK
KyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgaXNSZWZlcmVuY2VFcnJvciA9
IGZhbHNlOwordHJ5IHsKKyAgICAgbmV3IEIodHJ1ZSk7Cit9IGNhdGNoIChlKSB7CisgICAgaXNS
ZWZlcmVuY2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKK30KKworc2hvdWxk
QmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOworCit2YXIgZSA9IG5ldyBCKGZhbHNlKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJhYTI2
OTBmZGE4MmM2YTMyOGVhMGFiYzM1NWQyZDhiZTNkNDhkNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCww
ICsxLDEyIEBACit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIgYWYyID0gKGEpID0+IHthICsgMX07
CisKK3Nob3VsZEJlKCJ0eXBlb2YgYWYxID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hv
dWxkQmUoInR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgi
dHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5
cGVvZiAoKGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259135</attachid>
            <date>2015-08-16 23:47:22 -0700</date>
            <delta_ts>2015-08-17 00:12:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817094721.patch</filename>
            <type>text/plain</type>
            <size>178456</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uYTcxOTExMjdkMDQ0YmFiMmUwM2Y2NTJjYjAx
MTdlYTdhMmFkYzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25B
cmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVu
dHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVj
bCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAg
ICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2
YWx1ZXMgaW50byB0aGUKQEAgLTk1NSw2ICs5NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxpZiBD
UFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICs5OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0K
KyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAg
ICB7CiAgICAgICAgIG1vdmVEb3VibGUoYXJnNCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAg
LTEwMDcsNiArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNlbHNlCisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBh
c3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBhcmcxKTsKQEAgLTEwNTIsNiArMTA1MywxNCBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlm
IC8vIENQVShBUk1fSEFSREZQKQogI2VsaWYgQ1BVKE1JUFMpCisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlVyhHUFJSZWcgYXJnMSwgVHJ1c3RlZElt
bVB0ciBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NH
UFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFy
ZzMpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgfQorICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJS
ZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKQEAgLTEyMTMsNiArMTIyMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJn
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHVi
QXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJn
MSwgYXJnMyk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IDAzOGY1ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3ZmYyZWJhNDBl
YjQuLmJiYzg1MjNmNWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9lbmQpCiAgICAgICAgIERFRklO
RV9PUChvcF9lbnRlcikKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZSkKKyAgICAgICAg
REVGSU5FX09QKG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dl
dF9ieV9pZF9vdXRfb2ZfbGluZToKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVy
KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9u
ZXdfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAog
ICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25l
d19yZWdleHApCiAgICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCA4NDExYTdlZjY1YTljNmJkY2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2Li43NzFmZDli
NDA2NWJkZDE3MjJjMGU3MmI4ODcyMDhlYzYyZjFlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKQEAgLTQ5OCw2ICs0OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX2VuZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRf
YnlfaWQoSW5zdHJ1Y3Rpb24qKTsKQEAgLTUzOSw2ICs1NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X29iamVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4
cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7
CkBAIC02NTMsNiArNjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJp
Z2h0U2hpZnQoSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVt
aXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5j
RXhwckNvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25D
aGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVz
b2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hl
Y2tzLCB1bnNpZ25lZCBkZXB0aCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRXaXRoU3RydWN0dXJl
Q2hlY2soaW50IHNjb3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAgLTcyMyw2ICs3
MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQUlJlZywgQnlW
YWxJbmZvKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRUpzYywgR1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQywgaW50LCBHUFJSZWcsIEpTQ2VsbCop
OworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKc2NDSiwgaW50LCBHUFJSZWcsIEpTQ2VsbCosIEdQUlJlZyk7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIEdQUlJl
ZywgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRUpzY1osIGludCwgR1BSUmVnLCBpbnQzMl90KTsKICNpZiBVU0UoSlNW
QUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ZDY4Njkw
MDgxYzk5NmQ3ZTMzYmYzYmQyNWRjYzU4YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcyNDk1NmJmNTg0
OTFiM2RlNzgzYTZmY2RjMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aApAQCAtMjcxLDYgKzI3MSwxMiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYQogICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24s
IGRzdCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJl
ZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQoreworICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsKKyAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9u
LCBkc3QpOworfQorICAgIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lk
KiBwb2ludGVyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKHBvaW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmlu
ZGV4IDU5OGQ0ZWM5OWMxZDE4ZTZjMzk2MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4M2JjYzhjNDVk
ZTY2NmY3M2M5ZTkxMWY1MTQyOWYzNWViMTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNp
bmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTY3Myw2ICs2
NzQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDAp
OwogfQorICAgIAordm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0
cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
QXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3Rv
cmVDZWxsKGRzdCwgcmVnVDApOworfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NjIsMjYgKzk3MSw0NSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9u
KTsKK30KKyAgICAKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cDsKKyAgICAKICAgICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwogICAgIGludCBkc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
MCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5k
ZWZpbmVkU2NvcGUgPSBicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVy
LCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dG
dW5jdGlvbikKKyAgICAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQsIHJlZ1QxKTsKICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCB0YWdGb3IoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5l
ZCgpKTsKICNlbmRpZgotCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVmaW5l
ZFNjb3BlLmxpbmsodGhpcyk7Ci0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0g
bV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBm
dW5jRXhwcik7CisgICAgICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBt
X2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
OworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyAgICBl
bHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVn
VDAsIGZ1bmN0aW9uKTsKICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0KKyAgICAKK3ZvaWQgSklU
OjplbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwor
fQorICAgIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
aW5kZXggOTFjMDBlM2ZkNDVlMDk3ZTNiYjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4uYjM5YWUxZDFh
MzA2ODAzNDNlOWZkOWE3MjMxNDI5YjZlNTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
QEAgLTkyMiw2ICs5MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsK
IH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0
YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dG
dW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxs
KGRzdCwgcmVnVDApOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggYjVmOWUzNjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMwMjRjZGNkYjkz
Yi4uNGZmMGUzZDE1MGI0MjYwZWY5NGIyMWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAj
aW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNB
cnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
QEAgLTk0Miw2ICs5NDMsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGMKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0
aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVy
YXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29s
IGlzSW52YWxpZGF0ZWQpCit7CisgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJp
dHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4
ZWN1dGFibGUpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgICAgICAKKyAgICBKU0Fycm93RnVuY3Rpb24q
IGFycm93RnVuY3Rpb24gID0gaXNJbnZhbGlkYXRlZAorICAgICAgICA/IEpTQXJyb3dGdW5jdGlv
bjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKQorICAgICAgICA6IEpTQXJy
b3dGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyb3dGdW5j
dGlvbik7Cit9CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNT
dGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0
aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1
ZSk7Cit9CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fy
cm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5j
dGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4g
b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgdGhpc1ZhbHVlLCBmYWxzZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKaW5kZXggM2Q4M2Y1OTBkY2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJjYmU4NGY5Yi4u
YTY3Y2FhY2IzMmZiMjE1OGE5YzA1ZTZhNTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNT
dGF0ZSosIHZvaWQqLCB2bwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
Sl9KSVRPcGVyYXRpb25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiAoKkpfSklUT3BlcmF0aW9uX0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7
Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9F
SnNjQ0opKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU1Mp
KEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
OwpAQCAtMjg4LDYgKzI4OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3QXJyYXlCdWZmZXJXaXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4
ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVj
U3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25IYW5kbGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9J
TlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDllZjliMDEzOGQ5
YTgzZjFlYy4uYTJhNmIyYjExYzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJWTS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKaW5kZXggNTViODFlZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJiNDFmNTY4NWQ3
Zi4uMmNkOWY2ZWI4ZDY4Mzg2ODcwOTdjNGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0zOSw2ICszOSw3
IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0Nh
bGxlZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5f
VFdPKHBjLCBfX3JjZl9leGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IH0gd2hpbGUgKGZhbHNlKQotCisgICAgCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQg
ZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTAxMywx
MiArMTAxNCwyNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5U
X0JFR0lOKCk7CisgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVy
YW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
ID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKLSAgICBKU0Z1bmN0
aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpOworICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHBy
KHBjWzNdLnUub3BlcmFuZCk7CiAgICAgCi0gICAgTExJTlRfUkVUVVJOKGZ1bmMpOworICAgIExM
SU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1Bf
Qyg0KS5qc1ZhbHVlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVy
YW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAg
IExMSU5UX1JFVFVSTihKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUsIHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhv
c3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNh
bGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTA5Niw3ICsxMTA5LDcgQEAg
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVl
LCBJbnN0cnVjdGlvbiogcGMsIENvZGUKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2Nv
cGVVbmNoZWNrZWQoKTsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAKKwogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
MDsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOGNjNjlhOTYwMGJiZjlkODUz
MzlkNjA5NTk1ZjY3YzY4ZDA3NjcxYi4uM2YxZGFhODEyYjcwMmUyM2M2YWFlZjlmZDdjMDY3MWVl
MjAyNWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKQEAgLTk3LDYgKzk3LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9zd2l0Y2hfY2hhcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3
aXRjaF9zdHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
ZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4
cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5j
X2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCBjOTEwNjE3ZWQ4MzRiNzRjOWYyZjhlZTRiMjY4N2M4YjljZmUzYzdjLi43M2ZjNTg4
NDQyZGRjNGI5Y2ZhN2I4OGYwMDRjYTg2NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTgzLDYgKzEx
ODMsMTAgQEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25l
d19hcnJvd19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDUpCiAK
IF9sbGludF9vcF9jYWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5k
ZXggZTkwZWNlZGZhNzMwOTgyZmVlZjcxZWViMGNlYTY0MzgyMzRhNjkxYy4uN2VmNmI4N2MxNzBh
ZDA4M2IxZjUyOWRhODgzNmMwMGNkYTY0YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIzNzMs
MyArMjM3MywxMiBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURv
bmU6CiAgICAgZGlzcGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0sIHQwCisgICAgbG9hZGkgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQw
CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggZDk0NTVmNzVjN2I2NjQyZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1Yi4uZDIxNTJh
MmYyNzdhZGU1ODc5NzZhMWMzZjEyMDIzNzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyMjYs
MyArMjIyNiwxMSBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURv
bmU6CiAgICAgZGlzcGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBs
b2FkcCBKU0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBh
ZDU3OGI5NGE2Ny4uODA2ZGI1MjMwM2Q1YWQzYTcxODgxMjlmODhiZDc2NGM2YjUwZWVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOSArMzYx
LDE5IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
KyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRp
b24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAg
aW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsK
KyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAg
ICAgeworICAgICAgICB1c2VzVGhpcygpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1f
c291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0
aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5i
b2R5U3RhcnRDb2x1bW4pOwotCi0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3ICht
X3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwg
ZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAq
ZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBm
dW5jdGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9u
SW5mby5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zm
c2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0ZTEyODg0OGVh
OGI0M2ZkODYzNjk3NGNiOTk3YzM3ZGIuLmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0M2JjYmExOTY5
M2FkYmQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCkBAIC04OTAsMTMgKzg5MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIAor
ICAgIGlubGluZSBCYXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRh
ZGF0YSkKICAgICB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBp
ZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgRnVuY0V4cHJO
b2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlv
biwgaWRlbnQsIG1fbWV0YWRhdGEsIHNvdXJjZSkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5l
IEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRh
ZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgbV9tZXRhZGF0YShtX21ldGFkYXRhKQpAQCAtOTA0LDYgKzkx
MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2lu
Zyhzb3VyY2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKKyAgICBpbmxp
bmUgQXJyb3dGdW5jRXhwck5vZGU6OkFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJh
c2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAg
eworICAgIH0KKwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIGlubGluZSBDbGFz
c0RlY2xOb2RlOjpDbGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBjbGFzc0RlY2xhcmF0aW9uKQogICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGNm
NGZlNDUwYTkyNDk1MDRmMzBiYTg1YTI2NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUzMzA1YzRhMGMy
MWM3MzM4ODM5YzI5ZjIzYzc0ZGU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9u
TWV0YWRhdGFOb2RlKAogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1
bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFy
dCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlKQor
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAg
IDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1u
KQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw2ICsxNjMsNyBAQCBG
dW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9w
YXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RD
b250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb25zdHJ1Y3RvcktpbmQpKQorICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCmluZGV4IDFkNmIwM2Q3NzY2Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQuLjg3
MzY2OGVjMzdiNDI3YjkyMDY0OWRlMzA2ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNF
eHByTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0NvbW1hTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1NpbXBsZUFycmF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzQWRkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDksNyArMTgxMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAg
ICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgICAgICAgICBD
b25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYs
IGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzUsNiAr
MTgzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5T
dHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICAgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiAg
ICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUs
IGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2
MCw2ICsxODYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBt
X3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAg
ICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKKyAgICAgICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUg
ZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKQEAgLTE4ODksMTggKzE4OTIsMzUgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBj
bGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJh
c2VGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAg
QmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQog
CisgICAgcHJvdGVjdGVkOgorICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0
YTsKKyAgICB9OworCisKKyAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgQmFzZUZ1bmNF
eHByTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29u
c3QgU291cmNlQ29kZSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OwogCi0gICAgICAgIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBtX21ldGFkYXRhOworICAgIGNsYXNzIEFycm93RnVuY0V4cHJOb2RlIDogcHVibGlj
IEJhc2VGdW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQXJyb3dGdW5jRXhwck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVu
Y0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICNp
ZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCBhZWU3MGI2YTczMjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxLi5m
NTA4MTRlN2IxNDJhYjUzMDBkODRhNGI3MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkJvCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5
VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUp
CiB7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFy
ZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGlmIChib2R5VHlwZSA9PSBTdGFu
ZGFyZEZ1bmN0aW9uQm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5Qmxv
Y2spIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24s
IHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwg
Y29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9r
ZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25z
dHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NjIsNyArMTU2Myw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkJvCiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1l
bnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5k
YXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlv
biIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVu
c2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1l
dGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25N
ZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBh
cnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE3MzcsNyArMTczOCw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFz
c0NvbnN0cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
LQorICAgIAogICAgIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsK
ICAgICAKICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2Ug
Y2FuIHVzZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9m
IHRoZSBmdW5jdGlvbi4KQEAgLTE3NTYsMTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVl
QnVpbGQKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2Rh
dGEubGluZVN0YXJ0T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0
IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLQor
ICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5cGUgPT0gQXJy
b3dGdW5jdGlvblBhcnNlVHlwZTsKKyAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5
ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2Nh
dGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRD
b2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9k
ZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7Cisg
ICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hl
ZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICAK
ICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNh
Y2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6
TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbklu
Zm8oVHJlZUJ1aWxkCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xv
Y2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5m
by0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1
bmN0aW9uUGFyc2VUeXBlKQorICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/
ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5j
dGlvbkJvZHlCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgKaW5kZXggMDc2MGMxOWViMTYzNmRiMjFhMTc5NjEyYTU0OTZlMTljZmQxYmIwNy4uZGM1
NjFmOWIxYTZkYTM2NDNiODI3MmZlN2IxMmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJs
aWM6CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
LCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5k
aWYKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1
cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2ws
IGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9k
ZSkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQs
IFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1
cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGlu
dCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3Vs
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRl
eCAwYWIxNjcyMTE2ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2OTRmMjdhNDU4
NzNiMmEyMTY3YTM2OTYzNWQzZTU5NDVhYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0cjxDb2RlQmxv
Y2s+IFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6
IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9iYWxPYmpl
Y3QtPmhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPQotICAgICAgICBleGVjdXRh
YmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKAotICAgICAgICAgICAgKnZt
LCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUs
IGVycm9yKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2Nr
Rm9yKCp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCBlcnJvciwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29y
ZFBhcnNlKGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVj
dXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmly
c3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAg
aWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewogICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dF
eGNlcHRpb24oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5k
ZXggYmNlMjQyOGNiYzEwMWRkYTZjYjEwMWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2YyYmRlODhjNWE2
ZTkxNjc2MDM2ZWUyN2Q3NDRmNzY0NTM5Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9
CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogICAgIHVu
c2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5u
dW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsg
fQpAQCAtNTMwLDcgKzUzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5m
dW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rp
b24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NTFjMjYwZTE2YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApA
QCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2Fj
aGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRl
ICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5j
dGlvbjo6c19pbmZvID0geyAiQXJyb3dGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNBcnJvd0Z1bmN0aW9uKSB9OworCit2b2lkIEpTQXJyb3dGdW5jdGlv
bjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0
aW9uKj4oY2VsbCktPkpTQXJyb3dGdW5jdGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOworfQorCitK
U0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMp
Cit7CisgICAgSlNBcnJvd0Z1bmN0aW9uKiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlv
bigpLT5ub3RpZnlXcml0ZSh2bSwgcmVzdWx0LCAiQWxsb2NhdGluZyBhbiBhcnJvdyBmdW5jdGlv
biIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1
bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29w
ZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpCisgICAg
LCBtX2JvdW5kVGhpcyh2bSwgdGhpcywgYm91bmRUaGlzKQoreworfQorCitKU0Fycm93RnVuY3Rp
b24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSog
c2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEFTU0VSVChleGVjdXRhYmxlLT5zaW5n
bGV0b25GdW5jdGlvbigpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgcmV0dXJuIGNyZWF0
ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQgSlNBcnJvd0Z1
bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSlNBcnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyb3dGdW5j
dGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKK30KKworQ29u
c3RydWN0VHlwZSBKU0Fycm93RnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYpCit7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyb3dGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJv
d0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFj
OTdmNWIyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyb3dGdW5jdGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQWxla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0Fycm93RnVuY3Rp
b25faAorI2RlZmluZSBKU0Fycm93RnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAor
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFz
cyBMTEludERlc2lyZWRPZmZzZXRzOworICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVi
bGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19K
SVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNs
YXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNBcnJvd0Z1
bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1
ZSk7CisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVh
bGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBK
U1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgCisgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkp
OworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTQXJyb3dGdW5jdGlvbik7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykK
KyAgICB7CisgICAgICAgIEpTQXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0Fycm93RnVuY3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24o
dm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgICAgICBBU1NFUlQoZnVuY3Rp
b24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1
Y3REYXRhJik7CisKKyAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlz
LmdldCgpOyB9CisgICAgCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKyAgICAKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9i
YWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZz
ZXRPZlRoaXNWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
QXJyb3dGdW5jdGlvbiwgbV9ib3VuZFRoaXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0
aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJv
dGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgCitwcml2YXRlOgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAKKyAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAorICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiBtX2JvdW5kVGhpczsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEpTQXJyb3dGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKaW5kZXggMGI4N2Q3NWM5MTQ1MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBmMDkzZS4uOTI4
MzUwZTI0NzhjNDVmN2JmN2U4YWE4NGM5ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTQxLDYgKzE0MSw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSopOworICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAg
ICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2ZTVjMTE2NGNi
MjdmYTVlNDE2MThiNGI4MTQyZjAyLi5mMDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUyN2I2M2I2NDRh
ODg0NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b25JbmxpbmVzLmgKQEAgLTQ0LDYgKzQ0LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0
aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzCiAg
ICAgLCBtX3JhcmVEYXRhKCkKIHsKIH0KKyAgICAKK2lubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0
aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJl
KQorICAgICwgbV9leGVjdXRhYmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQorICAgICwgbV9yYXJl
RGF0YSgpCit7Cit9CiAKIGlubGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246Ompz
RXhlY3V0YWJsZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3
YzIyOWFkMDQyMy4uZGExYWMyNWFhYjAwODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMwZmYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0FycmF5SXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5k
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmgiCkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgZXhlYy0+c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsK
IAogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBt
X2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAg
IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb24odm0sIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0
aW9uTmFtZU9mZnNldCkpOwogICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSkpOwpAQCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCA5OTg2YmNmNjI0NWUyY2M0NjgyMGIxMzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEyYjI5MzA1NWU5
YmFlMzBiYjczZmQ5MDE1YmMwMDM4MzYzYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBt
X2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZh
dGVOYW1lU3RydWN0dXJlOwpAQCAtNDYyLDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1
cmUqIGNhbGxlZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5h
bWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVt
YmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRk
ei1lcnJvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMWUzYTY2ZWE5MmYwMzBkYjM3NzlhNGMzZTQwMmU3YzExOGQxZDgxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpz
CkBAIC0wLDAgKzEsNDYgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIG4gPSAxMDAwMDAwOworCitm
dW5jdGlvbiBzaG91bGRUaHJvd1REWihmdW5jKSB7CisgICAgdmFyIGhhc1Rocm93biA9IGZhbHNl
OworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
aWYgKGUubmFtZS5pbmRleE9mKCJSZWZlcmVuY2VFcnJvciIpICE9PSAtMSkKKyAgICAgICAgICAg
IGhhc1Rocm93biA9IHRydWU7CisgICAgfQorICAgIGlmICghaGFzVGhyb3duKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkRpZCBub3QgdGhyb3cgVERaIGVycm9yIik7Cit9CisKK2Z1bmN0aW9u
IGJhcihmKSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAg
ICB2YXIgc2V0ID0gICh4KSA9PiB7IHJlc3VsdCA9IHg7IHJldHVybiB0ZHpQZXJwZXRyYXRvcjsg
fQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAg
ICAgICAgICAgIGJhcihzZXQpOworICAgICAgICAgICAgcmV0dXJuIHRkelBlcnBldHJhdG9yOwor
ICAgICAgICB9CisgICAgfQorICAgIGxldCB0ZHpQZXJwZXRyYXRvcjsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKHNob3Vs
ZFRocm93VERaKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgYm9v
bCA9ICEoaSAlIDEwMCk7CisgICAgaWYgKGJvb2wpCisgICAgICAgIHNob3VsZFRocm93VERaKCgp
PT4geyBmb28oYm9vbCk7IH0pOworICAgIGVsc2UgeworICAgICAgICB2YXIgcmVzdWx0ID0gZm9v
KGJvb2wpOworICAgICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2lu
ay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNDFiYmUxNDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5YzY1YTRiYTc3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKQEAg
LTAsMCArMSwzNyBAQAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoc2V0KSB7Cisg
ICAgdmFyIHJlc3VsdCA9IHNldCgwKTsKKyAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgcmVzdWx0OworfQorCitmdW5jdGlvbiBm
b28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBpbVVuZGVmaW5lZDsKKyAgICB2
YXIgYmF6OworICAgIHZhciBzZXQgPSAgKHgpID0+IHsKKyAgICAgICAgcmVzdWx0ID0geDsKKyAg
ICAgICAgaWYgKGJheiAhPT0gNTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1
ZTogIiArIGJhejsKKyAgICAgICAgcmV0dXJuIGltVW5kZWZpbmVkOworICAgIH07CisgICAgYmF6
ID0gNTA7CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikg
eworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShm
b28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBm
b28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4
aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
YWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdiMmMyYWQzNDVl
MjZjMjAzNzc4OTBkZjVmMzFmYWYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhp
dC5qcwpAQCAtMCwwICsxLDI1IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcigp
IHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBz
ZXQgPSAoeCkgPT4geyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhp
dCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5s
aW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykg
eworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAw
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
YWN0aXZhdGlvbi1zaW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3OWVjOWVhYTY1
YzU0MTkzMGI5MDQ4MjZlN2EyM2ExM2ZiMmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
cwpAQCAtMCwwICsxLDI0IEBACit2YXIgbiA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoZikg
eyBmKDEwKTsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAg
IHZhciBzZXQgPSB4ID0+IHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIGJh
cihzZXQpOworICAgICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkp
OworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDMyMDg4YWJm
MjZkYWUyYWU3MWEyYWM0YzA1ZDRmMDc3NTVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKQEAgLTAs
MCArMSwxOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdl
ICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsg
IiciOworICB9Cit9OworCit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24o
KSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH0KK307CisKK25vSW5saW5lKGQueSk7CisKK3Zh
ciBlID0geyB4IDogImJheiIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAg
dGVzdENhc2UoZC55KCkuYmluZChlLCAibGV5IikoKSwgImJhcmxleSIsICJFcnJvcjogZnVuY3Rp
b24gYmluZCBzaG91bGRuJ3QgY2hhbmdlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5YzgzYWM1M2E3
ZjZkMzUxOTYyMzIxNGMxZTlmYzYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTgg
QEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4
cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAg
fQorfTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gKCkgPT4gdGhpcy54OyB9Cit9Oworbm9JbmxpbmUoZC55KTsKKwordmFyIGUgPSB7IHggOiAi
YmFyIiB9OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0Q2FzZShkLnko
KS5jYWxsKGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0IGNoYW5nZSB0
aGUgbGV4aWNhbCBiaW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIpOworICAgIHRlc3RDYXNl
KGQueSgpLmFwcGx5KGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBhcHBseSBzaG91bG4ndCBj
aGFuZ2UgdGhlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3OTQ5YmM2YjJj
NzhhYjQ2NTllYThjMmFjNjNkZTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAg
KzEsMjIgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNz
YWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSAr
ICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICIn
IjsKKyAgfQorfTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworbm9J
bmxpbmUoc2ltcGxlQXJyb3dGdW5jdGlvbik7CisKK3ZhciBlcnJvck9uQ3JlYXRlID0gZmFsc2U7
CisKK2ZvciAoaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0cnkgeworICAgICAgIHZhciBmYyA9IG5l
dyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCk7CisgICB9CisgICBjYXRjaCAoZSkgeworICAgICBlcnJv
ck9uQ3JlYXRlID0gdHJ1ZTsKKyAgIH0KKworICAgIHRlc3RDYXNlKGVycm9yT25DcmVhdGUsIHRy
dWUsICJFcnJvcjogTm8gZXhjZXB0aW9uIGR1cmluZyBydW4gbmV3IEFycm93RnVuY3Rpb24iKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGNmYWIyNGM5MWJjNTdjOTU4NzYzMmRmZWM5YTRjOTM3OThlMjE1YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy0xLmpzCkBAIC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9n
KG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZh
bCgidGhpcy5uYW1lIik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4g
dGhpcy5uYW1lKSgpIik7Cit9CisKK25vSW5saW5lKERvZykKKworZm9yICh2YXIgaT0wO2k8MTAw
MDA7IGkrKykgeworICB2YXIgZCA9IG5ldyBEb2coIk1heCIpOworICB0ZXN0Q2FzZShkLmdldE5h
bWUoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCks
IGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVjODE2NGU0OGQw
M2E2N2ViOTJhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBAIC0wLDAgKzEs
MzkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRo
aXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25D
b25zdHJ1Y3RvcigpOworCit0ZXN0Q2FzZShpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlLCB0
cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBh
cnJvdyBmdW5jdGlvbiAjMiIpOworCit2YXIgb2JqID0geworICBtZXRob2Q6IGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworbm9JbmxpbmUob2JqLm1ldGhv
ZCk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmou
bWV0aG9kKCkoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQorCit2YXIgZmFrZSA9
IHtzdGVhbDogb2JqLm1ldGhvZCgpfTsKK25vSW5saW5lKGZha2Uuc3RlYWwpOworCitmb3IgKHZh
ciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UoZmFrZS5zdGVhbCgpID09PSBv
YmosIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2Yg
dGhlIGFycm93IGZ1bmN0aW9uICM0Iik7Cit9CisKK3ZhciByZWFsID0ge2JvcnJvdzogb2JqLm1l
dGhvZH07Citub0lubGluZShyZWFsLmJvcnJvdyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICB0ZXN0Q2FzZShyZWFsLmJvcnJvdygpKCkgPT09IHJlYWwsIHRydWUsICJF
cnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0z
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEwMTkwODZkNTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4OTM5YzA5MmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIg
dGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAn
IiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisK
KwordmFyIG9iaiA9IHsgbmFtZTonb2JqJywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAo
dmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH19OworCitmb3IgKHZhciBp
PTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50
b1N0cmluZygpKSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIp
OworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MSA9IG9i
ai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQxLCAn
b2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNh
bGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5u
YW1lPSduZXdPYmonOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2Fz
ZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ25ld09iai1uYW1lLXRlc3Qn
ICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5z
aWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAw
MDA7IGkrKykgeworICB2YXIgcmVzdWx0MiA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3Ry
aW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcgKyBpLnRvU3Ry
aW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy00LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1YmQzNjNlNGU0NmIwMmQyZjE5YmJlMzg1MDJmNTI4
MjMzYTlmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAtMCwwICsxLDI2
IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkg
eworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBF
eHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7Cisg
IH0KK307CisKKwordmFyIG9iaiA9IHsKKyAgbmFtZTonb2JqJywKKyAgaW50ZXJuYWxPYmplY3Q6
IHsKKyAgICBuYW1lICA6J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgp
IHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9
Cit9OworCitub0lubGluZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKTsKKworZm9yICh2YXIg
aT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0
aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ2ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcg
KyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNp
ZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5pbnRlcm5hbE9iamVjdC5u
YW1lPSduZXdJbnRlcm5hbE9iamVjdCc7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7
CisgICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9T
dHJpbmcoKSksICduZXdJbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMt
NS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NzU0OTRjZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVhY2U2Mjg3NTQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKQEAgLTAsMCArMSw0OCBAQAordmFy
IHNvcnRlZFZhbHVlczsKKwordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBt
ZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0
dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIGFycjogWzEsIDQsIDYsIDMs
IDcsIDBdLAorICBidWJibGVTb3J0OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHsK
KyAgICAgIHZhciB0bXA7CisgICAgICB2YXIgYXIgPSB0aGlzLmFyci5zbGljZSgpOworICAgICAg
dmFyIF9sZW5ndGggPSBhci5sZW5ndGgKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbmd0
aDsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGogPSBpOyBqID4gMDsgai0tKSB7CisgICAgICAg
ICAgaWYgKChhcltqXSAtIGFyW2ogLSAxXSkgPCAwKSB7CisgICAgICAgICAgICB0bXAgPSBhcltq
XTsKKyAgICAgICAgICAgIGFyW2pdID0gYXJbaiAtIDFdOworICAgICAgICAgICAgYXJbaiAtIDFd
ID0gdG1wOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGFy
OworICAgIH0KKyAgfQorfTsKKworbm9JbmxpbmUob2JqLmJ1YmJsZVNvcnQpOworCitmb3IgKHZh
ciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgMywgNywg
MF07CisgICAgdGVzdENhc2Uob2JqLmJ1YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywgIkVycm9yOiB0
aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24g
IzEiKTsKKworICAgIHZhciBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAg
dGVzdENhc2Uoc29ydGVkVmFsdWVzWzBdLCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxs
eSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNiIpOworICAgIHRlc3RDYXNl
KHNvcnRlZFZhbHVlc1s2XSwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzciKTsKKworICAgIG9iai5hcnIgPSBbMSwg
MiwgNCwgNiwgNSwgOCwgMjEsIDE5LCAwXTsKKworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0
KCkoKS5sZW5ndGgsIDksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNp
ZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1ZXMgPSBvYmou
YnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzFdLCAxLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMTIiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTMi
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzQxN2JjN2M4ZjE4MDUzNThiZGJhODViMmNlZjZhNjliNWY0MWVjYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9
IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0
ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24g
RG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4g
IHRoaXMubmFtZTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMSA9ICgpID0+ICgpID0+IHRo
aXMubmFtZTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMiA9ICgpID0+ICgpID0+ICgpID0+
IHRoaXMubmFtZTsKK30KKwordmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKworbm9JbmxpbmUoZC5n
ZXROYW1lKCkpOworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCkpOworbm9Jbmxp
bmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSk7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAw
OyBpKyspIHsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsK
KyAgdGVzdENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCksIGQubmFtZSwgIkVycm9yOiB0
aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24g
IzIiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSwgZC5uYW1lLCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjMyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhp
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxMGEz
MWQ2NzMxYWU2OTc0ZDY2N2VkOGQyNDg3MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRo
aXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNCBAQAordmFyIG4gPSAx
MDAwMDAwMDsKKwordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsK
KworZnVuY3Rpb24gYmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3Vs
dCA9IDA7CisgICAgdmFyIHNldCA9ICh4KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBm
dW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRo
aXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBv
ZiBhcnJvdyBmdW5jdGlvbic7CisgICAgICByZXN1bHQgPSB4OworICAgIH0KKyAgICBpZiAoYikg
eworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIo
c2V0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29u
dGV4dCwgIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2
YXRpb24tc2luay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDMw
NjM3Yzg1YmY5NDIxYWU5Yzk3ZTBkZDdmNmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDM4IEBACit2YXIgbiA9IDEwMDAwMDAw
OworCit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5j
dGlvbiBiYXIoZikgeworICAgIGlmICh0aGlzID09IG5ld0NvbnRleHQpCisgICAgICAgIHRocm93
ICdXcm9uZyBjb250ZXh0IG9mIG5lc3RpbmcgZnVuY3Rpb24nOworICAgIGYoMTApOworfQorCitm
dW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkg
PT4geworICAgICAgcmVzdWx0ID0geDsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9u
IHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAh
PSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93
IGZ1bmN0aW9uJzsKKyAgICB9OworCisgICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7Cisg
ICAgICAgIGlmIChyZXN1bHQgIT0gMTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDog
IiArIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsg
aSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28uY2FsbChuZXdDb250ZXh0LCAhKGkg
JSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFk
IHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3Vi
bGUtYWxsb2NhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg2OWUwMjcxMzljMTY2N2UxMDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEs
MzcgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1
bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworLy8gU2hvdWxk
IGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0Citm
dW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7CisgICAgICAvLyBDaGVj
ayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdD
b250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3Jv
bmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisgICAgfTsKKyAgICBpZiAocCkgewor
ICAgICAgICBjYWxsKGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEp
IHsKKyAgICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsK
KyAgICB9CisgICAgcmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luay5jYWxsKG5l
d0NvbnRleHQsIHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93
ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8v
IEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93
biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFs
bG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAh
PSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2lu
Zy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3
ZGUyOGY2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAt
MCwwICsxLDM2IEBACit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9
OworCisvLyBTaG91bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5
IG5ld0NvbnRleHQKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4gewor
ICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYg
KHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAg
ICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgICAgcmV0
dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsg
fQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0
b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBu
ZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1
bmN0aW9uICMyJzsKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNh
bGwobmV3Q29udGV4dCwgdHJ1ZSwgZmFsc2UpOy8vIFN1YnN0aXR1dGUgdGhpcworICAgIHZhciBy
ZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjog
ZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0
aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVj
ayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3Zh
ciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlz
Cit2YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJv
cjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5r
aW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3ZWEwNzYzNWE0
MTMxY2QyMzExZDQ1MDczNWY1N2MxZGQ5NTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lu
a2luZy1wdXQuanMKQEAgLTAsMCArMSw0NSBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDog
J25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1
YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAg
dmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNv
bnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250
ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9u
ICMxJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5p
bm5lciA9IDQyOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNr
IGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0Nv
bnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9u
ZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsKKworICAgICAgcmV0dXJuIHg7CisgICAg
fTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kp
IHsKKyAgICB2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsvLyB1c2Ug
Y2FsbCB0byBzdWJzdGl0dXRlIGNvbnRleHQKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAg
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3Qg
IiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNo
b3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlv
biBvbiB0aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luay5jYWxsKG5l
d0NvbnRleHQsIHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQg
IT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRo
ZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3Rl
ZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24g
ZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5r
LmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lm
IChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0
IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNlMGM2NThk
M2EyZjc5MjI5ZGY0Zjg5MmNjZGExNTEzYzk0ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAt
MCwwICsxLDE3IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgIH0KK307CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisK
K25vSW5saW5lKHNpbXBsZUFycm93RnVuY3Rpb24pOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDtp
KyspIHsKKyAgIHRlc3RDYXNlKE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0
aW9uKSwgRnVuY3Rpb24ucHJvdG90eXBlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdldFByb3RvdHlw
ZU9mIHZhbHVlIGZvciBhcnJvdyBmdW5jdGlvbiIpOworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJv
d0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3Qg
cmVzdWx0IGZvciBpbnN0YW5jZW9mIG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAg
dGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiwgdHJ1
ZSwgIkVycm9yOiBOb3QgY29ycmVjdCByZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1ldGhvZCBvZiBh
cnJvdyBmdW5jdGlvICAgbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA3YTFmMGE0OWNiMTY4NjNjNTkyMTM2MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVu
LTEwLTEuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVh
bCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAg
ICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2Fz
ICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAg
dmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2
YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAg
ICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmog
PSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUo
KSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7
Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1
dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1
ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0
aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNkYjNjNzBhMWIy
N2MzZGJiNTIzODA5NTVmNTM1M2Q3Njc0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKQEAgLTAs
MCArMSwyNSBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdl
ICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsg
IiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRy
dWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rp
b24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUg
PSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworCisgICAgdmFyIG9iaiA9IG5l
dyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7
CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30K
KwordGVzdENhc2UocnVuKDEpLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJy
b3cgZnVuY3Rpb24gb25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjog
ZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0x
MDAwMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXJ1bi0xMDAwMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFiMDFjYTI3ZDBi
OTcyMGI1N2U4ZDYwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanMKQEAgLTAsMCArMSwyMyBA
QAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsK
KyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhw
ZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9
Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZv
cih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUp
IHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0
aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOwor
ICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFs
c2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAw
MCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rp
b24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYzQyNzFmNGEzMTU5MTYyNWEwYmQzZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1
bi0xMDAwMC0yLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7
CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgewor
ICAgIHZhciBPYmogPSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsK
KyAgICAgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9Owor
CisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9
PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAg
cmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBF
cnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQyODYyYzYyOGUzYjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1MWRlYzEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwyOCBAQAor
ZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlv
biBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7IH07CisgICAgaWYgKHApIHsKKyAg
ICAgICAgY2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7
CisgICAgICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7Cisg
ICAgfQorICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFs
c2UpOworICAgIGlmIChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBv
LnggdG8gYmUgMiBidXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhl
IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sg
dGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIg
ZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBl
eHBlY3RlZCBvLnggdG8gYmUgMyBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4
aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
c2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAxNDBmYTE0OTk3
M2UxN2FhYThkOTEwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEs
MjEgQEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBp
ZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7
Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7
CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7
CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1
dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNo
b3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVu
Y3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1
ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRo
cm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmct
cHV0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3ZWZjNjE4NmJl
MDU3YzNjYmIyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSwyOCBAQAor
ZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB4OworICAgIGlmIChwKSB7
IGlmIChxKSBnLmlubmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geDsKK30K
K25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAg
ICB2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAg
IGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290
ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQg
YmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24g
dGhlIGltcGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2Up
OwordmFyIHJlc3VsdCA9IGYoMTIpOworaWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNo
b3VsZG4ndCBtYXR0ZXIgYXMgaXQgc2hvdWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRl
bHkgY3Jhc2gKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3Vs
dDsKKworLy8gQ2hlY2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRo
ZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVz
dWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5l
ciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ODc0OTIzOTcxOTgzZGNkYTM0YzI2OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRk
ei5qcwpAQCAtMCwwICsxLDI3IEBACit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFz
cyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgewor
ICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhp
czsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQor
ICB9Cit9OworCit2YXIgZXhjZXB0aW9uID0gbnVsbDsKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsg
aSsrKSB7CisgIHRyeSB7CisgICAgICAgbmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJy
b3IpKQorICAgICAgICAgIHRocm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVu
Y2UgZXJyb3IiOworICB9CisKKyAgaWYgKCFleGNlcHRpb24pCisgICAgICB0aHJvdyAiRXhjZXB0
aW9uIG5vdCB0aHJvd24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKKwor
ICB2YXIgZSA9IG5ldyBCKGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc1M2VjMGRkZDU1MTRmYWY0ZDBkMDNjOWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlw
ZW9mLmpzCkBAIC0wLDAgKzEsMjcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWws
IGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAg
dGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAn
IiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFm
MiA9IChhKSA9PiB7YSArIDF9OworCitub0lubGluZShhZjEpOworbm9JbmxpbmUoYWYyKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjEs
ICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzEiKTsKKyAgdGVzdENhc2UodHlwZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3Qg
Y29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCisvL0ZpeG1lOiBTb21l
IGJ1ZyBpbiBpbmxpbmluZyB0eXBlb2Ygd2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFtZXRlcnMgZnRs
LW5vLWNqaXQtbm8taW5saW5lLXZhbGlkYXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1ZSAtLWVuYWJs
ZUZ1bmN0aW9uRG90QXJndW1lbnRzXD10cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAt
LXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBoPXRydWUgLS1t
YXhpbXVtSW5saW5pbmdEZXB0aD0xCisvLworLy8gZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKSAgeworLy8gICBpZiAodHlwZW9mIChmdW5jdGlvbiAoKSB7fSkgIT09ICdmdW5jdGlvbicp
CisvLyAgICAgICB0aHJvdyAnV3JvbmcgdHlwZSc7CisvLyB9CisvLyAgdGVzdENhc2UodHlwZW9m
ICgpPT57fSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMy0iICsgaSk7CisKKy8vICB0ZXN0Q2FzZSh0eXBlb2YgKChiKSA9PiB7YiAr
IDF9KSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjNCIpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUzNDU3Y2FhNjRk
MWU2YjdhMDIuLmYxZDFiOGYxNTAwYWRjY2U4YjczYzY4ODVjODA1ODgzYzk2NzA1MTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNiBAQAorMjAxNS0wOC0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNo
a292QGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFycm93IGZ1bmN0
aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmlu
ZCBvZiB0aGlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQ5NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGpzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGpzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1
bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0
aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5j
dGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0
aW9uLW90aGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwu
anM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQu
anM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwu
anM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0
cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi10ZHouanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qczogQWRkZWQuCisKIDIwMTUtMDgtMTMgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
ZWR1Y2UgZmxha2luZXNzIG9mIGluc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFt
ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIyYjMyNmNjYmI0ZTE0YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2YwMTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMg
c2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZAorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBkLnkoKS5iaW5kKGUsICdsZXknKSgpIGlzICdiYXJsZXkn
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlhY2IyYmM4ZmQ1
MDRjNjhmMDQ0NWE2ZWFjNGE2YTE0NTRhYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNmNDVlMTZiOTk2
NTcyZDFhZmRlZWRkNTkxMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3Ig
RVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52
b2tlIGNhbGwmYXBwbHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55
KCkuY2FsbChlKSBpcyAnZm9vJworUEFTUyBkLnkoKS5hcHBseShlKSBpcyAnZm9vJworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2YTg3NDllYzVi
N2U3ODNjNmE5ZWMzMTMyZDJkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjcwNmZmZjE3YzIxMjM4
NTM2NDBiYjJhNGViMTdkNjNlMWEzNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJykuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5Y2RkNGQ4YmRm
YTYyNDFjYjZiZWZiZjA0Y2M5NTgzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zYjY2ZmMyODhjYWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJv
dyBmdW5jdGlvbiBsZXhpY2FsIGJpbmQgb2YgdGhpcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBkLmdldE5hbWUoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lSGFyZCgp
IGlzIGQubmFtZQorUEFTUyBkLmdldE5hbWVOZXN0aW5nKCkoKSgpIGlzIGQubmFtZQorUEFTUyBv
YmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnb2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIG9i
ai5tZXRob2QoKSgnY29ycmVjdCcpIGlzICduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1Mg
ZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdpbnRlcm5hbE9i
amVjdC1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCko
J2NvcnJlY3QnKSBpcyAnbmV3SW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBpbnN0
YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlIGlzIHRydWUKK1BBU1Mgb3duZXJPYmoubWV0aG9kKCko
KSA9PT0gb3duZXJPYmogaXMgdHJ1ZQorUEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIGlz
IHRydWUKK1BBU1MgcmVhbC5ib3Jyb3coKSgpID09PSByZWFsIGlzIHRydWUKK1BBU1MgYXJyb3dG
dW5jdGlvbignLXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1MgaG9zdE9iai5mdW5jKCctdGhp
cycpIGlzICJyaWdodC10aGlzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWVhMjJhNzZmZGY4YmZmNWU3MmU1MWI3
Nzk0YjNlMzQ3ZDE2NDJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC10aGlzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTE1
MmU1ZTM3YzY5MTVmMzgyM2UyOWIyMGE5NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlw
ZW9mIG9wZXJhdG9ycworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rpb24ucHJvdG90
eXBlCitQQVNTIHNpbXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVl
CitQQVNTIHNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24gaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNjdmOGIw
MGU0NjA1NWVlNmZhZTVjMWU4Mjg5ZWZlZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZjZDg2MDBlODg0
MTI3N2M0OTRhOTg5MDIyNDUyZWE2YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0
cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLXRkei5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2QzZmM0OGU1YzUz
ZmMxMTkyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXRkei5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjJmYjJjZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUwY2E1MzQ5YzFi
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9m
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9PT0gJ2Z1bmN0
aW9uJyBpcyB0cnVlCitQQVNTIHR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFT
UyB0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKChi
KSA9PiB7YiArIDF9KT09PSdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXR5cGVvZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2NWUzNzNmZWRi
NzQzODBlMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXR5cGVvZi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2MWRlM2JhYjUy
MDljNzJkZGNmNTAyMTAwMzQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitK
U1JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJv
d2Z1bmN0aW9uLWNhbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2MWNiZWIwYjll
ZTEzM2ZlODczMTEyYmZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg5MjRjODQyNzZlNzEwODc3ODZjNTk0MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNh
bGwuanMKQEAgLTAsMCArMSwxNSBAQAordmFyIGFmID0gKGEsIGIpID0+IGEgKyBiOworCitub0lu
bGluZShhZik7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGFmKGEsIGIpOwor
fQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkg
eworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNTczYzNiNWUwY2E3OTE3OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24t
Y2FsbC5qcwpAQCAtMCwwICsxLDE1IEBACit2YXIgZmUgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1
cm4gYSArIGI7fQorCitub0lubGluZShmZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAg
cmV0dXJuIGZlKGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYg
KHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1iaW5kLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
YmluZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNTNmMDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0ZTk5NzljMDJh
YzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tYmluZC5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGlu
dm9rZSBiaW5kJyk7CisKK3ZhciBkID0geworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlvbigp
IHsgcmV0dXJuIHogPT4gdGhpcy54ICsgejsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9
OworCitzaG91bGRCZSgiZC55KCkuYmluZChlLCAnbGV5JykoKSIsICInYmFybGV5JyIpOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4ZjkxMWJmMWM0
NGQzODlkMGEzZDIxODQ2ODM0ODRiNmY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTMgQEAK
K2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBi
ZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHknKTsKKwordmFyIGQgPSB7Cisg
IHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9
OworCit2YXIgZSA9IHsgeCA6ICJiYXIiIH07CisKK3Nob3VsZEJlKCdkLnkoKS5jYWxsKGUpJywg
Iidmb28nIik7CitzaG91bGRCZSgnZC55KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmFk
MDc2ODQ3YmZmNDkyOWY3ODA3NzY1Zjk5MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpA
QCAtMCwwICsxLDcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
IG5vIGNvbnN0cnVjdG9yJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307
CisKK3Nob3VsZFRocm93KCduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJyk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZTU2YTE1NTMwZjM0Y2MzMDhhY2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBF
UzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRoaXMnKTsKKworZnVuY3Rpb24gRG9n
KG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZh
bCgidGhpcy5uYW1lIik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4g
dGhpcy5uYW1lKSgpIik7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAoKSA9PiAoKSA9
PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CitzaG91bGRCZSgnZC5n
ZXROYW1lKCknLCAnZC5uYW1lJyk7CitzaG91bGRCZSgnZC5nZXROYW1lSGFyZCgpJywgJ2QubmFt
ZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1lJyk7CisKK3Zh
ciBvYmogPSB7CisgIG5hbWUgICA6ICdvYmpDb2RlJywKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkg
eworICAgIHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7Cisg
IH0KK307CisKK3Nob3VsZEJlKCJvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInb2JqQ29kZS1u
YW1lLWNvcnJlY3QnIik7CitvYmoubmFtZT0nbmV3T2JqQ29kZSc7CitzaG91bGRCZSgib2JqLm1l
dGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworCit2YXIg
ZGVlcE9iaiA9IHsKKyAgbmFtZSA6ICd3cm9uZ09iakNvZGUnLAorICBpbnRlcm5hbE9iamVjdDog
eworICAgIG5hbWUgIDonaW50ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24gKCkg
eyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9CisgIH0K
K307CitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcp
IiwgIidpbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK2RlZXBPYmouaW50ZXJuYWxP
YmplY3QubmFtZSA9ICduZXdJbnRlcm5hbE9iamVjdCc7CisKK3Nob3VsZEJlKCJkZWVwT2JqLmlu
dGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld0ludGVybmFsT2JqZWN0LW5h
bWUtY29ycmVjdCciKTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7
CisgIHRoaXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVu
Y3Rpb25Db25zdHJ1Y3RvcigpOworCitzaG91bGRCZSgiaW5zdGFuY2UuZnVuYygpID09PSBpbnN0
YW5jZSIsICJ0cnVlIik7CisKK3ZhciBvd25lck9iaiA9IHsKKyAgbWV0aG9kIDogZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiAoKSA9PiB0aGlzOworICB9Cit9OworCitzaG91bGRCZSgib3duZXJP
YmoubWV0aG9kKCkoKSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgZmFrZSA9IHsgc3Rl
YWwgOiBvd25lck9iai5tZXRob2QoKSB9Oworc2hvdWxkQmUoImZha2Uuc3RlYWwoKSA9PT0gb3du
ZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgcmVhbCA9IHsgYm9ycm93IDogb3duZXJPYmoubWV0aG9k
IH07CitzaG91bGRCZSgicmVhbC5ib3Jyb3coKSgpID09PSByZWFsIiwgInRydWUiKTsKKwordmFy
IGFycm93RnVuY3Rpb24gPSB7IHggOiAicmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9uIDogZnVuY3Rp
b24oKSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH19LmdldEFycm93RnVuY3Rpb24oKTsKK3Zh
ciBob3N0T2JqID0geyB4IDogIndyb25nIiwgZnVuYyA6IGFycm93RnVuY3Rpb24gfTsKKworc2hv
dWxkQmUoImFycm93RnVuY3Rpb24oJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CitzaG91bGRC
ZSgiaG9zdE9iai5mdW5jKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzk5MzFjM2RlYmNiNTAyN2Fk
MTRmZDE1NDdlNWFiYTAzOGI0YjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8v
IEluc3BpcmVkIGJ5IG1vemlsbGEgdGVzdHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFy
cm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsKKwordmFyIHNp
bXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90
b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5cGUiKTsKK3No
b3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24iLCAidHJ1ZSIp
Oworc2hvdWxkQmUoInNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24i
LCAidHJ1ZSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YWY1OGZjNjUxM2VkYWJkZTFkZDY1MDc0OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCkBAIC0w
LDAgKzEsMjYgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRl
c3QgdGR6Jyk7CisKK3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5k
cyBBIHsKKyAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgaWYgKGFj
Y2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOworICAgICAg
c3VwZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICB9CisgIH0KK307CisK
K3ZhciBpc1JlZmVyZW5jZUVycm9yID0gZmFsc2U7Cit0cnkgeworICAgICBuZXcgQih0cnVlKTsK
K30gY2F0Y2ggKGUpIHsKKyAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVy
ZW5jZUVycm9yOworfQorCitzaG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7CisK
K3ZhciBlID0gbmV3IEIoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5
cGVvZi5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVv
Zi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MmFhMjY5MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAgKzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3Zh
ciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjEgPT09ICdmdW5j
dGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyIs
ICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbiciLCAi
dHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24n
IiwgInRydWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259136</attachid>
            <date>2015-08-17 00:13:05 -0700</date>
            <delta_ts>2015-08-17 00:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817101304.patch</filename>
            <type>text/plain</type>
            <size>178484</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uMGVmYjRkMGRhY2NlOWJkNTI0MWMxODZkNTdh
MDY0NGYyNzAyYWFiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25B
cmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVu
dHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVj
bCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAg
ICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2
YWx1ZXMgaW50byB0aGUKQEAgLTk1NSw2ICs5NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxpZiBD
UFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICs5OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0K
KyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAg
ICB7CiAgICAgICAgIG1vdmVEb3VibGUoYXJnNCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAg
LTEwMDcsNiArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNlbHNlCisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBh
c3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBhcmcxKTsKQEAgLTEwOTUsNiArMTA5NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmc0KTsKICAgICB9CiAjZWxpZiBD
UFUoU0g0KQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZVcoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAg
eworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtb3Zl
RG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CkBAIC0xMjEzLDYgKzEyMjIsMTMg
QEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMykK
KyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOworICAgICAgICBtb3ZlKGFyZzIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogI2VuZGlmCiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAwMzhmNWQ3ZGJj
MDZhZjgxMGY3MWE3ZDQyNDBkN2ZmMmViYTQwZWI0Li5iYmM4NTIzZjViYjIzYTM5MzBjMDk0ZWQ0
ODYyMTc0NjRkODZjNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTksNiAr
MjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZW50ZXIpCiAgICAgICAgIERFRklO
RV9PUChvcF9nZXRfc2NvcGUpCisgICAgICAgIERFRklORV9PUChvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZXFfbnVsbCkKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CkBAIC0yNTks
NiArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9wX25ld19m
dW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVf
T1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmpl
Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAgICAgICBERUZJTkVfT1Ao
b3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODQxMWE3ZWY2NWE5YzZiZGNjMTZi
MzY0ZWIyOGU0MTAxNmI1ODU4Ni4uNzcxZmQ5YjQwNjViZGQxNzIyYzBlNzJiODg3MjA4ZWM2MmYx
ZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTgsNiArNDk4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xvYWRfYXJy
b3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcShJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKik7CkBAIC01Mzks
NiArNTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJy
YXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpAQCAtNjUzLDYgKzY1NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBp
c1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7
CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGludCBzY29w
ZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwogICAgICAg
ICB2b2lkIGVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludCBzY29wZSwgU3RydWN0dXJlKiog
c3RydWN0dXJlU2xvdCk7CkBAIC03MjMsNiArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpK
QnksIGludCwgR1BSUmVnLCBHUFJSZWcsIEJ5VmFsSW5mbyopOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2MsIEdQUlJlZyk7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpzY0MsIGludCwgR1BSUmVnLCBKU0NlbGwqKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0osIGludCwgR1BSUmVnLCBKU0Nl
bGwqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VKc2NaLCBHUFJSZWcsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBpbnQsIEdQ
UlJlZywgaW50MzJfdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKaW5kZXggNWQ2ODY5MDA4MWM5OTZkN2UzM2JmM2JkMjVkY2M1OGIwMzBm
N2Q2Yy4uZmJhYjJjYzBmMzk3MjQ5NTZiZjU4NDkxYjNkZTc4M2E2ZmNkYzIzNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI3MSw2ICsyNzEsMTIgQEAgQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpzY0Mgb3BlcmEKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNj
Q0ogb3BlcmF0aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBHUFJSZWcg
YXJnMikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZElt
bVB0cihjZWxsKSwgYXJnMik7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKK30KKyAgICAKIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VQIG9wZXJhdGlvbiwgaW50IGRzdCwgdm9pZCogcG9pbnRlcikKIHsKICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1OThkNGVjOTljMWQxOGU2YzM5NjIxMTk3
MjBhY2VhYzFlZTJmYTZkLi5jODNiY2M4YzQ1ZGU2NjZmNzNjOWU5MTFmNTE0MjlmMzVlYjExMzQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCkBAIC02NzMsNiArNjc0LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMCk7CiAg
ICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29w
X2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUMCk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1Zh
bHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewpAQCAtOTYyLDI2ICs5NzEsNDUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNf
ZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAgZW1pdE5ld0Z1bmNF
eHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisgICAgCit2b2lkIEpJVDo6ZW1pdE5l
d0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVu
dEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBvcGNv
ZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgCiAgICAgSnVtcCBub3RVbmRlZmlu
ZWRTY29wZTsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24p
CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJhbmNoNjQoTm90RXF1
YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7
CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
KSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwog
I2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRMb2FkUGF5
bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5k
ZWZpbmVkU2NvcGUgPSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSk7CiAg
ICAgZW1pdFN0b3JlKGRzdCwganNVbmRlZmluZWQoKSk7CiAjZW5kaWYKLQogICAgIEp1bXAgZG9u
ZSA9IGp1bXAoKTsKICAgICBub3RVbmRlZmluZWRTY29wZS5saW5rKHRoaXMpOwotCi0gICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhwciA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4cHIpOworICAgICAgICAKKyAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVn
VDAsIGZ1bmN0aW9uLCByZWdUMSk7CisgICAgZWxzZQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAgICAgZG9uZS5saW5r
KHRoaXMpOwogfQotCisgICAgCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJD
b21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKIHZvaWQgSklUOjplbWl0X29wX25l
d19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDkxYzAwZTNmZDQ1ZTA5N2UzYmIxYzM3
OWQ3YzkwM2YwZmQ2MjA5OWEuLmIzOWFlMWQxYTMwNjgwMzQzZTlmZDlhNzIzMTQyOWI2ZTU0NDEw
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC05MjIsNiArOTIzLDE0IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2xvYWRf
YXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdl
dEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUMCk7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkp
LCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30KKwogdm9pZCBKSVQ6
OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGI1ZjllMzY5YTdl
NTdiYWZmMDQ2ZDJhMzY1ZGJjMDI0Y2RjZGI5M2IuLjRmZjBlM2QxNTBiNDI2MGVmOTRiMjFlM2Ni
YTBmMjMxMmZiNDM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC05NDIsNiArOTQzLDMwIEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpj
cmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQoreworICAgIEFTU0VS
VChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygp
KSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAg
ICAgICAgCisgICAgSlNBcnJvd0Z1bmN0aW9uKiBhcnJvd0Z1bmN0aW9uICA9IGlzSW52YWxpZGF0
ZWQKKyAgICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSkKKyAgICAgICAgOiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICAKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycm93RnVuY3Rpb24pOworfQorICAgIAorRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQorewor
ICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rp
b25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOworfQorCiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDNkODNmNTkwZGNmOTE4
MDNhMzQ0OGJhMDgzYjJmOTJiY2JlODRmOWIuLmE2N2NhYWNiMzJmYjIxNThhOWMwNWU2YTUwOTYy
MWIzYjgzZThlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CkBAIC0xMjIsNiArMTIyLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
ICgqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm8KIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQUykoRXhlY1N0YXRl
Kiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQykoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0NKKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNTKShFeGVjU3RhdGUqLCBzaXplX3QsIHNpemVfdCk7
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9F
U3NpQ0kpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgVW5pcXVlZFN0
cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklU
T3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKQEAgLTI4OCw2ICsyODksOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyV2l0aFByb2ZpbGUo
RXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZv
aWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlV2F0
Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDJkNDY3
N2M2NjU1N2JiY2M1ZTRkMTA5ZWY5YjAxMzhkOWE4M2YxZWMuLmEyYTZiMmIxMWM1NjgxZTBiNmU5
NzBjNGZkMTFjOTZlMTlkYjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NlbGwu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiVk0uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDU1YjgxZWUwZjc4
ZmE3YWQ5YTIwZGNkNDc2ODEyYjQxZjU2ODVkN2YuLjJjZDlmNmViOGQ2ODM4Njg3MDk3YzRlY2Nl
NzkyMTU5MTUxMDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUg
IkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE3MSw3
ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgRXhl
Y1N0YXRlKiBfX3JjZl9leGVjID0gKGV4ZWNDYWxsZWUpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgX19yY2ZfZXhlYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKLQorICAgIAogZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAg
ICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwMTMsMTIgKzEwMTQsMjQgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOworICAgIAogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNTY29wZSogc2NvcGUgPSBl
eGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBj
WzNdLnUub3BlcmFuZCk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZnVuY3Rpb24sIHNjb3BlKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwogICAgIAotICAg
IExMSU5UX1JFVFVSTihmdW5jKTsKKyAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoNCkuanNWYWx1ZSgpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBl
eGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIo
cGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNBcnJvd0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCB0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKQEAgLTEwOTYsNyArMTEwOSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0
VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlCiAgICAg
SlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgVk0mIHZtID0g
KnNjb3BlLT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5l
eGVjdXRhYmxlKCk7Ci0gICAgCisKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9z
dEZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCmluZGV4IDhjYzY5YTk2MDBiYmY5ZDg1MzM5ZDYwOTU5NWY2N2M2OGQwNzY3MWIuLjNmMWRh
YTgxMmI3MDJlMjNjNmFhZWY5ZmQ3YzA2NzFlZTIwMjVjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05Nyw2ICs5Nyw3IEBAIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY29uc3RydWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
c2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzkxMDYxN2VkODM0Yjc0YzlmMmY4
ZWU0YjI2ODdjOGI5Y2ZlM2M3Yy4uNzNmYzU4ODQ0MmRkYzRiOWNmYTdiODhmMDA0Y2E4NjczZTQ5
OWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQpAQCAtMTE4Myw2ICsxMTgzLDEwIEBAIF9sbGludF9vcF9uZXdfZnVuY19l
eHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAg
IGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJvd19m
dW5jX2V4cCkKKyAgICBkaXNwYXRjaCg1KQogCiBfbGxpbnRfb3BfY2FsbDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGU5MGVjZWRmYTczMDk4MmZlZWY3MWVlYjBj
ZWE2NDM4MjM0YTY5MWMuLjdlZjZiODdjMTcwYWQwODNiMWY1MjlkYTg4MzZjMDBjZGE2NGI0Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMzczLDMgKzIzNzMsMTIgQEAgX2xsaW50X29wX3Byb2Zp
bGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisKK19sbGlu
dF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIEpTQXJyb3dG
dW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigx
LCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ5NDU1Zjc1YzdiNjY0MmZiOGM4
NzIzZmMxNTJhMzc5MDkxMDNiNWIuLmQyMTUyYTJmMjc3YWRlNTg3OTc2YTFjM2YxMjAyMzcyOWIz
OGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0yMjI2LDMgKzIyMjYsMTEgQEAgX2xsaW50X29wX3Byb2Zp
bGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisKK19sbGlu
dF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCisgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5k
VGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3Jl
cSB0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDdi
NTg3NzMwYTZmMDM1NDQwZGI5MGQ5YzQyNjgwYWQ1NzhiOTRhNjcuLjgwNmRiNTIzMDNkNWFkM2E3
MTg4MTI5Zjg4YmQ3NjRjNmI1MGVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCkBAIC0zNjEsMTkgKzM2MSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5h
bWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAotICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUpCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9k
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJl
bmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAK
ICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQs
IGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbik7
CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxB
U1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKKyAgICAgICAgdXNlc1RoaXMoKTsKICAg
ICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVu
Y3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbklu
Zm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLQotICAgICAgICBG
dW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxv
Y2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwor
ICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBB
cnJvd0Z1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1lLCBmdW5jdGlvbklu
Zm8uYm9keSwgc291cmNlKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5j
dGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRP
ZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3Rv
cnMuaAppbmRleCBhYmI3MmE3NGUxMjg4NDhlYThiNDNmZDg2MzY5NzRjYjk5N2MzN2RiLi5iZGMx
YmVlNzc4NDQ4NzJhYTYyNGQ0NDNiY2JhMTk2OTNhZGJkMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtODkwLDEzICs4OTAsMTkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jRXhwck5v
ZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAKKyAgICBpbmxpbmUgQmFzZUZ1bmNFeHByTm9kZTo6
QmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCiAgICAgewogICAgICAgICBtX21ldGFk
YXRhLT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lvbik7CiAg
ICAgfQogCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAg
ICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2Up
CisgICAgeworICAgIH0KKwogICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRh
dGEobV9tZXRhZGF0YSkKQEAgLTkwNCw2ICs5MTAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25EZWNs
YXJhdGlvbik7CiAgICAgfQogCisgICAgaW5saW5lIEFycm93RnVuY0V4cHJOb2RlOjpBcnJvd0Z1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBpZGVu
dCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAgICB9CisKICNpZiBFTkFCTEUoRVM2X0NM
QVNTX1NZTlRBWCkKICAgICBpbmxpbmUgQ2xhc3NEZWNsTm9kZTo6Q2xhc3NEZWNsTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY2xhc3NEZWNsYXJh
dGlvbikKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjZjRmZTQ1MGE5MjQ5NTA0ZjMwYmE4NWEyNjRlNjdi
YWE5YTU1Yzk2Li4xOGY4NDU1MzMwNWM0YTBjMjFjNzMzODgzOWMyOWYyM2M3NGRlOTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICBQYXJzZXJBcmVu
YSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVk
IGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAot
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAg
ICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRD
b2x1bW4pCkBAIC0xNjMsNiArMTYzLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9u
TWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9p
c0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVj
dG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKKyAgICAgICAg
LCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fY29u
c3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAxZDZiMDNkNzc2NjI5N2Fl
MTc1OTNiYmE5YWVjNTYwOTMyOTMwYzJkLi44NzM2NjhlYzM3YjQyN2I5MjA2NDlkZTMwNjgzODFl
MmNkOGExNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjUsNiAr
MTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vz
c29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAg
ICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0xODA5LDcgKzE4MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgICAg
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3Vy
Y2VQYXJzZU1vZGUpOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291
cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbik7CiAKICAgICAgICAgdm9pZCBmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
b2RlKTsKICAgICAgICAgCkBAIC0xODM1LDYgKzE4MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRP
ZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1
Y3RvcktpbmQpOyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBm
aXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3Rh
cnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4NjAsNiArMTg2Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVk
IG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9y
S2luZCA6IDI7CisgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICB9
OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CkBA
IC0xODg5LDE4ICsxODkyLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBt
X2VuZENvbHVtbjsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBCYXNlRnVuY0V4cHJOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBj
b25zdCBTb3VyY2VDb2RlJik7CisgICAgICAgIEJhc2VGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29u
c3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0
YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7CisgICAgfTsKKworCisgICAgY2xhc3MgRnVu
Y0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
fTsKIAotICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICBjbGFz
cyBBcnJvd0Z1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNlRnVuY0V4cHJOb2RlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUm
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKworICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYWVlNzBiNmE3MzI5YmMx
MWI1Y2U3M2Q1MzUyZDMxM2UyMmEyN2JlMS4uZjUwODE0ZTdiMTQyYWI1MzAwZDg0YTRiNzAxOWY5
Yzk4NGUyYjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
MTU0NiwxMSArMTU0NiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5j
dGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGludCBz
dGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogeworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBib2R5VHlw
ZTsKICAgICBpZiAoYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB8fCBib2R5
VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291
bnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwg
cGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTYy
LDcgKzE1NjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJv
ZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIGVsc2UKICAgICAgICAg
ZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0
cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5v
dCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRo
aXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVt
bigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOworICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5M
b2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiB9
CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VN
b2RlIG1vZGUpCkBAIC0xNzM3LDcgKzE3MzgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAog
ICAgIH0KICAgICAKICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yS2lu
ZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0KKyAgICAKICAgICBmdW5jdGlvbkluZm8uYm9k
eVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8gSWYgd2Uga25vdyBhYm91
dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBz
a2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCkBAIC0xNzU2LDExICsx
NzU3LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgICAgICBlbmRMb2NhdGlv
bi5zdGFydE9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldCA6CiAgICAgICAg
ICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9s
b2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uID0gcGFyc2VUeXBlID09IEFycm93RnVuY3Rpb25QYXJzZVR5cGU7CisgICAgICAg
IAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbklu
Zm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAg
ICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5m
by0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0
TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwg
aXNBcnJvd0Z1bmN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3Rv
cmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9wU2NvcGUo
ZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0x
Nzc0LDcgKzE3NzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICBtX2xleGVy
LT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVuY3Rp
b25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0gICAg
ICAgIGlmIChwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkKKyAgICAgICAgaWYg
KGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJ
bmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
IDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVu
Y3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDA3NjBjMTllYjE2MzZkYjIx
YTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcuLmRjNTYxZjliMWE2ZGEzNjQzYjgyNzJmZTdiMTJlMjE1
ZTQ0ZjQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVh
dGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4
cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3Qp
IHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBj
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3Vs
dDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50
LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0
dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQg
c2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVu
dHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGFiMTY3MjExNjgxOTRjMWE2MDI4OWViODU2
ZTk4YzBjZmExN2I3OS4uOWRjNjk0ZjI3YTQ1ODczYjJhMjE2N2EzNjk2MzVkM2U1OTQ1YWJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTIz
Niw4ICsyMzYsNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2Rl
QmxvY2tGb3IoCiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGdsb2JhbE9iamVjdC0+
aGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKICAgICBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNQcm9maWxlcigpID8gUHJvZmlsZXJP
biA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2Vk
Q29kZUJsb2NrID0KLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNv
ZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQs
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgZXhlY3V0YWJsZS0+bV91
bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcigqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNl
LCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIGV4ZWN1dGFibGUtPmlz
QXJyb3dGdW5jdGlvbigpKTsKICAgICByZWNvcmRQYXJzZShleGVjdXRhYmxlLT5tX3VubGlua2Vk
RXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUt
Pmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydENv
bHVtbigpLCBlbmRDb2x1bW4oKSk7IAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKICAg
ICAgICAgZXhjZXB0aW9uID0gdm0tPnRocm93RXhjZXB0aW9uKApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGJjZTI0MjhjYmMxMDFkZGE2Y2IxMDFkNzBi
ZjAyN2Y3ZTBlYTNkZjAuLmNmMmJkZTg4YzVhNmU5MTY3NjAzNmVlMjdkNzQ0Zjc2NDUzOWNjNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ3NCw3
ICs0NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCks
IHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVy
biBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9j
ay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUzMCw3ICs1MzAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MzMs
NiArNjMzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlz
QnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0
eSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25z
dHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlz
Q2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElk
ZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5p
bmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyb3dGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxYzI2MGUxNmEyMGUyYjg0MDlhZWJiOWEy
ZTU5ZGI5YjNkZjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBKU0Fycm93RnVuY3Rpb246OnNfaW5mbyA9IHsgIkFycm93RnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXJyb3dGdW5jdGlv
bikgfTsKKwordm9pZCBKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQorewor
ICAgIHN0YXRpY19jYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpLT5KU0Fycm93RnVuY3Rpb246
On5KU0Fycm93RnVuY3Rpb24oKTsKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEpTQXJyb3dGdW5jdGlvbiogcmVz
dWx0ID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7CisgICAg
ZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIHJlc3VsdCwg
IkFsbG9jYXRpbmcgYW4gYXJyb3cgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitKU0Fycm93RnVuY3Rpb246OkpTQXJyb3dGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQorICAg
IDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXJy
b3dGdW5jdGlvblN0cnVjdHVyZSgpKQorICAgICwgbV9ib3VuZFRoaXModm0sIHRoaXMsIGJvdW5k
VGhpcykKK3sKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKK3sK
KyAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+aGFzQmVlbkludmFs
aWRhdGVkKCkpOworICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBib3Vu
ZFRoaXMpOworfQorCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXJyb3dGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2JvdW5kVGhpcyk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNBcnJvd0Z1bmN0aW9uOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQoreworICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNTZm
NjhlZmVlZGQ4MjMxYTM1YjJmYzI0OWZkODFhYzk3ZjViMjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaApAQCAtMCwwICsx
LDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3Nr
YWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNBcnJvd0Z1bmN0aW9uX2gKKyNkZWZpbmUgSlNBcnJvd0Z1bmN0aW9u
X2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKyAgICAK
K2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQg
Y2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNw
ZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlm
CisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBC
YXNlOworCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rp
b24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxp
bmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0Fy
cm93RnVuY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBj
cmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3Bl
KiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgeworICAgICAgICBKU0Fycm93RnVuY3Rp
b24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJvd0Z1bmN0aW9u
Pih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRU
aGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0
KCkpOworICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gZnVuY3Rpb247CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworCisgICAgSlNWYWx1ZSBib3Vu
ZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQorICAgIAorICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNG
dW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAgCisgICAg
c3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZUaGlzVmFsdWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Fycm93RnVuY3Rpb24sIG1fYm91bmRUaGlzKTsK
KyAgICB9CisgICAgCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIAorcHJpdmF0ZToKKyAg
ICBKU0Fycm93RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNW
YWx1ZSk7CisgICAgCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7Cit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Fycm93RnVuY3Rpb25faApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDBiODdkNzVjOTE0NTBjNWFm
MWFhZWQyN2E2MWE3NDhlZjgwZjA5M2UuLjkyODM1MGUyNDc4YzQ1ZjdiZjdlOGFhODRjOWVjM2E0
ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgK
QEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAg
SlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBKU0Z1
bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwog
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVz
LmgKaW5kZXggZjZjNmQ1OGVjNmU1YzExNjRjYjI3ZmE1ZTQxNjE4YjRiODE0MmYwMi4uZjA1OTU4
NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNiNjQ0YTg4NDQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC00NCw2ICs0NCwxMyBA
QCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgICwgbV9yYXJlRGF0YSgpCiB7CiB9CisgICAg
CitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhp
cywgZXhlY3V0YWJsZSkKKyAgICAsIG1fcmFyZURhdGEoKQoreworfQogCiBpbmxpbmUgRnVuY3Rp
b25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGNl
ZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAwNDQxN2MyMjlhZDA0MjMuLmRhMWFjMjVhYWIwMDg2MmNk
NTM3MzBmOWE1YWQxMjVhMmRjMGZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJK
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjU5LDYgKzI2
MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIGV4ZWMtPnNldENh
bGxlZShtX2dsb2JhbENhbGxlZS5nZXQoKSk7CiAKICAgICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBtX2Z1bmN0
aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsKICAgICBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTc5
NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Ym91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJi
MjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMwNTVlOWJhZTMwYmI3M2ZkOTAxNWJjMDAzODM2M2M2NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0yMzIsNiArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fY2FsbGVlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1
Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKQEAgLTQ2Miw2ICs0
NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxsZWVTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBhcnJvd0Z1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgUHJvcGVydHlP
ZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVP
ZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQt
ZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlM2E2NmVhOTJmMDMwZGIz
Nzc5YTRjM2U0MDJlN2MxMThkMWQ4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhp
dC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpAQCAtMCwwICsxLDQ2IEBACisidXNlIHN0cmlj
dCI7CisKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gc2hvdWxkVGhyb3dURFooZnVuYykg
eworICAgIHZhciBoYXNUaHJvd24gPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7
CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmIChlLm5hbWUuaW5kZXhPZigiUmVmZXJlbmNl
RXJyb3IiKSAhPT0gLTEpCisgICAgICAgICAgICBoYXNUaHJvd24gPSB0cnVlOworICAgIH0KKyAg
ICBpZiAoIWhhc1Rocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWQgbm90IHRocm93
IFREWiBlcnJvciIpOworfQorCitmdW5jdGlvbiBiYXIoZikgeyB9CisKK2Z1bmN0aW9uIGZvbyhi
KSB7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICAoeCkgPT4geyByZXN1bHQg
PSB4OyByZXR1cm4gdGR6UGVycGV0cmF0b3I7IH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JF
eGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAg
ICAgIHJldHVybiB0ZHpQZXJwZXRyYXRvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgdGR6
UGVycGV0cmF0b3I7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25v
SW5saW5lKGZvbyk7Citub0lubGluZShzaG91bGRUaHJvd1REWik7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIGJvb2wgPSAhKGkgJSAxMDApOworICAgIGlmIChib29s
KQorICAgICAgICBzaG91bGRUaHJvd1REWigoKT0+IHsgZm9vKGJvb2wpOyB9KTsKKyAgICBlbHNl
IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhib29sKTsKKyAgICAgICAgaWYgKHJlc3VsdCAh
PSAwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRp
b24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQxYmJlMTQwMjQx
NGRiMjZjNmI3ZmQ0MDFmYjBlOWM2NWE0YmE3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmst
b3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuID0gMTAwMDAw
MDsKKworZnVuY3Rpb24gYmFyKHNldCkgeworICAgIHZhciByZXN1bHQgPSBzZXQoMCk7CisgICAg
aWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTog
IiArIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsK
KyAgICB2YXIgaW1VbmRlZmluZWQ7CisgICAgdmFyIGJhejsKKyAgICB2YXIgc2V0ID0gICh4KSA9
PiB7CisgICAgICAgIHJlc3VsdCA9IHg7CisgICAgICAgIGlmIChiYXogIT09IDUwKQorICAgICAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBiYXo7CisgICAgICAgIHJldHVybiBp
bVVuZGVmaW5lZDsKKyAgICB9OworICAgIGJheiA9IDUwOworICAgIGlmIChiKSB7CisgICAgICAg
IE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Citub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBu
OyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1
bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlNDM3YWY3YjJjMmFkMzQ1ZTI2YzIwMzc3ODkwZGY1ZjMxZmFmMDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIG4g
PSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsgcmVzdWx0ID0geDsgfQor
ICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAg
ICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAl
IDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzZhNzllYzllYWE2NWM1NDE5MzBiOTA0ODI2ZTdhMjNhMTNmYjJlYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIG4gPSAx
MDAwMDAwMDsKKworZnVuY3Rpb24gYmFyKGYpIHsgZigxMCk7IH0KKworZnVuY3Rpb24gZm9vKGIp
IHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0geCA9PiB7IHJlc3VsdCA9IHg7
IH0KKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCAh
PSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkOiAiICsgcmVzdWx0OworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFy
KTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAg
dmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ib3VuZC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ib3Vu
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MjAzMjA4OGFiZjI2ZGFlMmFlNzFhMmFjNGMwNWQ0ZjA3NzU1ZTQw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWJvdW5kLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGQgPSB7Cisg
IHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLnggKyB6OyB9
Cit9OworCitub0lubGluZShkLnkpOworCit2YXIgZSA9IHsgeCA6ICJiYXoiIH07CisKK2ZvciAo
dmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQueSgpLmJpbmQoZSwgImxleSIp
KCksICJiYXJsZXkiLCAiRXJyb3I6IGZ1bmN0aW9uIGJpbmQgc2hvdWxkbid0IGNoYW5nZSBsZXhp
Y2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4NzdlMGFkOWM4M2FjNTNhN2Y2ZDM1MTk2MjMyMTRjMWU5ZmM2MGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAo
YWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkg
eworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1
dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBkID0geworICB4IDogImZv
byIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKK25vSW5s
aW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJhciIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEw
MDAwO2krKyl7CisgICAgdGVzdENhc2UoZC55KCkuY2FsbChlKSwgImZvbyIsICJFcnJvcjogZnVu
Y3Rpb24gY2FsbCBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24iKTsKKyAgICB0ZXN0Q2FzZShkLnkoKS5hcHBseShlKSwgImZvbyIsICJFcnJv
cjogZnVuY3Rpb24gYXBwbHkgc2hvdWxuJ3QgY2hhbmdlIHRoZSBsZXhpY2FsIGJpbmRpbmcgb2Yg
dGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTViZWI1NTdkNzk0OWJjNmIyYzc4YWI0NjU5ZWE4YzJhYzYzZGU2MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDIyIEBACit2YXIgdGVzdENhc2UgPSBmdW5j
dGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsg
IicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBzaW1wbGVBcnJv
d0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93RnVuY3Rpb24pOwor
Cit2YXIgZXJyb3JPbkNyZWF0ZSA9IGZhbHNlOworCitmb3IgKGk9MDtpPDEwMDAwO2krKykgewor
ICAgdHJ5IHsKKyAgICAgICB2YXIgZmMgPSBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpOworICAg
fQorICAgY2F0Y2ggKGUpIHsKKyAgICAgZXJyb3JPbkNyZWF0ZSA9IHRydWU7CisgICB9CisKKyAg
ICB0ZXN0Q2FzZShlcnJvck9uQ3JlYXRlLCB0cnVlLCAiRXJyb3I6IE5vIGV4Y2VwdGlvbiBkdXJp
bmcgcnVuIG5ldyBBcnJvd0Z1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZmFiMjRjOTFiYzU3Yzk1ODc2MzJkZmVj
OWE0YzkzNzk4ZTIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwpAQCAtMCww
ICsxLDE5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVz
c2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2Ug
KyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAi
JyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5hbWU7
CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlzLmdldE5h
bWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOworfQorCitub0lubGlu
ZShEb2cpCisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdmFyIGQgPSBuZXcgRG9n
KCJNYXgiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsK
KyAgdGVzdENhc2UoZC5nZXROYW1lSGFyZCgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3Qg
bGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEx
N2RiMzAzY2RmZTNkMTVkYTQ1YzgxNjRlNDhkMDNhNjdlYjkyYTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtMi5qcwpAQCAtMCwwICsxLDM5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlv
biAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIics
IGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBmdW5jdGlvbkNvbnN0
cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOworfTsKKwor
dmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKwordGVzdENhc2UoaW5z
dGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKwordmFyIG9i
aiA9IHsKKyAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHRoaXM7Cisg
IH0KK307CisKK25vSW5saW5lKG9iai5tZXRob2QpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCkgPT09IG9iaiwgdHJ1ZSwgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzMiKTsKK30KKwordmFyIGZha2UgPSB7c3RlYWw6IG9iai5tZXRob2QoKX07Citub0lu
bGluZShmYWtlLnN0ZWFsKTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykgeworICAg
IHRlc3RDYXNlKGZha2Uuc3RlYWwoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQor
Cit2YXIgcmVhbCA9IHtib3Jyb3c6IG9iai5tZXRob2R9Oworbm9JbmxpbmUocmVhbC5ib3Jyb3cp
OworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UocmVhbC5i
b3Jyb3coKSgpID09PSByZWFsLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDE5MDg2ZDU4NDc5
YzRiZDRmZTBmNTI3YjNhN2JiODkzOWMwOTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LTMuanMKQEAgLTAsMCArMSwyOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwg
ZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0
aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICci
ICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7IG5hbWU6J29iaicsIG1l
dGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUt
IiArIHZhbHVlOyB9fTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENh
c2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdvYmotbmFtZS10ZXN0JyAr
IGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lk
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAw
OyBpKyspIHsKKyAgdmFyIHJlc3VsdDEgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmlu
ZygpKTsKKyAgdGVzdENhc2UocmVzdWx0MSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygp
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMSIpOworfQorCitvYmoubmFtZT0nbmV3T2JqJzsKKworZm9yICh2YXIgaT0w
OyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9T
dHJpbmcoKSksICduZXdPYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlz
IGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUi
KTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDIgPSBv
YmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0Miwg
J25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxl
eGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWJk
MzYzZTRlNDZiMDJkMmYxOWJiZTM4NTAyZjUyODIzM2E5ZjEzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLTQuanMKQEAgLTAsMCArMSwyNiBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24g
KGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
IHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBi
dXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIG5h
bWU6J29iaicsCisgIGludGVybmFsT2JqZWN0OiB7CisgICAgbmFtZSAgOidpbnRlcm5hbE9iamVj
dCcsCisgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFt
ZSArICItbmFtZS0iICsgdmFsdWU7IH0KKyAgfQorfTsKKworbm9JbmxpbmUob2JqLmludGVybmFs
T2JqZWN0Lm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVz
dENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSks
ICdpbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIp
OworfQorCitvYmouaW50ZXJuYWxPYmplY3QubmFtZT0nbmV3SW50ZXJuYWxPYmplY3QnOworCitm
b3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKG9iai5pbnRlcm5hbE9i
amVjdC5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnbmV3SW50ZXJuYWxPYmplY3Qt
bmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkg
YmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy01LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc1NDk0Y2U2YjY2
ZGIwYTdlYjQzZGNjODNlYzFlYWNlNjI4NzU0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy01LmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBzb3J0ZWRWYWx1ZXM7CisKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworCit2YXIg
b2JqID0geworICBhcnI6IFsxLCA0LCA2LCAzLCA3LCAwXSwKKyAgYnViYmxlU29ydDogZnVuY3Rp
b24gKCkgeworICAgIHJldHVybiAoKSA9PiB7CisgICAgICB2YXIgdG1wOworICAgICAgdmFyIGFy
ID0gdGhpcy5hcnIuc2xpY2UoKTsKKyAgICAgIHZhciBfbGVuZ3RoID0gYXIubGVuZ3RoCisgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IF9sZW5ndGg7IGkrKykgeworICAgICAgICBmb3IgKHZhciBq
ID0gaTsgaiA+IDA7IGotLSkgeworICAgICAgICAgIGlmICgoYXJbal0gLSBhcltqIC0gMV0pIDwg
MCkgeworICAgICAgICAgICAgdG1wID0gYXJbal07CisgICAgICAgICAgICBhcltqXSA9IGFyW2og
LSAxXTsKKyAgICAgICAgICAgIGFyW2ogLSAxXSA9IHRtcDsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBhcjsKKyAgICB9CisgIH0KK307CisKK25vSW5saW5l
KG9iai5idWJibGVTb3J0KTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgICBv
YmouYXJyID0gWzEsIDIsIDQsIDYsIDMsIDcsIDBdOworICAgIHRlc3RDYXNlKG9iai5idWJibGVT
b3J0KCkoKS5sZW5ndGgsIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisKKyAgICB2YXIgc29ydGVkVmFsdWVz
ID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1swXSwgMCwg
IkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24gIzYiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbNl0sIDcsICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICM3Iik7CisKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDUsIDgsIDIxLCAxOSwgMF07CisK
KyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCkubGVuZ3RoLCA5LCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjOCIp
OworCisgICAgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNl
KHNvcnRlZFZhbHVlc1sxXSwgMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEyIik7CisgICAgdGVzdENhc2Uoc29ydGVk
VmFsdWVzWzhdLCAyMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lk
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEzIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMt
Ni5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy02LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTdiYzdjOGYxODA1MzU4YmRiYTg1
YjJjZWY2YTY5YjVmNDFlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5qcwpAQCAt
MCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5h
bWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+ICB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0TmFtZU5l
c3RpbmdMZXZlbDEgPSAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0TmFtZU5lc3Rp
bmdMZXZlbDIgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBkID0gbmV3
IERvZygiTWF4Iik7CisKK25vSW5saW5lKGQuZ2V0TmFtZSgpKTsKK25vSW5saW5lKGQuZ2V0TmFt
ZU5lc3RpbmdMZXZlbDEoKSgpKTsKK25vSW5saW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDIoKSgp
KCkpOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQuZ2V0TmFt
ZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUg
b2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5lc3RpbmdM
ZXZlbDEoKSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5l
c3RpbmdMZXZlbDIoKSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkg
YmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay1v
c3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTBhMzFkNjczMWFlNjk3NGQ2NjdlZDhkMjQ4NzBiNWQ1
MzFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay1vc3JleGl0Lmpz
CkBAIC0wLDAgKzEsMzQgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK3ZhciBuZXdDb250ZXh0ID0g
eworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5j
dGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4g
eworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAg
aWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAg
ICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24nOworICAgICAgcmVz
dWx0ID0geDsKKyAgICB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAg
ICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFy
KTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAg
dmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRleHQsICEoaSAlIDEwMCkpOworICAgIGlmIChy
ZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRp
b24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTQzMDYzN2M4NWJmOTQyMWFlOWM5N2UwZGQ3ZjZjZDEz
NWM0Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAs
MCArMSwzOCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRleHQgPSB7CisgIGlk
IDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKGYpIHsKKyAgICBpZiAodGhpcyA9
PSBuZXdDb250ZXh0KQorICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBuZXN0aW5nIGZ1
bmN0aW9uJzsKKyAgICBmKDEwKTsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVz
dWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsKKyAgICAgIHJlc3VsdCA9IHg7CisgICAg
ICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhp
cyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0
aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAgfTsKKworICAgIGlm
IChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAg
ICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9Jbmxp
bmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0
ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAw
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5n
LW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjllMDI3MTM5YzE2NjdlMTA2OWJh
YmQyOTVhNmQ3ZmMwYjllNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW5vLWRv
dWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM3IEBACit2YXIgbmV3Q29udGV4dCA9IHsKKyAg
aWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0gMzsgfQor
bm9JbmxpbmUoY2FsbCk7CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJz
dGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZh
ciBmID0gKCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29u
dGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRl
eHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24g
IzEnOworICAgIH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9yY2UgYWxs
b2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4JzogMiB9
OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kp
IHsKKyAgICB2YXIgbyA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7CisgICAg
aWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAy
IGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgYXJyb3cgZnVu
Y3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0
IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0g
c2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5r
aW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmZj
YjNmYTViMWU3N2ZiNjI4NjE4MGIzMzJhM2JlN2RlMjhmNjBlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
dGhpcy1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNiBAQAordmFyIG5ld0NvbnRleHQg
PSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkg
Y2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChw
LCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0
aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5p
ZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFy
cm93IGZ1bmN0aW9uICMxJzsKKyAgICAgIHJldHVybiB4OworICAgIH07CisgICAgaWYgKHApIHsg
aWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB7CisgICAgICAv
LyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAh
PSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJv
dyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMic7CisgICAgICByZXR1cm4geDsK
KyAgICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsv
LyBTdWJzdGl0dXRlIHRoaXMKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3Vs
dCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3Vs
dDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxl
ZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVy
bHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LHRy
dWUsIHRydWUpOy8vIFN1YnN0aXR1dGUgdGhpcwordmFyIHJlc3VsdCA9IGYoNDIpOworaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1N2VhMDc2MzVhNDEzMWNkMjMxMWQ0NTA3MzVmNTdjMWRkOTU4NjUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsNDUgQEAK
K3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKKy8vIFNob3Vs
ZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAor
ZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB7CisgICAgICAvLyBDaGVj
ayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdD
b250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3Jv
bmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisKKyAgICAgIHJldHVybiB4OworICAg
IH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0KKyAgICBy
ZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250
ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4
dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAj
Mic7CisKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3
Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Ly8gdXNlIGNhbGwgdG8gc3Vic3RpdHV0ZSBjb250ZXh0Cisg
ICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cg
IkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMg
cG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUg
RlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2Ug
YnJhbmNoCit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7Cit2YXIg
cmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8vIFRoaXMgc2hvdWxkbid0
IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3IgY29tcGxldGVseSBjcmFz
aAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAiICsgcmVzdWx0OworCisv
LyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhlIHByb3Bl
cnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIHRydWUp
OwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJF
cnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTRjZTBjNjU4ZDNhMmY3OTIyOWRmNGY4OTJjY2RhMTUxM2M5NGU1
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCArMSwxNyBAQAordmFyIHRlc3RDYXNlID0g
ZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3Rl
ZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIgc2ltcGxl
QXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitub0lubGluZShzaW1wbGVBcnJvd0Z1bmN0aW9u
KTsKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0ZXN0Q2FzZShPYmplY3QuZ2V0
UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiksIEZ1bmN0aW9uLnByb3RvdHlwZSwgIkVy
cm9yOiBOb3QgY29ycmVjdCBnZXRQcm90b3R5cGVPZiB2YWx1ZSBmb3IgYXJyb3cgZnVuY3Rpb24i
KTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9u
LCB0cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3VsdCBmb3IgaW5zdGFuY2VvZiBtZXRob2Qg
Zm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RDYXNlKHNpbXBsZUFycm93RnVuY3Rpb24u
Y29uc3RydWN0b3IgPT0gRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0
IGZvciBjb25zdHJ1Y3RvciBtZXRob2Qgb2YgYXJyb3cgZnVuY3RpbyAgIG4iKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1y
dW4tMTAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1ydW4tMTAtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ExZjBhNDljYjE2ODYzYzU5MjEzNjFmMGFk
YjFlMTRlYzliNjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCkBAIC0wLDAgKzEsMjQgQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFy
IGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7Cisg
ICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5u
YW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBp
ZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOwor
ICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMSksIHRydWUs
ICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gb25lIHRp
bWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVj
dXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZGRjZGIzYzcwYTFiMjdjM2RiYjUyMzgwOTU1ZjUzNTNkNzY3NDI1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVu
KGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsg
aSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUg
PSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7Owor
ICAgIH07CisKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChv
YmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAg
fQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwgdHJ1ZSwgIkVy
cm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIG9uZSB0aW1lIik7Cit0ZXN0
Q2FzZShydW4oMTApLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVu
Y3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZTVmNmJjODZiZDMxNDUxYjAxY2EyN2QwYjk3MjBiNTdlOGQ2MDUxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1
bi0xMDAwMC0xLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7
CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7Cisg
ICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOwor
ICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIg
b2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXRO
YW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVz
dWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0cnVlLCAiRXJyb3I6IEVycm9yOiBkdXJp
bmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwMDAwIHRpbWVzIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEw
MDAwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tcnVuLTEwMDAwLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0MjcxZjRhMzE1OTE2MjVhMGJkM2Q3NDRk
MjUxMjYzMzMwMmU0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpAQCAtMCwwICsxLDIzIEBA
Cit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewor
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBl
Y3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0K
K307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgZm9y
ICh2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUp
IHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBl
dmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVt
IiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVz
dWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNl
KHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJy
b3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1z
aW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjg2MmM2MjhlM2IyY2Ez
MDQ0MTBiMWFlMjI2OTQ3MTgwNTFkZWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFs
bG9jYXRlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9
Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBmID0g
KCkgPT4geyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9j
YXRpb24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsK
K30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAg
ICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7
Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQg
ZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5
IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYu
eCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIg
KyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MjdmM2NhM2JkZThkYTMwMTQwZmExNDk5NzNlMTdhYWE4ZDkxMDVlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNp
bmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBzaW5rIChwLCBxKSB7
CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0
dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB4OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luayh0cnVlLCBmYWxz
ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0
IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUg
RlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBv
biBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYoNDIp
OworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBn
b3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZGI3MGJiOWFiYzIzMTQ4ZjYyN2VmYzYxODZiZTA1N2MzY2JiMjc2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtp
bmctcHV0LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2
YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyByZXR1cm4g
ZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwor
ICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93
ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlz
IHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAor
CisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNlIGJyYW5j
aAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChy
ZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBi
ZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBl
eHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9j
YXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYg
PSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NDkyMzk3MTk4M2RjZGEzNGMyNjkzOTIx
MTdiMTc0OGU2N2I0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAgLTAsMCArMSwyNyBAQAordmFyIEEg
PSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgeworICBjb25zdHJ1Y3Rv
cihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBpZiAoYWNjZXNzVGhpc0JlZm9yZVN1cGVy
KSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7CisgICAgICBzdXBlcigpOworICAgIH0gZWxz
ZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQorfTsKKwordmFyIGV4Y2VwdGlvbiA9IG51
bGw7Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0cnkgeworICAgICAgIG5ldyBC
KHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgICBleGNlcHRpb24gPSBlOworICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKKyAgICAgICAgICB0aHJvdyAiRXhjZXB0
aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVycm9yIjsKKyAgfQorCisgIGlmICghZXhj
ZXB0aW9uKQorICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFs
aXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7CisKKyAgdmFyIGUgPSBuZXcgQihmYWxzZSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTNlYzBkZGQ1NTE0ZmFmNGQwZDAzYzllMDY1
NzBhMGM4MmJlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCwwICsxLDI3IEBACit2YXIg
dGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAn
IiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisK
K3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKworbm9Jbmxp
bmUoYWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgeworICB0ZXN0Q2FzZSh0eXBlb2YgYWYxLCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5vdCBjb3Jy
ZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKHR5cGVvZiBh
ZjIsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzIiKTsKKworLy9GaXhtZTogU29tZSBidWcgaW4gaW5saW5pbmcgdHlwZW9mIHdpdGgg
Zm9sbG93aW5nIHJ1biBwYXJhbWV0ZXJzIGZ0bC1uby1jaml0LW5vLWlubGluZS12YWxpZGF0ZQor
Ly8gLS11c2VGVExKSVRcPXRydWUgLS1lbmFibGVGdW5jdGlvbkRvdEFyZ3VtZW50c1w9dHJ1ZSAt
LWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0x
MDAgIC0tdmFsaWRhdGVHcmFwaD10cnVlIC0tbWF4aW11bUlubGluaW5nRGVwdGg9MQorLy8KKy8v
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgIHsKKy8vICAgaWYgKHR5cGVvZiAoZnVu
Y3Rpb24gKCkge30pICE9PSAnZnVuY3Rpb24nKQorLy8gICAgICAgdGhyb3cgJ1dyb25nIHR5cGUn
OworLy8gfQorLy8gIHRlc3RDYXNlKHR5cGVvZiAoKT0+e30sICJmdW5jdGlvbiIsICJFcnJvcjog
Tm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMtIiArIGkpOworCisvLyAg
dGVzdENhc2UodHlwZW9mICgoYikgPT4ge2IgKyAxfSksICJmdW5jdGlvbiIsICJFcnJvcjogTm90
IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzQiKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhOTBi
OGYzYTFkOTVmYzQzYmRlZWJlMzQ1N2NhYTY0ZDFlNmI3YTAyLi5mMWQxYjhmMTUwMGFkY2NlOGI3
M2M2ODg1YzgwNTg4M2M5NjcwNTEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDgtMTIg
IFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgW0VT
Nl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1bmN0aW9uIHNw
ZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2YgdGhpcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0OTU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbDog
QWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1
bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tdHlwZW9mLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyb3dmdW5j
dGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJv
d2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgICog
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanM6IEFkZGVk
LgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qczogQWRk
ZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6IEFk
ZGVkLgorCiAyMDE1LTA4LTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVkdWNlIGZsYWtpbmVzcyBvZiBpbnNwZWN0b3Iv
aW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmIzMjZjY2JiNGUxNGM2ODlk
ZDdkOTM4M2NjNWJjOTRmZjdmMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBm
b3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcg
aW52b2tlIGJpbmQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCku
YmluZChlLCAnbGV5JykoKSBpcyAnYmFybGV5JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tYmluZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGI5YWNiMmJjOGZkNTA0YzY4ZjA0NDVhNmVhYzRhNmExNDU0YWJhYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWMwNzdmOTk3OWFjZjQ1ZTE2Yjk5NjU3MmQxYWZkZWVkZDU5MTEyNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91
bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5CisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmNhbGwoZSkgaXMgJ2ZvbycKK1BBU1MgZC55
KCkuYXBwbHkoZSkgaXMgJ2ZvbycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxZDhhNDdlMzBiNmE4NzQ5ZWM1YjdlNzgzYzZhOWVjMzEzMmQyZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTY3MDZmZmYxN2MyMTIzODUzNjQwYmIyYTRlYjE3ZDYzZTFhMzcyMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rp
b24gbm8gY29uc3RydWN0b3IKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBmdW5j
dGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNpbXBsZUFycm93RnVu
Y3Rpb24oKScpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0
b3IuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMGMwYjlhOWNkZDRkOGJkZmE2MjQxY2I2YmVmYmYwNGNjOTU4MzBmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I2NmZjMjg4Y2FjYmQ5
YzkzN2M5NzFjMmJkNmI2OGU2NjRhOTQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRo
aXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC5nZXROYW1lKCkgaXMg
ZC5uYW1lCitQQVNTIGQuZ2V0TmFtZUhhcmQoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lTmVz
dGluZygpKCkoKSBpcyBkLm5hbWUKK1BBU1Mgb2JqLm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ29i
akNvZGUtbmFtZS1jb3JyZWN0JworUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3
T2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9k
KCkoJ2NvcnJlY3QnKSBpcyAnaW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBkZWVw
T2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ25ld0ludGVybmFsT2Jq
ZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSBpcyB0
cnVlCitQQVNTIG93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1Mg
ZmFrZS5zdGVhbCgpID09PSBvd25lck9iaiBpcyB0cnVlCitQQVNTIHJlYWwuYm9ycm93KCkoKSA9
PT0gcmVhbCBpcyB0cnVlCitQQVNTIGFycm93RnVuY3Rpb24oJy10aGlzJykgaXMgInJpZ2h0LXRo
aXMiCitQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODFlYTIyYTc2ZmRmOGJmZjVlNzJlNTFiNzc5NGIzZTM0N2QxNjQyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRt
bApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90
aGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNTJlNWUzN2M2OTE1ZjM4MjNlMjliMjBhOTRkZjUz
ZDA4YzAwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
b3RoZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyBmb3IgRVM2IGFycm93
IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKHNpbXBsZUFycm93
RnVuY3Rpb24pIGlzIEZ1bmN0aW9uLnByb3RvdHlwZQorUEFTUyBzaW1wbGVBcnJvd0Z1bmN0aW9u
IGluc3RhbmNlb2YgRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzaW1wbGVBcnJvd0Z1bmN0aW9uLmNv
bnN0cnVjdG9yID09IEZ1bmN0aW9uIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLW90aGVycy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3ZjhiMDBlNDYwNTVlZTZmYWU1YzFlODI4OWVmZWUxZjEx
MDkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3YWY2Y2Q4NjAwZTg4NDEyNzdjNDk0YTk4OTAyMjQ1MmVhNmFiNWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0
IHRkegorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpc1JlZmVyZW5jZUVy
cm9yIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1s
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGVm
MTcxY2I4MjBiZWIzY2I0YTdkM2ZjNDhlNWM1M2ZjMTE5MjZkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi10ZHouanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZmIyY2U5NjRi
ZDAzMzIxYjgzMmNiODdiYmFlMGNhNTM0OWMxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBA
CitQQVNTIHR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgYWYy
ID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rp
b24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGFj
YWFhMWE0ZTRkMGU0Y2IzZDA3NjVlMzczZmVkYjc0MzgwZTAxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi10eXBlb2YuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlYjU1MmY4MGY2NjFkZTNiYWI1MjA5YzcyZGRjZjUwMjEwMDM0NWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbCBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjNkODQ1NGJmZjYxODJlNjFjYmViMGI5ZWUxMzNmZTg3MzExMmJmYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI0Yzg0Mjc2ZTcxMDg3Nzg2YzU5NDBhODIy
YmNjNmY5N2MwNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTUgQEAKK3ZhciBh
ZiA9IChhLCBiKSA9PiBhICsgYjsKKworbm9JbmxpbmUoYWYpOworCitmdW5jdGlvbiBiYXIoYSwg
YikgeworICAgIHJldHVybiBhZihhLCBiKTsKK30KKworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIp
OworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3M2MzYjVlMGNhNzkxNzk0ZjI1
MTY5YTkxY2I0YTdkYzliMjhjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBAQAordmFy
IGZlID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyBiO30KKworbm9JbmxpbmUoZmUpOwor
CitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBmZShhLCBiKTsKK30KKworbm9Jbmxp
bmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIg
cmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUzZjA4ZTk2
NmM3OTRjYmFmOWFkNGEzYWRiNGU5OTc5YzAyYWMyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKQEAgLTAsMCArMSwx
MiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hv
dWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZCcpOworCit2YXIgZCA9IHsKKyAg
eCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH0K
K307CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKworc2hvdWxkQmUoImQueSgpLmJpbmQoZSwg
J2xleScpKCkiLCAiJ2JhcmxleSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
YWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41Yzg4OGY5MTFiZjFjNDRkMzg5ZDBhM2QyMTg0NjgzNDg0YjZmOTZkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tY2FsbC5qcwpAQCAtMCwwICsxLDEzIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBh
cnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBj
YWxsJmFwcGx5Jyk7CisKK3ZhciBkID0geworICB4IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigp
IHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9Owor
CitzaG91bGRCZSgnZC55KCkuY2FsbChlKScsICInZm9vJyIpOworc2hvdWxkQmUoJ2QueSgpLmFw
cGx5KGUpJywgIidmb28nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3Ry
dWN0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25z
dHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWZhZDA3Njg0N2JmZjQ5MjlmNzgwNzc2NWY5OTBiNzM3
M2NkZjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw3IEBACitkZXNjcmlwdGlvbign
VGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcicpOworCit2YXIgc2lt
cGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitzaG91bGRUaHJvdygnbmV3IHNpbXBsZUFy
cm93RnVuY3Rpb24oKScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1NmExNTUzMGYzNGNjMzA4YWNlNmIw
ZmFhNGNmZTdjMWU5NzhjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzCkBAIC0wLDAgKzEsNjcg
QEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGxleGljYWwgYmlu
ZCBvZiB0aGlzJyk7CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5hbWU7
CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlzLmdldE5h
bWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOworICB0aGlzLmdldE5h
bWVOZXN0aW5nID0gKCkgPT4gKCkgPT4gKCkgPT4gdGhpcy5uYW1lOworfQorCit2YXIgZCA9IG5l
dyBEb2coIk1heCIpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZSgpJywgJ2QubmFtZScpOworc2hvdWxk
QmUoJ2QuZ2V0TmFtZUhhcmQoKScsICdkLm5hbWUnKTsKK3Nob3VsZEJlKCdkLmdldE5hbWVOZXN0
aW5nKCkoKSgpJywgJ2QubmFtZScpOworCit2YXIgb2JqID0geworICBuYW1lICAgOiAnb2JqQ29k
ZScsCisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKHZhbHVlKSA9PiB0aGlz
Lm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOworICB9Cit9OworCitzaG91bGRCZSgib2JqLm1ldGhv
ZCgpKCdjb3JyZWN0JykiLCAiJ29iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworb2JqLm5hbWU9J25l
d09iakNvZGUnOworc2hvdWxkQmUoIm9iai5tZXRob2QoKSgnY29ycmVjdCcpIiwgIiduZXdPYmpD
b2RlLW5hbWUtY29ycmVjdCciKTsKKwordmFyIGRlZXBPYmogPSB7CisgIG5hbWUgOiAnd3JvbmdP
YmpDb2RlJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFsT2JqZWN0
JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1l
ICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9Oworc2hvdWxkQmUoImRlZXBPYmouaW50ZXJu
YWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInaW50ZXJuYWxPYmplY3QtbmFtZS1jb3Jy
ZWN0JyIpOworCitkZWVwT2JqLmludGVybmFsT2JqZWN0Lm5hbWUgPSAnbmV3SW50ZXJuYWxPYmpl
Y3QnOworCitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVj
dCcpIiwgIiduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK3ZhciBmdW5jdGlv
bkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOwor
fTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKworc2hvdWxk
QmUoImluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2UiLCAidHJ1ZSIpOworCit2YXIgb3duZXJP
YmogPSB7CisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4gdGhpczsK
KyAgfQorfTsKKworc2hvdWxkQmUoIm93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2JqIiwg
InRydWUiKTsKKwordmFyIGZha2UgPSB7IHN0ZWFsIDogb3duZXJPYmoubWV0aG9kKCkgfTsKK3No
b3VsZEJlKCJmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFyIHJlYWwg
PSB7IGJvcnJvdyA6IG93bmVyT2JqLm1ldGhvZCB9Oworc2hvdWxkQmUoInJlYWwuYm9ycm93KCko
KSA9PT0gcmVhbCIsICJ0cnVlIik7CisKK3ZhciBhcnJvd0Z1bmN0aW9uID0geyB4IDogInJpZ2h0
IiwgZ2V0QXJyb3dGdW5jdGlvbiA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLnggKyB6
OyB9fS5nZXRBcnJvd0Z1bmN0aW9uKCk7Cit2YXIgaG9zdE9iaiA9IHsgeCA6ICJ3cm9uZyIsIGZ1
bmMgOiBhcnJvd0Z1bmN0aW9uIH07CisKK3Nob3VsZEJlKCJhcnJvd0Z1bmN0aW9uKCctdGhpcycp
IiwgJyJyaWdodC10aGlzIicpOworc2hvdWxkQmUoImhvc3RPYmouZnVuYygnLXRoaXMnKSIsICci
cmlnaHQtdGhpcyInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTc5OTMxYzNkZWJjYjUwMjdhZDE0ZmQxNTQ3ZTVhYmEwMzhiNGIxMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90
aGVycy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyBJbnNwaXJlZCBieSBtb3ppbGxhIHRlc3RzCitk
ZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBpbnN0YW5jZW9mIGFuZCB0
eXBlb2Ygb3BlcmF0b3JzJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307
CisKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiki
LCAiRnVuY3Rpb24ucHJvdG90eXBlIik7CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5jdGlvbiBp
bnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRydWUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0
aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIiwgInRydWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi10ZHouanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFmNThmYzY1MTNlZGFiZGUxZGQ2NTA3NDk2YWU4
NjRiNjExZmZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNjcmlwdGlvbignVGVz
dHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRkeicpOworCit2YXIgQSA9IGNsYXNzIEEg
eyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1Ro
aXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAg
IHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAg
IHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgaXNSZWZlcmVuY2VFcnJvciA9IGZhbHNl
OwordHJ5IHsKKyAgICAgbmV3IEIodHJ1ZSk7Cit9IGNhdGNoIChlKSB7CisgICAgaXNSZWZlcmVu
Y2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKK30KKworc2hvdWxkQmUoJ2lz
UmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOworCit2YXIgZSA9IG5ldyBCKGZhbHNlKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJhYTI2OTBmZGE4
MmM2YTMyOGVhMGFiYzM1NWQyZDhiZTNkNDhkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCwwICsxLDEy
IEBACit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIgYWYyID0gKGEpID0+IHthICsgMX07CisKK3No
b3VsZEJlKCJ0eXBlb2YgYWYxID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxkQmUo
InR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9m
ICgoKT0+e30pID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5cGVvZiAo
KGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259137</attachid>
            <date>2015-08-17 00:44:36 -0700</date>
            <delta_ts>2015-08-17 01:15:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817104435.patch</filename>
            <type>text/plain</type>
            <size>179035</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uMjRlMWYxYzM5ZDIzZTY0OGYwZTQ4MWQxNGYz
NWM3MDFkNWUwMTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25B
cmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVu
dHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVj
bCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAg
ICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2
YWx1ZXMgaW50byB0aGUKQEAgLTk1NSw2ICs5NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxpZiBD
UFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICs5OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0K
KyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAg
ICB7CiAgICAgICAgIG1vdmVEb3VibGUoYXJnNCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAg
LTEwMDcsNiArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNlbHNlCisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBh
c3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBhcmcxKTsKQEAgLTExMjgsNyArMTEyOSwxNCBAQCBwdWJsaWM6CiAjZWxzZQogI2Vycm9y
ICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgotCisgICAgCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVn
IGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CkBAIC0xMjEzLDYgKzEyMjEsMTMgQEAgcHVibGljOgogICAgICAg
ICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIG1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVn
IGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIH0KICNlbmRpZgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCkBA
IC0xMjQxLDYgKzEyNTYsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQorICAgIAorICAgIC8qQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdz
R1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBh
cmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIH0qLwogI2VuZGlmCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDAzOGY1ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3
ZmYyZWJhNDBlYjQuLmJiYzg1MjNmNWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9lbmQpCiAgICAg
ICAgIERFRklORV9PUChvcF9lbnRlcikKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZSkK
KyAgICAgICAgREVGSU5FX09QKG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxsKQogICAgICAgICBj
YXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJy
YXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklO
RV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVu
Y19leHApIAogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19yZWdleHApCiAgICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAppbmRleCA4NDExYTdlZjY1YTljNmJkY2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2
Li43NzFmZDliNDA2NWJkZDE3MjJjMGU3MmI4ODcyMDhlYzYyZjFlNDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKQEAgLTQ5OCw2ICs0OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0X29wX2VuZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50
ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKQEAgLTUzOSw2ICs1NDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3Ry
dWN0aW9uKik7CkBAIC02NTMsNiArNjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAg
ICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVt
aXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJ
bmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9p
ZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRXaXRo
U3RydWN0dXJlQ2hlY2soaW50IHNjb3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAg
LTcyMyw2ICs3MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQ
UlJlZywgQnlWYWxJbmZvKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRUpzYywgR1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQywgaW50LCBHUFJSZWcs
IEpTQ2VsbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKc2NDSiwgaW50LCBHUFJSZWcsIEpTQ2VsbCosIEdQUlJlZyk7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpz
Y1osIEdQUlJlZywgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIGludCwgR1BSUmVnLCBpbnQzMl90KTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCA1ZDY4NjkwMDgxYzk5NmQ3ZTMzYmYzYmQyNWRjYzU4YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcy
NDk1NmJmNTg0OTFiM2RlNzgzYTZmY2RjMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaApAQCAtMjcxLDYgKzI3MSwxMiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYQog
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChv
cGVyYXRpb24sIGRzdCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIGludCBk
c3QsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQoreworICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsK
KyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQo
b3BlcmF0aW9uLCBkc3QpOworfQorICAgIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBpbnQg
ZHN0LCB2b2lkKiBwb2ludGVyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCmluZGV4IDU5OGQ0ZWM5OWMxZDE4ZTZjMzk2MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4
M2JjYzhjNDVkZTY2NmY3M2M5ZTkxMWY1MTQyOWYzNWViMTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhl
YXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAg
LTY3Myw2ICs2NzQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRz
dCwgcmVnVDApOwogfQorICAgIAordm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9u
X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAg
ICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b190
aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NjIsMjYgKzk3MSw0
NSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudElu
c3RydWN0aW9uKTsKK30KKyAgICAKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bj
b2RlKTsKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG9wY29kZUlEID09IG9wX25ld19hcnJv
d19mdW5jX2V4cDsKKyAgICAKICAgICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwogICAgIGludCBk
c3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAg
ICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKICAgICBzdG9yZTY0KFRydXN0
ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFt
ZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAjZWxzZQogICAgIGVtaXRMb2Fk
UGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYg
KGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCB0YWdGb3IoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKICAgICBlbWl0U3RvcmUoZHN0LCBq
c1VuZGVmaW5lZCgpKTsKICNlbmRpZgotCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIG5v
dFVuZGVmaW5lZFNjb3BlLmxpbmsodGhpcyk7Ci0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmNFeHByID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3Qs
IHJlZ1QwLCBmdW5jRXhwcik7CisgICAgICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb24gPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1Qx
KTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24s
IGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0KKyAgICAK
K3ZvaWQgSklUOjplbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1
Y3Rpb24pOworfQorICAgIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKaW5kZXggOTFjMDBlM2ZkNDVlMDk3ZTNiYjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4u
YjM5YWUxZDFhMzA2ODAzNDNlOWZkOWE3MjMxNDI5YjZlNTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlND
ZWxsLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKQEAgLTkyMiw2ICs5MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3Bl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3JlQ2VsbChkc3Qs
IHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0
U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhp
cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYjVmOWUzNjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMw
MjRjZGNkYjkzYi4uNGZmMGUzZDE1MGI0MjYwZWY5NGIyMWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKQEAgLTk0Miw2ICs5NDMsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGMKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0
YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCit7CisgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihm
dW5jdGlvbkV4ZWN1dGFibGUpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgICAgICAKKyAgICBKU0Fycm93
RnVuY3Rpb24qIGFycm93RnVuY3Rpb24gID0gaXNJbnZhbGlkYXRlZAorICAgICAgICA/IEpTQXJy
b3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2
bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKQorICAgICAg
ICA6IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXJyb3dGdW5jdGlvbik7Cit9CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVj
dXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNW
YWx1ZSwgdHJ1ZSk7Cit9CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlND
ZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAg
ICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKaW5kZXggM2Q4M2Y1OTBkY2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJj
YmU4NGY5Yi4uYTY3Y2FhY2IzMmZiMjE1OGE5YzA1ZTZhNTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTEyMiw2ICsxMjIsNyBA
QCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9F
UFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2bwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQ
YykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKik7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9w
ZXJhdGlvbl9FSnNjQ0opKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNW
YWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJh
dGlvbl9FU1MpKEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopOwpAQCAtMjg4LDYgKzI4OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXJXaXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQ
cm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1
ZSBzaXplKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hw
b2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9J
TlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYW5kbGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0
ZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDll
ZjliMDEzOGQ5YTgzZjFlYy4uYTJhNmIyYjExYzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNk
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUg
IkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJWTS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTViODFlZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJi
NDFmNTY4NWQ3Zi4uMmNkOWY2ZWI4ZDY4Mzg2ODcwOTdjNGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMg
PSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQotCisgICAgCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24q
IHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpA
QCAtMTAxMywxMiArMTAxNCwyNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3
X2Z1bmMpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewog
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNb
Ml0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKLSAg
ICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2Nv
cGUpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVu
Y3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CiAgICAgCi0gICAgTExJTlRfUkVUVVJOKGZ1bmMp
OworICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNj
b3BlKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVu
Y19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
TExJTlRfT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNb
Ml0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwor
ICAgIAorICAgIExMSU5UX1JFVFVSTihKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBl
IGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBK
U1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTA5Niw3ICsx
MTA5LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGUKICAgICBKU1Njb3BlKiBzY29wZSA9IGNh
bGxlZS0+c2NvcGVVbmNoZWNrZWQoKTsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAK
KwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOGNjNjlhOTYw
MGJiZjlkODUzMzlkNjA5NTk1ZjY3YzY4ZDA3NjcxYi4uM2YxZGFhODEyYjcwMmUyM2M2YWFlZjlm
ZDdjMDY3MWVlMjAyNWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmgKQEAgLTk3LDYgKzk3LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9zd2l0Y2hfY2hhcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19h
cnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Nh
bGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJh
cmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQppbmRleCBjOTEwNjE3ZWQ4MzRiNzRjOWYyZjhlZTRiMjY4N2M4YjljZmUzYzdj
Li43M2ZjNTg4NDQyZGRjNGI5Y2ZhN2I4OGYwMDRjYTg2NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0x
MTgzLDYgKzExODMsMTAgQEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xs
aW50X29wX25ld19hcnJvd19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQorICAgIGRpc3Bh
dGNoKDUpCiAKIF9sbGludF9vcF9jYWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KaW5kZXggZTkwZWNlZGZhNzMwOTgyZmVlZjcxZWViMGNlYTY0MzgyMzRhNjkxYy4uN2Vm
NmI4N2MxNzBhZDA4M2IxZjUyOWRhODgzNmMwMGNkYTY0YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
QEAgLTIzNzMsMyArMjM3MywxMiBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9m
aWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5j
dGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSBDYWxsZWUgKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhp
c1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlaSBD
ZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KaW5kZXggZDk0NTVmNzVjN2I2NjQyZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1
Yi4uZDIxNTJhMmYyNzdhZGU1ODc5NzZhMWMzZjEyMDIzNzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
QEAgLTIyMjYsMyArMjIyNiwxMSBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9m
aWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5j
dGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwg
dDAKKyAgICBsb2FkcCBKU0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKKyAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0K
KyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkw
ZDljNDI2ODBhZDU3OGI5NGE2Ny4uODA2ZGI1MjMwM2Q1YWQzYTcxODgxMjlmODhiZDc2NGM2YjUw
ZWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2
MSwxOSArMzYxLDE5IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAg
ICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5j
dGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwg
ZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAg
ICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50
LCBtb2RlKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlv
bkluZm8pCiAgICAgeworICAgICAgICB1c2VzVGhpcygpOwogICAgICAgICBTb3VyY2VDb2RlIHNv
dXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZz
ZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0
aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pOwotCi0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbklu
Zm8ubmFtZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAgIEFycm93RnVuY0V4
cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxv
Y2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwog
ICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUs
IGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0
ZTEyODg0OGVhOGI0M2ZkODYzNjk3NGNiOTk3YzM3ZGIuLmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0
M2JjYmExOTY5M2FkYmQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCkBAIC04OTAsMTMgKzg5MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
KQorICAgIAorICAgIGlubGluZSBCYXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
KQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRh
dGEobV9tZXRhZGF0YSkKICAgICB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmco
c291cmNlLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUg
RnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFk
YXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgIDogQmFzZUZ1bmNFeHByTm9k
ZShsb2NhdGlvbiwgaWRlbnQsIG1fbWV0YWRhdGEsIHNvdXJjZSkKKyAgICB7CisgICAgfQorCiAg
ICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRl
bWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9tZXRhZGF0YShtX21ldGFkYXRhKQpAQCAt
OTA0LDYgKzkxMCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbV9tZXRhZGF0YS0+Zmlu
aXNoUGFyc2luZyhzb3VyY2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAK
KyAgICBpbmxpbmUgQXJyb3dGdW5jRXhwck5vZGU6OkFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAg
ICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3Vy
Y2UpCisgICAgeworICAgIH0KKwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIGlu
bGluZSBDbGFzc0RlY2xOb2RlOjpDbGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0RlY2xhcmF0aW9uKQogICAgICAgICA6IFN0
YXRlbWVudE5vZGUobG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CmluZGV4IGNmNGZlNDUwYTkyNDk1MDRmMzBiYTg1YTI2NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUz
MzA1YzRhMGMyMWM3MzM4ODM5YzI5ZjIzYzc0ZGU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6
OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExv
Y2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFt
ZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZSBtb2RlKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24p
CiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0
YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw2ICsx
NjMsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAg
ICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlz
SW5TdHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQorICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9u
KGlzQXJyb3dGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCmluZGV4IDFkNmIwM2Q3NzY2Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5
MzBjMmQuLjg3MzY2OGVjMzdiNDI3YjkyMDY0OWRlMzA2ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhw
ck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNB
cnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0NvbW1hTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1NpbXBsZUFycmF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDks
NyArMTgxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwg
CiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAg
ICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAg
ICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291
cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAg
LTE4MzUsNiArMTgzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc3RhcnRTdGFy
dE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBi
b29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4
dDsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlv
bjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQg
bGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKICAgICAgICAg
ewpAQCAtMTg2MCw2ICsxODYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZVBh
cnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4
dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKKyAgICAgICAg
dW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5j
dGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKQEAgLTE4ODksMTggKzE4OTIsMzUg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07
CiAKLSAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAg
IGNsYXNzIEJhc2VGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsK
KyAgICAgICAgQmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAK
ICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRh
ZGF0YTsgfQogCisgICAgcHJvdGVjdGVkOgorICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bV9tZXRhZGF0YTsKKyAgICB9OworCisKKyAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMg
QmFzZUZ1bmNFeHByTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBGdW5jRXhwck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OwogCi0gICAgICAgIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhOworICAgIGNsYXNzIEFycm93RnVuY0V4cHJOb2Rl
IDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQXJyb3dG
dW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IH07CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAppbmRleCBhZWU3MGI2YTczMjliYzExYjVjZTczZDUzNTJkMzEzZTIy
YTI3YmUxLi5mNTA4MTRlN2IxNDJhYjUzMDBkODRhNGI3MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5
VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUpCiB7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBl
OjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGlmIChib2R5VHlw
ZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rp
b25Cb2R5QmxvY2spIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VC
UkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7
Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0
TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dG
dW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NjIsNyArMTU2Myw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNv
dXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBl
ID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhp
cyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIp
OwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2lu
ZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29s
dW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVy
Q291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNo
YXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE3Mzcs
NyArMTczOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgfQogICAgIAogICAgIGJv
b2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZTsKLQorICAgIAogICAgIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFy
dENvbHVtbjsKICAgICAKICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxy
ZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0
aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KQEAgLTE3NTYsMTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90
b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0
YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldDsKLQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5
cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZTsKKyAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9u
SW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAg
c3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4s
IGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+
c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwg
bW9kZSk7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3Rvcktp
bmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwog
ICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRl
ckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVl
QnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90
b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0g
Y2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKHBhcnNlVHlwZSA9
PSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQorICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQog
ICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhw
cmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9k
eUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3Rh
bmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKaW5kZXggMDc2MGMxOWViMTYzNmRiMjFhMTc5NjEyYTU0OTZlMTljZmQx
YmIwNy4uZGM1NjFmOWIxYTZkYTM2NDNiODI3MmZlN2IxMmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4Niw3ICsxODYs
NyBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJl
c3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHBy
OyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+
JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJj
ZVBhcnNlTW9kZSkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0
ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwg
dW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVz
dWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+
JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFy
dChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3Vt
ZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAppbmRleCAwYWIxNjcyMTE2ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2
OTRmMjdhNDU4NzNiMmEyMTY3YTM2OTYzNWQzZTU5NDVhYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0
cjxDb2RlQmxvY2s+IFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1
Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVi
dWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBn
bG9iYWxPYmplY3QtPmhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPQotICAgICAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKAotICAgICAg
ICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9m
aWxlck1vZGUsIGVycm9yKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+
Y29kZUJsb2NrRm9yKCp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9k
ZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwog
ICAgIHJlY29yZFBhcnNlKGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJl
cygpLCBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigp
KTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewogICAgICAgICBleGNlcHRpb24gPSB2
bS0+dGhyb3dFeGNlcHRpb24oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKaW5kZXggYmNlMjQyOGNiYzEwMWRkYTZjYjEwMWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2Yy
YmRlODhjNWE2ZTkxNjc2MDM2ZWUyN2Q3NDRmNzY0NTM5Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0K
IAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25E
ZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKTsgfQpAQCAtNTMwLDcgKzUzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJD
b2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6
CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsg
fQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KKyAgICBib29sIGlz
QXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fy
cm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVu
Y3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWRO
YW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NTFjMjYwZTE2YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0
aW9uLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtz
YW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U0Fycm93RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIK
KyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpT
QXJyb3dGdW5jdGlvbjo6c19pbmZvID0geyAiQXJyb3dGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBcnJvd0Z1bmN0aW9uKSB9OworCit2b2lkIEpTQXJy
b3dGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNB
cnJvd0Z1bmN0aW9uKj4oY2VsbCktPkpTQXJyb3dGdW5jdGlvbjo6fkpTQXJyb3dGdW5jdGlvbigp
OworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBi
b3VuZFRoaXMpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9uKiByZXN1bHQgPSBjcmVhdGVJbXBsKHZt
LCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgcmVzdWx0LCAiQWxsb2NhdGluZyBhbiBhcnJv
dyBmdW5jdGlvbiIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6
SlNBcnJvd0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgOiBCYXNlKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJl
KCkpCisgICAgLCBtX2JvdW5kVGhpcyh2bSwgdGhpcywgYm91bmRUaGlzKQoreworfQorCitKU0Fy
cm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEFTU0VSVChleGVjdXRh
YmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgcmV0
dXJuIGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQg
SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QXJyb3dGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsK
K30KKworQ29uc3RydWN0VHlwZSBKU0Fycm93RnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZj
MjQ5ZmQ4MWFjOTdmNWIyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0Fy
cm93RnVuY3Rpb25faAorI2RlZmluZSBKU0Fycm93RnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworICAgIAorY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOworICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0
aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5B
QkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAg
ZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3Mg
Vk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMg
SlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
U2NvcGUqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Cisg
ICAgCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNp
dHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5l
Q2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTQXJyb3dGdW5jdGlvbik7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJv
dW5kVGhpcykKKyAgICB7CisgICAgICAgIEpTQXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Fycm93RnVuY3Rpb24+KHZtLmhlYXApKSBKU0Fycm93
RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgICAgICBBU1NF
UlQoZnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGZ1bmN0
aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CisKKyAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1f
Ym91bmRUaGlzLmdldCgpOyB9CisgICAgCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKyAgICAK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRp
ZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTQXJyb3dGdW5jdGlvbiwgbV9ib3VuZFRoaXMpOworICAgIH0KKyAgICAKKyAgICBj
b25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCitwcml2YXRlOgorICAgIEpTQXJyb3dGdW5jdGlvbihW
TSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAKKyAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAorICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX2JvdW5kVGhpczsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEpTQXJyb3dGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggMGI4N2Q3NWM5MTQ1MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBm
MDkzZS4uOTI4MzUwZTI0NzhjNDVmN2JmN2U4YWE4NGM5ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTQxLDYgKzE0MSw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CiAKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2
ZTVjMTE2NGNiMjdmYTVlNDE2MThiNGI4MTQyZjAyLi5mMDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUy
N2I2M2I2NDRhODg0NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTQ0LDYgKzQ0LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9u
OjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Nj
b3BlKiBzCiAgICAgLCBtX3JhcmVEYXRhKCkKIHsKIH0KKyAgICAKK2lubGluZSBKU0Z1bmN0aW9u
OjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Nj
b3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzY29wZSwg
c3RydWN0dXJlKQorICAgICwgbV9leGVjdXRhYmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQorICAg
ICwgbV9yYXJlRGF0YSgpCit7Cit9CiAKIGlubGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVu
Y3Rpb246OmpzRXhlY3V0YWJsZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2VlOWJiZDk0MDQ0OTEyODk0Mzgy
NzFkMDA0NDE3YzIyOWFkMDQyMy4uZGExYWMyNWFhYjAwODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMw
ZmYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJK
U0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZXhlYy0+c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVl
LmdldCgpKTsKIAogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
KTsKKyAgICBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Fycm93RnVu
Y3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSkpOwogICAgIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSk7CiAgICAgbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCks
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
LCBtX2Z1bmN0aW9uTmFtZU9mZnNldCkpOwogICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwpAQCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJvd0Z1bmN0aW9uU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9u
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmpl
Y3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0
cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCA5OTg2YmNmNjI0NWUyY2M0NjgyMGIxMzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEy
YjI5MzA1NWU5YmFlMzBiYjczZmQ5MDE1YmMwMDM4MzYzYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0
eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwpAQCAtNDYyLDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmUqIGNhbGxlZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIG5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVj
dHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0
LXZhbHVlLXRkei1lcnJvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1l
cnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMWUzYTY2ZWE5MmYwMzBkYjM3NzlhNGMzZTQwMmU3YzExOGQx
ZDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6
LWVycm9yLmpzCkBAIC0wLDAgKzEsNDYgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIG4gPSAxMDAw
MDAwOworCitmdW5jdGlvbiBzaG91bGRUaHJvd1REWihmdW5jKSB7CisgICAgdmFyIGhhc1Rocm93
biA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgaWYgKGUubmFtZS5pbmRleE9mKCJSZWZlcmVuY2VFcnJvciIpICE9PSAtMSkKKyAg
ICAgICAgICAgIGhhc1Rocm93biA9IHRydWU7CisgICAgfQorICAgIGlmICghaGFzVGhyb3duKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRpZCBub3QgdGhyb3cgVERaIGVycm9yIik7Cit9CisK
K2Z1bmN0aW9uIGJhcihmKSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0
ID0gMDsKKyAgICB2YXIgc2V0ID0gICh4KSA9PiB7IHJlc3VsdCA9IHg7IHJldHVybiB0ZHpQZXJw
ZXRyYXRvcjsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYg
KGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICAgICAgcmV0dXJuIHRkelBlcnBl
dHJhdG9yOworICAgICAgICB9CisgICAgfQorICAgIGxldCB0ZHpQZXJwZXRyYXRvcjsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKK25vSW5s
aW5lKHNob3VsZFRocm93VERaKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAg
ICB2YXIgYm9vbCA9ICEoaSAlIDEwMCk7CisgICAgaWYgKGJvb2wpCisgICAgICAgIHNob3VsZFRo
cm93VERaKCgpPT4geyBmb28oYm9vbCk7IH0pOworICAgIGVsc2UgeworICAgICAgICB2YXIgcmVz
dWx0ID0gZm9vKGJvb2wpOworICAgICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2
YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVm
YXVsdC12YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDFiYmUxNDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5
YzY1YTRiYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFs
dWUuanMKQEAgLTAsMCArMSwzNyBAQAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIo
c2V0KSB7CisgICAgdmFyIHJlc3VsdCA9IHNldCgwKTsKKyAgICBpZiAocmVzdWx0ICE9PSB2b2lk
IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgcmVzdWx0OworfQorCitm
dW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBpbVVuZGVmaW5l
ZDsKKyAgICB2YXIgYmF6OworICAgIHZhciBzZXQgPSAgKHgpID0+IHsKKyAgICAgICAgcmVzdWx0
ID0geDsKKyAgICAgICAgaWYgKGJheiAhPT0gNTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCB2YWx1ZTogIiArIGJhejsKKyAgICAgICAgcmV0dXJuIGltVW5kZWZpbmVkOworICAgIH07
CisgICAgYmF6ID0gNTA7CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAg
ICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citu
b0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciBy
ZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdi
MmMyYWQzNDVlMjZjMjAzNzc4OTBkZjVmMzFmYWYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNp
bmstb3NyZXhpdC5qcwpAQCAtMCwwICsxLDI1IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0
aW9uIGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOwor
ICAgIHZhciBzZXQgPSAoeCkgPT4geyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAgICAg
ICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8
IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJl
c3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3
OWVjOWVhYTY1YzU0MTkzMGI5MDQ4MjZlN2EyM2ExM2ZiMmVhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRp
b24tc2luay5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgbiA9IDEwMDAwMDAwOworCitmdW5jdGlv
biBiYXIoZikgeyBmKDEwKTsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQg
PSAwOworICAgIHZhciBzZXQgPSB4ID0+IHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7Cisg
ICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEo
aSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjky
MDMyMDg4YWJmMjZkYWUyYWU3MWEyYWM0YzA1ZDRmMDc3NTVlNDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQu
anMKQEAgLTAsMCArMSwxOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhw
ZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJv
dyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsg
YWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDog
ZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH0KK307CisKK25vSW5saW5lKGQu
eSk7CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBp
KyspIHsKKyAgdGVzdENhc2UoZC55KCkuYmluZChlLCAibGV5IikoKSwgImJhcmxleSIsICJFcnJv
cjogZnVuY3Rpb24gYmluZCBzaG91bGRuJ3QgY2hhbmdlIGxleGljYWwgYmluZGluZyBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5
YzgzYWM1M2E3ZjZkMzUxOTYyMzIxNGMxZTlmYzYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0w
LDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2Fn
ZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCAr
ICInIjsKKyAgfQorfTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9u
KCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9Oworbm9JbmxpbmUoZC55KTsKKwordmFyIGUg
PSB7IHggOiAiYmFyIiB9OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0
Q2FzZShkLnkoKS5jYWxsKGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0
IGNoYW5nZSB0aGUgbGV4aWNhbCBiaW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIpOworICAg
IHRlc3RDYXNlKGQueSgpLmFwcGx5KGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBhcHBseSBz
aG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24i
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3
OTQ5YmM2YjJjNzhhYjQ2NTllYThjMmFjNjNkZTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
CkBAIC0wLDAgKzEsMjIgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cg
bWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFj
dHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7
fTsKKworbm9JbmxpbmUoc2ltcGxlQXJyb3dGdW5jdGlvbik7CisKK3ZhciBlcnJvck9uQ3JlYXRl
ID0gZmFsc2U7CisKK2ZvciAoaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0cnkgeworICAgICAgIHZh
ciBmYyA9IG5ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCk7CisgICB9CisgICBjYXRjaCAoZSkgewor
ICAgICBlcnJvck9uQ3JlYXRlID0gdHJ1ZTsKKyAgIH0KKworICAgIHRlc3RDYXNlKGVycm9yT25D
cmVhdGUsIHRydWUsICJFcnJvcjogTm8gZXhjZXB0aW9uIGR1cmluZyBydW4gbmV3IEFycm93RnVu
Y3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGNmYWIyNGM5MWJjNTdjOTU4NzYzMmRmZWM5YTRjOTM3OThlMjE1YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCkBAIC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0
Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsg
ZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVu
Y3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0g
KCkgPT4gZXZhbCgidGhpcy5uYW1lIik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFs
KCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7Cit9CisKK25vSW5saW5lKERvZykKKworZm9yICh2YXIg
aT0wO2k8MTAwMDA7IGkrKykgeworICB2YXIgZCA9IG5ldyBEb2coIk1heCIpOworICB0ZXN0Q2Fz
ZShkLmdldE5hbWUoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5k
ZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZShkLmdldE5h
bWVIYXJkKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGlu
c2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVj
ODE2NGU0OGQwM2E2N2ViOTJhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBA
IC0wLDAgKzEsMzkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVk
LCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVz
c2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVh
bCArICInIjsKKyAgfQorfTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAo
KSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcg
ZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCit0ZXN0Q2FzZShpbnN0YW5jZS5mdW5jKCkgPT09IGlu
c3RhbmNlLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCit2YXIgb2JqID0geworICBtZXRob2Q6IGZ1
bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworbm9JbmxpbmUo
b2JqLm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0
Q2FzZShvYmoubWV0aG9kKCkoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxl
eGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQorCit2
YXIgZmFrZSA9IHtzdGVhbDogb2JqLm1ldGhvZCgpfTsKK25vSW5saW5lKGZha2Uuc3RlYWwpOwor
Citmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UoZmFrZS5zdGVh
bCgpID09PSBvYmosIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM0Iik7Cit9CisKK3ZhciByZWFsID0ge2JvcnJv
dzogb2JqLm1ldGhvZH07Citub0lubGluZShyZWFsLmJvcnJvdyk7CisKK2ZvciAodmFyIGk9MDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShyZWFsLmJvcnJvdygpKCkgPT09IHJlYWws
IHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMTkwODZkNTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4
OTM5YzA5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4
IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkg
eworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBF
eHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7Cisg
IH0KK307CisKKwordmFyIG9iaiA9IHsgbmFtZTonb2JqJywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7
IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH19OworCitm
b3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rl
c3QnICsgaS50b1N0cmluZygpKSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJy
b3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5j
dGlvbiAjMSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVz
dWx0MSA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShy
ZXN1bHQxLCAnb2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBu
b3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9
CisKK29iai5uYW1lPSduZXdPYmonOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgewor
ICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ25ld09iai1u
YW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQorCitmb3IgKHZhciBp
PTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MiA9IG9iai5tZXRob2QoKSgndGVzdCcg
KyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcg
KyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNp
ZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMt
NC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy00LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1YmQzNjNlNGU0NmIwMmQyZjE5YmJl
Mzg1MDJmNTI4MjMzYTlmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAt
MCwwICsxLDI2IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsKKyAgbmFtZTonb2JqJywKKyAgaW50ZXJu
YWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1
bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1
ZTsgfQorICB9Cit9OworCitub0lubGluZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKTsKKwor
Zm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxP
YmplY3QubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ2ludGVybmFsT2JqZWN0LW5h
bWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5pbnRlcm5h
bE9iamVjdC5uYW1lPSduZXdJbnRlcm5hbE9iamVjdCc7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAw
MDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0
JyArIGkudG9TdHJpbmcoKSksICduZXdJbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0
cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLXRoaXMtNS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzU0OTRjZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVh
Y2U2Mjg3NTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKQEAgLTAsMCArMSw0
OCBAQAordmFyIHNvcnRlZFZhbHVlczsKKwordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVh
bCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAg
ICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2Fz
ICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIGFycjogWzEs
IDQsIDYsIDMsIDcsIDBdLAorICBidWJibGVTb3J0OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJu
ICgpID0+IHsKKyAgICAgIHZhciB0bXA7CisgICAgICB2YXIgYXIgPSB0aGlzLmFyci5zbGljZSgp
OworICAgICAgdmFyIF9sZW5ndGggPSBhci5sZW5ndGgKKyAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgX2xlbmd0aDsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGogPSBpOyBqID4gMDsgai0tKSB7
CisgICAgICAgICAgaWYgKChhcltqXSAtIGFyW2ogLSAxXSkgPCAwKSB7CisgICAgICAgICAgICB0
bXAgPSBhcltqXTsKKyAgICAgICAgICAgIGFyW2pdID0gYXJbaiAtIDFdOworICAgICAgICAgICAg
YXJbaiAtIDFdID0gdG1wOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAg
cmV0dXJuIGFyOworICAgIH0KKyAgfQorfTsKKworbm9JbmxpbmUob2JqLmJ1YmJsZVNvcnQpOwor
Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwg
NiwgMywgNywgMF07CisgICAgdGVzdENhc2Uob2JqLmJ1YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywg
IkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24gIzEiKTsKKworICAgIHZhciBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgp
KCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzBdLCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNiIpOworICAg
IHRlc3RDYXNlKHNvcnRlZFZhbHVlc1s2XSwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzciKTsKKworICAgIG9iai5h
cnIgPSBbMSwgMiwgNCwgNiwgNSwgOCwgMjEsIDE5LCAwXTsKKworICAgIHRlc3RDYXNlKG9iai5i
dWJibGVTb3J0KCkoKS5sZW5ndGgsIDksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1
ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzFdLCAx
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMTIiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJy
b3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5j
dGlvbiAjMTMiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzQxN2JjN2M4ZjE4MDUzNThiZGJhODViMmNlZjZhNjliNWY0MWVjYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
ZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1l
ID0gKCkgPT4gIHRoaXMubmFtZTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMSA9ICgpID0+
ICgpID0+IHRoaXMubmFtZTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMiA9ICgpID0+ICgp
ID0+ICgpID0+IHRoaXMubmFtZTsKK30KKwordmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKworbm9J
bmxpbmUoZC5nZXROYW1lKCkpOworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCkp
Oworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSk7CisKK2ZvciAodmFyIGk9
MDtpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9y
OiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCksIGQubmFtZSwg
IkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24gIzIiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSwg
ZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNp
bmstb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWQxMGEzMWQ2NzMxYWU2OTc0ZDY2N2VkOGQyNDg3MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNCBAQAor
dmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250
ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAg
dmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICh4KSA9PiB7CisgICAgICAvLyBDaGVjayBp
ZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250
ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3Jvbmcg
Y29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAgICByZXN1bHQgPSB4OworICAgIH0KKyAg
ICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAg
ICAgICBiYXIoc2V0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNh
bGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLWFjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNhNDMwNjM3Yzg1YmY5NDIxYWU5Yzk3ZTBkZDdmNmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDM4IEBACit2YXIgbiA9
IDEwMDAwMDAwOworCit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9
OworCitmdW5jdGlvbiBiYXIoZikgeworICAgIGlmICh0aGlzID09IG5ld0NvbnRleHQpCisgICAg
ICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIG5lc3RpbmcgZnVuY3Rpb24nOworICAgIGYoMTAp
OworfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBz
ZXQgPSAoeCkgPT4geworICAgICAgcmVzdWx0ID0geDsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93
IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwg
dGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0
IG9mIGFycm93IGZ1bmN0aW9uJzsKKyAgICB9OworCisgICAgaWYgKGIpIHsKKyAgICAgICAgYmFy
KHNldCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMTApCisgICAgICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZDogIiArIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28uY2FsbChuZXdDb250
ZXh0LCAhKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2lu
Zy1uby1kb3VibGUtYWxsb2NhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2OWUwMjcxMzljMTY2N2UxMDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBA
IC0wLDAgKzEsMzcgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcK
K307CisKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKwor
Ly8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdD
b250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7CisgICAg
ICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhp
cyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0
aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisgICAgfTsKKyAgICBp
ZiAocCkgeworICAgICAgICBjYWxsKGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAg
ICAgaWYgKHEpIHsKKyAgICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZjsKKyAgICB9CisgICAgcmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5r
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2lu
ay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAg
ICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7
Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29t
cGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHBy
b3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwor
aWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0
IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRo
aXMtc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgw
YjMzMmEzYmU3ZGUyOGY2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qcwpAQCAtMCwwICsxLDM2IEBACit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNv
bnRleHQnCit9OworCisvLyBTaG91bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0
ZSB0aGlzIGJ5IG5ld0NvbnRleHQKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9
IHggPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAor
ICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQp
CisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOwor
ICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyBy
ZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1
bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhp
cy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9m
IGFycm93IGZ1bmN0aW9uICMyJzsKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGlu
ZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYg
PSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgZmFsc2UpOy8vIFN1YnN0aXR1dGUgdGhpcwor
ICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93
ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlz
IHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAor
CisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NS
IGV4aXQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3Rp
dHV0ZSB0aGlzCit2YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRo
cm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
dGhpcy1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3
ZWEwNzYzNWE0MTMxY2QyMzExZDQ1MDczNWY1N2MxZGQ5NTg2NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSw0NSBAQAordmFyIG5ld0NvbnRleHQgPSB7
CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2Fs
bCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBx
KSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9u
IHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAh
PSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93
IGZ1bmN0aW9uICMxJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBp
ZiAocSkgZy5pbm5lciA9IDQyOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAg
IC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlz
ICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRo
cm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsKKworICAgICAgcmV0dXJu
IHg7CisgICAgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVl
KTsvLyB1c2UgY2FsbCB0byBzdWJzdGl0dXRlIGNvbnRleHQKKyAgICB2YXIgcmVzdWx0ID0gZig0
Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQy
IGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1
bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUg
YWxsb2NhdGlvbiBvbiB0aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2lu
ay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lm
IChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3Vs
ZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9y
OiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFs
bG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFy
IGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5p
bm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQg
YmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NGNlMGM2NThkM2EyZjc5MjI5ZGY0Zjg5MmNjZGExNTEzYzk0ZTU5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVy
cy5qcwpAQCAtMCwwICsxLDE3IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBl
eHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRo
cm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIg
KyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkg
PT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93RnVuY3Rpb24pOworCitmb3IgKHZhciBpPTA7
aTwxMDAwMDtpKyspIHsKKyAgIHRlc3RDYXNlKE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVB
cnJvd0Z1bmN0aW9uKSwgRnVuY3Rpb24ucHJvdG90eXBlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdl
dFByb3RvdHlwZU9mIHZhbHVlIGZvciBhcnJvdyBmdW5jdGlvbiIpOworCisgICB0ZXN0Q2FzZShz
aW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90
IGNvcnJlY3QgcmVzdWx0IGZvciBpbnN0YW5jZW9mIG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24i
KTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5j
dGlvbiwgdHJ1ZSwgIkVycm9yOiBOb3QgY29ycmVjdCByZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1l
dGhvZCBvZiBhcnJvdyBmdW5jdGlvICAgbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA3YTFmMGE0OWNiMTY4NjNjNTkyMTM2MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tcnVuLTEwLTEuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rp
b24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICIn
LCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291
bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKysp
IHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5h
bWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAg
IHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2Jq
LmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVy
biByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVy
aW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVu
KDEwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5j
dGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNk
YjNjNzBhMWIyN2MzZGJiNTIzODA5NTVmNTM1M2Q3Njc0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIu
anMKQEAgLTAsMCArMSwyNSBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhw
ZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJv
dyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsg
YWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJl
c3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2Jq
ID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlz
LmdldE5hbWUgPSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworCisgICAgdmFy
IG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0
TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJl
c3VsdDsKK30KKwordGVzdENhc2UocnVuKDEpLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRp
b24gb2YgYXJyb3cgZnVuY3Rpb24gb25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUs
ICJFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXJ1bi0xMDAwMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFi
MDFjYTI3ZDBiOTcyMGI1N2U4ZDYwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanMKQEAgLTAs
MCArMSwyMyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdl
ICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsg
IiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRy
dWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rp
b24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUg
PSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVt
IiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVz
dWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNl
KHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJy
b3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYzQyNzFmNGEzMTU5MTYyNWEwYmQzZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXJ1bi0xMDAwMC0yLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVu
KGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7
IGkrKykgeworICAgIHZhciBPYmogPSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1l
ID0gbmFtZTsKKyAgICAgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsK
KyAgICB9OworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9i
ai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9
CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwg
IkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0
aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFs
bG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODYyYzYyOGUzYjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1
MWRlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCAr
MSwyOCBAQAorZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOwor
CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7IH07CisgICAgaWYg
KHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAg
IGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmso
dHJ1ZSwgZmFsc2UpOworICAgIGlmIChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBl
eHBlY3RlZCBvLnggdG8gYmUgMiBidXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBw
b2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKwor
Ly8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBl
eGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cg
IkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMyBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5r
aW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAx
NDBmYTE0OTk3M2UxN2FhYThkOTEwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCkBA
IC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4g
eDsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVy
biB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0
ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1
bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhh
dCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9
IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQy
KQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXNpbmtpbmctcHV0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3
ZWZjNjE4NmJlMDU3YzNjYmIyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1wdXQuanMKQEAgLTAsMCAr
MSwyOCBAQAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB4OworICAg
IGlmIChwKSB7IGlmIChxKSBnLmlubmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHgg
PT4geDsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYo
NDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0
MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlv
biBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9j
YXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1
ZSwgZmFsc2UpOwordmFyIHJlc3VsdCA9IGYoMTIpOworaWYgKHJlc3VsdCAhPSAxMikKKyAgICAv
LyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIgYXMgaXQgc2hvdWxkIGJlIGVpdGhlciBjb3JyZWN0IG9y
IGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3Qg
IiArIHJlc3VsdDsKKworLy8gQ2hlY2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsg
YmV5b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7
Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVy
cm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ODc0OTIzOTcxOTgzZGNkYTM0YzI2OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI3IEBACit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFy
IEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVT
dXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0g
KCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7
CisgICAgfQorICB9Cit9OworCit2YXIgZXhjZXB0aW9uID0gbnVsbDsKK2ZvciAodmFyIGk9MDsg
aTwxMDAwMDsgaSsrKSB7CisgIHRyeSB7CisgICAgICAgbmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVm
ZXJlbmNlRXJyb3IpKQorICAgICAgICAgIHRocm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3Qg
YSByZWZlcmVuY2UgZXJyb3IiOworICB9CisKKyAgaWYgKCFleGNlcHRpb24pCisgICAgICB0aHJv
dyAiRXhjZXB0aW9uIG5vdCB0aHJvd24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0
aW9uIjsKKworICB2YXIgZSA9IG5ldyBCKGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1M2VjMGRkZDU1MTRmYWY0ZDBkMDNjOWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAgKzEsMjcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9u
IChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywg
YnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGFmMSA9ICgpID0+IHt9
OwordmFyIGFmMiA9IChhKSA9PiB7YSArIDF9OworCitub0lubGluZShhZjEpOworbm9JbmxpbmUo
YWYyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgIHRlc3RDYXNlKHR5
cGVvZiBhZjEsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UodHlwZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVy
cm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCisvL0Zp
eG1lOiBTb21lIGJ1ZyBpbiBpbmxpbmluZyB0eXBlb2Ygd2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFt
ZXRlcnMgZnRsLW5vLWNqaXQtbm8taW5saW5lLXZhbGlkYXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1
ZSAtLWVuYWJsZUZ1bmN0aW9uRG90QXJndW1lbnRzXD10cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJ
VD1mYWxzZSAtLXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBo
PXRydWUgLS1tYXhpbXVtSW5saW5pbmdEZXB0aD0xCisvLworLy8gZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSAgeworLy8gICBpZiAodHlwZW9mIChmdW5jdGlvbiAoKSB7fSkgIT09ICdm
dW5jdGlvbicpCisvLyAgICAgICB0aHJvdyAnV3JvbmcgdHlwZSc7CisvLyB9CisvLyAgdGVzdENh
c2UodHlwZW9mICgpPT57fSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9m
IHRoZSBhcnJvdyBmdW5jdGlvbiAjMy0iICsgaSk7CisKKy8vICB0ZXN0Q2FzZSh0eXBlb2YgKChi
KSA9PiB7YiArIDF9KSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUz
NDU3Y2FhNjRkMWU2YjdhMDIuLmYxZDFiOGYxNTAwYWRjY2U4YjczYzY4ODVjODA1ODgzYzk2NzA1
MTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0wOC0xMiAgU2thY2hrb3YgT2xla3NhbmRy
ICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFy
cm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExl
eGljYWwgYmluZCBvZiB0aGlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQ5NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9h
cnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlv
bi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tY29uc3RydWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
YXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0
aW9uLXRkei1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24t
dGR6Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0
aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWJpbmQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qczogQWRkZWQuCisgICAgICAgICoganMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qczogQWRkZWQuCisKIDIwMTUtMDgtMTMg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSZWR1Y2UgZmxha2luZXNzIG9mIGluc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERh
dGFiYXNlTmFtZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmlu
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIyYjMyNmNjYmI0ZTE0YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2Yw
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rp
b24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZAorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkLnkoKS5iaW5kKGUsICdsZXknKSgpIGlz
ICdiYXJsZXknCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlh
Y2IyYmM4ZmQ1MDRjNjhmMDQ0NWE2ZWFjNGE2YTE0NTRhYmFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tYmluZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNm
NDVlMTZiOTk2NTcyZDFhZmRlZWRkNTkxMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitU
ZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBk
dXJpbmcgaW52b2tlIGNhbGwmYXBwbHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZC55KCkuY2FsbChlKSBpcyAnZm9vJworUEFTUyBkLnkoKS5hcHBseShlKSBpcyAnZm9v
JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2
YTg3NDllYzViN2U3ODNjNmE5ZWMzMTMyZDJkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjcwNmZm
ZjE3YzIxMjM4NTM2NDBiYjJhNGViMTdkNjNlMWEzNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3Rvcgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5j
dGlvbigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0
cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJykuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5
Y2RkNGQ4YmRmYTYyNDFjYjZiZWZiZjA0Y2M5NTgzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tY29uc3RydWN0b3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjY2ZmMyODhjYWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2
NGE5NDg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiBsZXhpY2FsIGJpbmQgb2YgdGhpcworCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBkLmdldE5hbWUoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXRO
YW1lSGFyZCgpIGlzIGQubmFtZQorUEFTUyBkLmdldE5hbWVOZXN0aW5nKCkoKSgpIGlzIGQubmFt
ZQorUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnb2JqQ29kZS1uYW1lLWNvcnJlY3Qn
CitQQVNTIG9iai5tZXRob2QoKSgnY29ycmVjdCcpIGlzICduZXdPYmpDb2RlLW5hbWUtY29ycmVj
dCcKK1BBU1MgZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdp
bnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3Qu
bWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3SW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0Jwor
UEFTUyBpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlIGlzIHRydWUKK1BBU1Mgb3duZXJPYmou
bWV0aG9kKCkoKSA9PT0gb3duZXJPYmogaXMgdHJ1ZQorUEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93
bmVyT2JqIGlzIHRydWUKK1BBU1MgcmVhbC5ib3Jyb3coKSgpID09PSByZWFsIGlzIHRydWUKK1BB
U1MgYXJyb3dGdW5jdGlvbignLXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1MgaG9zdE9iai5m
dW5jKCctdGhpcycpIGlzICJyaWdodC10aGlzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWVhMjJhNzZmZGY4YmZm
NWU3MmU1MWI3Nzk0YjNlMzQ3ZDE2NDJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sCkBAIC0wLDAgKzEsMTAgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xOTE1MmU1ZTM3YzY5MTVmMzgyM2UyOWIyMGE5NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gaW5zdGFuY2Vv
ZiBhbmQgdHlwZW9mIG9wZXJhdG9ycworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rp
b24ucHJvdG90eXBlCitQQVNTIHNpbXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlv
biBpcyB0cnVlCitQQVNTIHNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rp
b24gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlmNjdmOGIwMGU0NjA1NWVlNmZhZTVjMWU4Mjg5ZWZlZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCkBAIC0wLDAgKzEs
MTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLW90aGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZj
ZDg2MDBlODg0MTI3N2M0OTRhOTg5MDIyNDUyZWE2YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6CisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXRkei5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2Qz
ZmM0OGU1YzUzZmMxMTkyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXRkei5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXR5cGVvZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVv
Zi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJmYjJjZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUw
Y2E1MzQ5YzFiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9
PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNTIHR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbicgaXMg
dHJ1ZQorUEFTUyB0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0
eXBlb2YgKChiKSA9PiB7YiArIDF9KT09PSdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXR5cGVvZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2
NWUzNzNmZWRiNzQzODBlMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXR5cGVvZi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2
MWRlM2JhYjUyMDljNzJkZGNmNTAyMTAwMzQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitKU1JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2
MWNiZWIwYjllZTEzM2ZlODczMTEyYmZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNz
LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg5MjRjODQyNzZlNzEwODc3ODZjNTk0MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBAQAordmFyIGFmID0gKGEsIGIpID0+IGEgKyBi
OworCitub0lubGluZShhZik7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGFm
KGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
MDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAh
PSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1j
YWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2Fs
bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNTczYzNiNWUwY2E3OTE3OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE1IEBACit2YXIgZmUgPSBmdW5jdGlvbiAoYSwg
YikgeyByZXR1cm4gYSArIGI7fQorCitub0lubGluZShmZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBi
KSB7CisgICAgcmV0dXJuIGZlKGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7
CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1iaW5kLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tYmluZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTNmMDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0
ZTk5NzljMDJhYzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlvbign
VGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4g
ZHVyaW5nIGludm9rZSBiaW5kJyk7CisKK3ZhciBkID0geworICB4IDogImJhciIsCisgIHkgOiBm
dW5jdGlvbigpIHsgcmV0dXJuIHogPT4gdGhpcy54ICsgejsgfQorfTsKKwordmFyIGUgPSB7IHgg
OiAiYmF6IiB9OworCitzaG91bGRCZSgiZC55KCkuYmluZChlLCAnbGV5JykoKSIsICInYmFybGV5
JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4
ZjkxMWJmMWM0NGQzODlkMGEzZDIxODQ2ODM0ODRiNmY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAg
KzEsMTMgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlz
IHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHknKTsKKwordmFy
IGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhp
cy54OyB9Cit9OworCit2YXIgZSA9IHsgeCA6ICJiYXIiIH07CisKK3Nob3VsZEJlKCdkLnkoKS5j
YWxsKGUpJywgIidmb28nIik7CitzaG91bGRCZSgnZC55KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFlZmFkMDc2ODQ3YmZmNDkyOWY3ODA3NzY1Zjk5MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci5qcwpAQCAtMCwwICsxLDcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93
IGZ1bmN0aW9uIG5vIGNvbnN0cnVjdG9yJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0g
KCkgPT4ge307CisKK3Nob3VsZFRocm93KCduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJyk7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZTU2YTE1NTMwZjM0Y2MzMDhhY2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRoaXMnKTsKKworZnVu
Y3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0g
KCkgPT4gZXZhbCgidGhpcy5uYW1lIik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFs
KCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAo
KSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CitzaG91
bGRCZSgnZC5nZXROYW1lKCknLCAnZC5uYW1lJyk7CitzaG91bGRCZSgnZC5nZXROYW1lSGFyZCgp
JywgJ2QubmFtZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1l
Jyk7CisKK3ZhciBvYmogPSB7CisgIG5hbWUgICA6ICdvYmpDb2RlJywKKyAgbWV0aG9kIDogZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsg
dmFsdWU7CisgIH0KK307CisKK3Nob3VsZEJlKCJvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICIn
b2JqQ29kZS1uYW1lLWNvcnJlY3QnIik7CitvYmoubmFtZT0nbmV3T2JqQ29kZSc7CitzaG91bGRC
ZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0JyIp
OworCit2YXIgZGVlcE9iaiA9IHsKKyAgbmFtZSA6ICd3cm9uZ09iakNvZGUnLAorICBpbnRlcm5h
bE9iamVjdDogeworICAgIG5hbWUgIDonaW50ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVu
Y3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVl
OyB9CisgIH0KK307CitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgn
Y29ycmVjdCcpIiwgIidpbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK2RlZXBPYmou
aW50ZXJuYWxPYmplY3QubmFtZSA9ICduZXdJbnRlcm5hbE9iamVjdCc7CisKK3Nob3VsZEJlKCJk
ZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld0ludGVybmFs
T2JqZWN0LW5hbWUtY29ycmVjdCciKTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5j
dGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2Ug
PSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCitzaG91bGRCZSgiaW5zdGFuY2UuZnVuYygp
ID09PSBpbnN0YW5jZSIsICJ0cnVlIik7CisKK3ZhciBvd25lck9iaiA9IHsKKyAgbWV0aG9kIDog
ZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB0aGlzOworICB9Cit9OworCitzaG91bGRC
ZSgib3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgZmFr
ZSA9IHsgc3RlYWwgOiBvd25lck9iai5tZXRob2QoKSB9Oworc2hvdWxkQmUoImZha2Uuc3RlYWwo
KSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgcmVhbCA9IHsgYm9ycm93IDogb3duZXJP
YmoubWV0aG9kIH07CitzaG91bGRCZSgicmVhbC5ib3Jyb3coKSgpID09PSByZWFsIiwgInRydWUi
KTsKKwordmFyIGFycm93RnVuY3Rpb24gPSB7IHggOiAicmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9u
IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH19LmdldEFycm93RnVuY3Rp
b24oKTsKK3ZhciBob3N0T2JqID0geyB4IDogIndyb25nIiwgZnVuYyA6IGFycm93RnVuY3Rpb24g
fTsKKworc2hvdWxkQmUoImFycm93RnVuY3Rpb24oJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7
CitzaG91bGRCZSgiaG9zdE9iai5mdW5jKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzk5MzFjM2Rl
YmNiNTAyN2FkMTRmZDE1NDdlNWFiYTAzOGI0YjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCkBAIC0wLDAgKzEs
MTAgQEAKKy8vIEluc3BpcmVkIGJ5IG1vemlsbGEgdGVzdHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBm
b3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsK
KwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworc2hvdWxkQmUoIk9iamVj
dC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5
cGUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24i
LCAidHJ1ZSIpOworc2hvdWxkQmUoInNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0g
RnVuY3Rpb24iLCAidHJ1ZSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5q
cyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYWY1OGZjNjUxM2VkYWJkZTFkZDY1MDc0OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6
LmpzCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1
bmN0aW9uIHRlc3QgdGR6Jyk7CisKK3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9IGNsYXNz
IEIgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7Cisg
ICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgICAgdmFyIGYgPSAoKSA9PiB0aGlz
OworICAgICAgc3VwZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICB9Cisg
IH0KK307CisKK3ZhciBpc1JlZmVyZW5jZUVycm9yID0gZmFsc2U7Cit0cnkgeworICAgICBuZXcg
Qih0cnVlKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5j
ZW9mIFJlZmVyZW5jZUVycm9yOworfQorCitzaG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0
cnVlJyk7CisKK3ZhciBlID0gbmV3IEIoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXR5cGVvZi5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmFhMjY5MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJk
OGJlM2Q0OGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAgKzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9
PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjEg
PT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1
bmN0aW9uJyIsICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5j
dGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0n
ZnVuY3Rpb24nIiwgInRydWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259139</attachid>
            <date>2015-08-17 01:16:07 -0700</date>
            <delta_ts>2015-08-17 06:13:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817111606.patch</filename>
            <type>text/plain</type>
            <size>178843</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uOWE3MmNjMzgzM2JkMGYxNGQ2NjkxY2FhNTA0
N2Y4MjQwYmU0ODg2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25B
cmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVu
dHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVj
bCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAg
ICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2
YWx1ZXMgaW50byB0aGUKQEAgLTk1NSw2ICs5NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxpZiBD
UFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICs5OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0K
KyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAg
ICB7CiAgICAgICAgIG1vdmVEb3VibGUoYXJnNCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAg
LTEwMDcsNiArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNlbHNlCisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBh
c3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBhcmcxKTsKQEAgLTExMjgsNyArMTEyOSw3IEBAIHB1YmxpYzoKICNlbHNlCiAjZXJyb3Ig
IkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCi0KKyAgICAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkBAIC0xMjQxLDYgKzEy
NDIsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGVXKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQ
UlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQUjxHUFJJbmZvOjph
cmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAg
IG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CiAjZW5k
aWYKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKICAgICB7CkBAIC0xNDcwLDcgKzE0NzgsMTQg
QEAgcHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2Fs
bGluZyBjb252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3Vt
ZW50IHJlZ2lzdGVycywgZS5nLiBBUk12Ny4KICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTID09IDQKLQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGVXKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmcz
KQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQ
UjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAgIG1vdmUoYXJn
MiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisgICAgCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHBv
a2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDAzOGY1ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3ZmYyZWJhNDBlYjQuLmJiYzg1MjNm
NWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9lbmQpCiAgICAgICAgIERFRklORV9PUChvcF9lbnRl
cikKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9w
X2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAg
ICAgIERFRklORV9PUChvcF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRf
b2ZfbGluZToKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHAp
CisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAgICBERUZJ
TkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHApCiAg
ICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4NDEx
YTdlZjY1YTljNmJkY2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2Li43NzFmZDliNDA2NWJkZDE3MjJj
MGU3MmI4ODcyMDhlYzYyZjFlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5OCw2
ICs0OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9u
dWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1
Y3Rpb24qKTsKQEAgLTUzOSw2ICs1NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
ZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19m
dW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CkBAIC02NTMsNiAr
NjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5z
dHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0
U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwg
Ym9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUo
aW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25l
ZCBkZXB0aCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50IHNj
b3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAgLTcyMyw2ICs3MjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQUlJlZywgQnlWYWxJbmZvKik7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RUpzYywgR1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSnNjQywgaW50LCBHUFJSZWcsIEpTQ2VsbCopOworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwg
aW50LCBHUFJSZWcsIEpTQ2VsbCosIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIEdQUlJlZywgaW50MzJfdCk7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRp
b25fRUpzY1osIGludCwgR1BSUmVnLCBpbnQzMl90KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ZDY4NjkwMDgxYzk5NmQ3ZTMz
YmYzYmQyNWRjYzU4YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcyNDk1NmJmNTg0OTFiM2RlNzgzYTZm
Y2RjMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjcxLDYg
KzI3MSwxMiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYQogICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAK
K0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwsIEdQUlJlZyBhcmcyKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsKKyAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOworfQor
ICAgIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2ludGVyKQog
ewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU5OGQ0ZWM5
OWMxZDE4ZTZjMzk2MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4M2JjYzhjNDVkZTY2NmY3M2M5ZTkx
MWY1MTQyOWYzNWViMTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTY3Myw2ICs2NzQsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hh
aW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQorICAgIAor
dm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpD
YWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlv
bjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwg
cmVnVDApOworfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NjIsMjYgKzk3MSw0NSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
KyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAK
K3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbiA9IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cDsKKyAgICAKICAg
ICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYg
KGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUg
PSBicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVn
aXN0ZXIpICogZHN0KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJl
Z1QxKTsKICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3Io
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpV
bmRlZmluZWRUYWcpKTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICNlbmRp
ZgotCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlLmxpbmso
dGhpcyk7Ci0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2RlQmxvY2st
PmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhwcik7Cisg
ICAgICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+
ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIGlmIChp
c0Fycm93RnVuY3Rpb24pCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyAgICBlbHNlCisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9u
KTsKICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29wX25l
d19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorICAgIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOTFjMDBl
M2ZkNDVlMDk3ZTNiYjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4uYjM5YWUxZDFhMzA2ODAzNDNlOWZk
OWE3MjMxNDI5YjZlNTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNF
bnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTkyMiw2ICs5
MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUs
IHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zm
c2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDAp
OworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
aW5kZXggYjVmOWUzNjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMwMjRjZGNkYjkzYi4uNGZmMGUzZDE1
MGI0MjYwZWY5NGIyMWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFRvREZH
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTk0Miw2ICs5
NDMsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJs
ZSksIHNjb3BlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0
ZWQpCit7CisgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25F
eGVjdXRhYmxlOjppbmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgICAgICAKKyAgICBKU0Fycm93RnVuY3Rpb24qIGFycm93RnVuY3Rp
b24gID0gaXNJbnZhbGlkYXRlZAorICAgICAgICA/IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUs
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKQorICAgICAgICA6IEpTQXJyb3dGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyb3dGdW5jdGlvbik7Cit9Cisg
ICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cit9CisgICAg
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFi
bGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVl
LCBmYWxzZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5k
ZXggM2Q4M2Y1OTBkY2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJjYmU4NGY5Yi4uYTY3Y2FhY2IzMmZi
MjE1OGE5YzA1ZTZhNTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQq
LCB2bwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7Cit0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQ0opKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU1MpKEV4ZWNTdGF0ZSos
IHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBK
U0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAtMjg4LDYg
KzI4OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlC
dWZmZXJXaXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFM
OworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9u
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdl
eHAoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYW5kbGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKaW5kZXggMmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDllZjliMDEzOGQ5YTgzZjFlYy4uYTJh
NmIyYjExYzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJW
TS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
aW5kZXggNTViODFlZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJiNDFmNTY4NWQ3Zi4uMmNkOWY2ZWI4
ZDY4Mzg2ODcwOTdjNGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRp
b25zLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgpAQCAtMTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3Jj
Zl9leGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZh
bHNlKQotCisgICAgCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9v
cGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBp
bnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTAxMywxMiArMTAxNCwyNCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBK
U1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rl
cjo6c2NvcGUoKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2Nr
LT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpOworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3Bl
cmFuZCk7CiAgICAgCi0gICAgTExJTlRfUkVUVVJOKGZ1bmMpOworICAgIExMSU5UX1JFVFVSTihK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1BfQyg0KS5qc1ZhbHVl
KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rl
cjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxv
Y2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVS
TihKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRoaXNWYWx1
ZSkpOwogfQogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTA5Niw3ICsxMTA5LDcgQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlv
biogcGMsIENvZGUKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQo
KTsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAKKwogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOGNjNjlhOTYwMGJiZjlkODUzMzlkNjA5NTk1ZjY3
YzY4ZDA3NjcxYi4uM2YxZGFhODEyYjcwMmUyM2M2YWFlZjlmZDdjMDY3MWVlMjAyNWMwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hh
cik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjOTEw
NjE3ZWQ4MzRiNzRjOWYyZjhlZTRiMjY4N2M4YjljZmUzYzdjLi43M2ZjNTg4NDQyZGRjNGI5Y2Zh
N2I4OGYwMDRjYTg2NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTgzLDYgKzExODMsMTAgQEAgX2xs
aW50X29wX25ld19mdW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9u
ZXdfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19hcnJvd19mdW5j
X2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDUpCiAKIF9sbGludF9vcF9j
YWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZTkwZWNlZGZh
NzMwOTgyZmVlZjcxZWViMGNlYTY0MzgyMzRhNjkxYy4uN2VmNmI4N2MxNzBhZDA4M2IxZjUyOWRh
ODgzNmMwMGNkYTY0YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIzNzMsMyArMjM3MywxMiBA
QCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlz
cGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisg
ICAgbG9hZGkgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDk0
NTVmNzVjN2I2NjQyZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1Yi4uZDIxNTJhMmYyNzdhZGU1ODc5
NzZhMWMzZjEyMDIzNzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyMjYsMyArMjIyNiwxMSBA
QCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlz
cGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBKU0Fycm93
RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
MSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5NGE2Ny4u
ODA2ZGI1MjMwM2Q1YWQzYTcxODgxMjlmODhiZDc2NGM2YjUwZWVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOSArMzYxLDE5IEBAIHB1Ymxp
YzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAg
ICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3Ry
aWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAgICB7CiAgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAg
ICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29s
dW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250
ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAgICAgICAg
IGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwg
aXNBcnJvd0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJy
b3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgeworICAgICAg
ICB1c2VzVGhpcygpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRP
ZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1
bW4pOwotCi0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5h
KSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZv
LmJvZHksIHNvdXJjZSk7CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZv
Lm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8u
Ym9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0ZTEyODg0OGVhOGI0M2ZkODYzNjk3
NGNiOTk3YzM3ZGIuLmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0M2JjYmExOTY5M2FkYmQxNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBA
IC04OTAsMTMgKzg5MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIAorICAgIGlubGluZSBC
YXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKICAgICB7
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rp
b25FeHByZXNzaW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhw
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UpCisgICAgICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1f
bWV0YWRhdGEsIHNvdXJjZSkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIEZ1bmNEZWNsTm9k
ZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9tZXRhZGF0YShtX21ldGFkYXRhKQpAQCAtOTA0LDYgKzkxMCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlk
ZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgQXJyb3dGdW5j
RXhwck5vZGU6OkFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRh
ZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5v
ZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwog
I2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIGlubGluZSBDbGFzc0RlY2xOb2RlOjpD
bGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBjbGFzc0RlY2xhcmF0aW9uKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGNmNGZlNDUwYTkyNDk1
MDRmMzBiYTg1YTI2NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUzMzA1YzRhMGMyMWM3MzM4ODM5YzI5
ZjIzYzc0ZGU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0x
NTEsNyArMTUxLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KAogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9u
LCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlKQorICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogTm9kZShlbmRM
b2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAs
IG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw2ICsxNjMsNyBAQCBGdW5jdGlvbk1ldGFk
YXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9k
ZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAg
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rv
cktpbmQpKQorICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKIHsK
ICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4
IDFkNmIwM2Q3NzY2Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQuLjg3MzY2OGVjMzdiNDI3
YjkyMDY0OWRlMzA2ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVh
bCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUFy
cmF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWRk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDksNyArMTgxMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKTsKIAog
ICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzUsNiArMTgzNiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiAgICAgICAgIHZvaWQg
c2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9m
ZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2MCw2ICsxODYyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsK
ICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKKyAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb24gOiAxOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJs
aWMgU2NvcGVOb2RlIHsKQEAgLTE4ODksMTggKzE4OTIsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jRXhw
ck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJhc2VGdW5jRXhwck5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4
cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgQmFzZUZ1bmNFeHBy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCisgICAgcHJvdGVj
dGVkOgorICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICB9Owor
CisKKyAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9kZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29k
ZSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB9OwogCi0gICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21l
dGFkYXRhOworICAgIGNsYXNzIEFycm93RnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhw
ck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwg
Y29uc3QgU291cmNlQ29kZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICNpZiBFTkFCTEUoRVM2
X0NMQVNTX1NZTlRBWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCBhZWU3MGI2YTczMjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxLi5mNTA4MTRlN2IxNDJh
YjUzMDBkODRhNGI3MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkJvCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CisgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9k
eUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9u
Qm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQs
IHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTE1NjIsNyArMTU2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAg
ICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENo
ZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90
IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25N
ZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBh
cnNlTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNB
cnJvd0Z1bmN0aW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE3MzcsNyArMTczOCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
ID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLQorICAgIAogICAg
IGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAv
LyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUg
Y2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlv
bi4KQEAgLTE3NTYsMTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAg
ICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0
T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRp
b24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLQorICAgICAgICAKKyAg
ICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBh
cnNlVHlwZTsKKyAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9j
YXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAg
ICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0
b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBj
YWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFt
ZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgZnVu
Y3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwog
ICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKQEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUp
OwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rp
b25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VU
eXBlKQorICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAgICAgZnVuY3Rpb25C
b2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9j
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXgg
MDc2MGMxOWViMTYzNmRiMjFhMTc5NjEyYTU0OTZlMTljZmQxYmIwNy4uZGM1NjFmOWIxYTZkYTM2
NDNiODI3MmZlN2IxMmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgQ2xh
c3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxp
c3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBp
bnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSkgeyByZXR1cm4g
RnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJv
b2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAg
aW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCAwYWIxNjcyMTE2
ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2OTRmMjdhNDU4NzNiMmEyMTY3YTM2
OTYzNWQzZTU5NDVhYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcApAQCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0cjxDb2RlQmxvY2s+IFNjcmlwdEV4
ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
ID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2Zm
OwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc1Byb2Zp
bGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPQotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKAotICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxl
LT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgZXhl
Y3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
ciwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNlKGV4ZWN1
dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5tX3Vu
bGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtl
ZENvZGVCbG9jaykgewogICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmNlMjQyOGNi
YzEwMWRkYTZjYjEwMWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2YyYmRlODhjNWE2ZTkxNjc2MDM2ZWUy
N2Q3NDRmNzY0NTM5Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaApAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2Rl
KCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZh
cmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMo
KTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTMwLDcg
KzUzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1
bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUo
KTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAg
IGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0
IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgp
OyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFjMjYwZTE2
YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDgx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNo
a292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKKwor
I2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6c19pbmZv
ID0geyAiQXJyb3dGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNBcnJvd0Z1bmN0aW9uKSB9OworCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2VsbCkt
PkpTQXJyb3dGdW5jdGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOworfQorCitKU0Fycm93RnVuY3Rp
b24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgSlNB
cnJvd0Z1bmN0aW9uKiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
Ym91bmRUaGlzKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlX
cml0ZSh2bSwgcmVzdWx0LCAiQWxsb2NhdGluZyBhbiBhcnJvdyBmdW5jdGlvbiIpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1
ZSBib3VuZFRoaXMpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmds
b2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhp
cyh2bSwgdGhpcywgYm91bmRUaGlzKQoreworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dG
dW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFs
dWUgYm91bmRUaGlzKQoreworICAgIEFTU0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlv
bigpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNB
cnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBK
U0Fycm93RnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYp
Cit7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIyMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3Nh
bmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmlu
ZSBKU0Fycm93RnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2ly
ZWRPZmZzZXRzOworICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rp
b24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVh
dGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgc3Rh
dGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKwor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgCisgICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEpTQXJyb3dGdW5jdGlvbik7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBK
U0Fycm93RnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICB7CisgICAg
ICAgIEpTQXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0Fycm93RnVuY3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVjdHVy
ZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisK
KyAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9Cisg
ICAgCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dGdW5jdGlv
biwgbV9ib3VuZFRoaXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVkOgorICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgCitwcml2YXRlOgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgIAorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2JvdW5kVGhp
czsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQXJyb3dGdW5j
dGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXgg
MGI4N2Q3NWM5MTQ1MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBmMDkzZS4uOTI4MzUwZTI0NzhjNDVm
N2JmN2U4YWE4NGM5ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaApAQCAtMTQxLDYgKzE0MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
KiwgU3RydWN0dXJlKik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhl
Y3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFz
ZTo6ZmluaXNoQ3JlYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2ZTVjMTE2NGNiMjdmYTVlNDE2MThi
NGI4MTQyZjAyLi5mMDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUyN2I2M2I2NDRhODg0NDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgK
QEAgLTQ0LDYgKzQ0LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzCiAgICAgLCBtX3JhcmVE
YXRhKCkKIHsKIH0KKyAgICAKK2lubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQorICAgICwgbV9l
eGVjdXRhYmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQorICAgICwgbV9yYXJlRGF0YSgpCit7Cit9
CiAKIGlubGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFkMDQyMy4u
ZGExYWMyNWFhYjAwODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMwZmYzOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTksNiArNTks
NyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmgiCkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgZXhlYy0+c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsKIAogICAgIG1fZnVu
Y3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2Fycm93RnVuY3Rp
b25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5j
dGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1
bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24odm0sIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFtZU9mZnNl
dCkpOwogICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOwpAQCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA5OTg2YmNmNjI0
NWUyY2M0NjgyMGIxMzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEyYjI5MzA1NWU5YmFlMzBiYjczZmQ5
MDE1YmMwMDM4MzYzYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
bmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFt
ZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0
dXJlOwpAQCAtNDYyLDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxlZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fycm93
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0
aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MWUzYTY2ZWE5MmYwMzBkYjM3NzlhNGMzZTQwMmU3YzExOGQxZDgxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2
YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpzCkBAIC0wLDAgKzEs
NDYgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBzaG91
bGRUaHJvd1REWihmdW5jKSB7CisgICAgdmFyIGhhc1Rocm93biA9IGZhbHNlOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUubmFtZS5p
bmRleE9mKCJSZWZlcmVuY2VFcnJvciIpICE9PSAtMSkKKyAgICAgICAgICAgIGhhc1Rocm93biA9
IHRydWU7CisgICAgfQorICAgIGlmICghaGFzVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkRpZCBub3QgdGhyb3cgVERaIGVycm9yIik7Cit9CisKK2Z1bmN0aW9uIGJhcihmKSB7IH0K
KworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0g
ICh4KSA9PiB7IHJlc3VsdCA9IHg7IHJldHVybiB0ZHpQZXJwZXRyYXRvcjsgfQorICAgIGlmIChi
KSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJh
cihzZXQpOworICAgICAgICAgICAgcmV0dXJuIHRkelBlcnBldHJhdG9yOworICAgICAgICB9Cisg
ICAgfQorICAgIGxldCB0ZHpQZXJwZXRyYXRvcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitu
b0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKHNob3VsZFRocm93VERaKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgYm9vbCA9ICEoaSAlIDEw
MCk7CisgICAgaWYgKGJvb2wpCisgICAgICAgIHNob3VsZFRocm93VERaKCgpPT4geyBmb28oYm9v
bCk7IH0pOworICAgIGVsc2UgeworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKGJvb2wpOworICAg
ICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRl
ZmF1bHQtdmFsdWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNDFiYmUxNDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5YzY1YTRiYTc3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBA
QAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoc2V0KSB7CisgICAgdmFyIHJlc3Vs
dCA9IHNldCgwKTsKKyAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlOiAiICsgcmVzdWx0OworfQorCitmdW5jdGlvbiBmb28oYikgeworICAg
IHZhciByZXN1bHQgPSAwOworICAgIHZhciBpbVVuZGVmaW5lZDsKKyAgICB2YXIgYmF6OworICAg
IHZhciBzZXQgPSAgKHgpID0+IHsKKyAgICAgICAgcmVzdWx0ID0geDsKKyAgICAgICAgaWYgKGJh
eiAhPT0gNTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGJhejsK
KyAgICAgICAgcmV0dXJuIGltVW5kZWZpbmVkOworICAgIH07CisgICAgYmF6ID0gNTA7CisgICAg
aWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAg
ICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAw
KSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdiMmMyYWQzNDVlMjZjMjAzNzc4OTBk
ZjVmMzFmYWYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCww
ICsxLDI1IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5j
dGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4g
eyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAg
ICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citu
b0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciBy
ZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3OWVjOWVhYTY1YzU0MTkzMGI5MDQ4
MjZlN2EyM2ExM2ZiMmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsx
LDI0IEBACit2YXIgbiA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEwKTsgfQor
CitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSB4
ID0+IHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAg
ICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIg
KyByZXN1bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChy
ZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWJvdW5kLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDMyMDg4YWJmMjZkYWUyYWU3MWEy
YWM0YzA1ZDRmMDc3NTVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKQEAgLTAsMCArMSwxOCBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6
ID0+IHRoaXMueCArIHo7IH0KK307CisKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDog
ImJheiIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC55
KCkuYmluZChlLCAibGV5IikoKSwgImJhcmxleSIsICJFcnJvcjogZnVuY3Rpb24gYmluZCBzaG91
bGRuJ3QgY2hhbmdlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5YzgzYWM1M2E3ZjZkMzUxOTYyMzIx
NGMxZTlmYzYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0
Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsg
ZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFy
IGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhp
cy54OyB9Cit9Oworbm9JbmxpbmUoZC55KTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitm
b3IgKHZhciBpPTA7IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0Q2FzZShkLnkoKS5jYWxsKGUpLCAi
Zm9vIiwgIkVycm9yOiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0IGNoYW5nZSB0aGUgbGV4aWNhbCBi
aW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIpOworICAgIHRlc3RDYXNlKGQueSgpLmFwcGx5
KGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBhcHBseSBzaG91bG4ndCBjaGFuZ2UgdGhlIGxl
eGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rv
ci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3OTQ5YmM2YjJjNzhhYjQ2NTllYThj
MmFjNjNkZTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsMjIgQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworbm9JbmxpbmUoc2ltcGxl
QXJyb3dGdW5jdGlvbik7CisKK3ZhciBlcnJvck9uQ3JlYXRlID0gZmFsc2U7CisKK2ZvciAoaT0w
O2k8MTAwMDA7aSsrKSB7CisgICB0cnkgeworICAgICAgIHZhciBmYyA9IG5ldyBzaW1wbGVBcnJv
d0Z1bmN0aW9uKCk7CisgICB9CisgICBjYXRjaCAoZSkgeworICAgICBlcnJvck9uQ3JlYXRlID0g
dHJ1ZTsKKyAgIH0KKworICAgIHRlc3RDYXNlKGVycm9yT25DcmVhdGUsIHRydWUsICJFcnJvcjog
Tm8gZXhjZXB0aW9uIGR1cmluZyBydW4gbmV3IEFycm93RnVuY3Rpb24iKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNmYWIyNGM5
MWJjNTdjOTU4NzYzMmRmZWM5YTRjOTM3OThlMjE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy0xLmpzCkBAIC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1
YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7Cisg
ICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdh
cyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAg
dGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1l
Iik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgp
Iik7Cit9CisKK25vSW5saW5lKERvZykKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkrKykgewor
ICB2YXIgZCA9IG5ldyBEb2coIk1heCIpOworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1l
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFtZSwgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzIiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVjODE2NGU0OGQwM2E2N2ViOTJhNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
dmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgp
ID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3Rvcigp
OworCit0ZXN0Q2FzZShpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlLCB0cnVlLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMiIpOworCit2YXIgb2JqID0geworICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworbm9JbmxpbmUob2JqLm1ldGhvZCk7CisKK2ZvciAo
dmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoKSA9
PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQorCit2YXIgZmFrZSA9IHtzdGVhbDogb2Jq
Lm1ldGhvZCgpfTsKK25vSW5saW5lKGZha2Uuc3RlYWwpOworCitmb3IgKHZhciBpPTA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UoZmFrZS5zdGVhbCgpID09PSBvYmosIHRydWUsICJF
cnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICM0Iik7Cit9CisKK3ZhciByZWFsID0ge2JvcnJvdzogb2JqLm1ldGhvZH07Citub0lu
bGluZShyZWFsLmJvcnJvdyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICB0ZXN0Q2FzZShyZWFsLmJvcnJvdygpKCkgPT09IHJlYWwsIHRydWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEwMTkwODZkNTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4OTM5YzA5MmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIgdGVzdENhc2UgPSBm
dW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVk
ICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9
IHsgbmFtZTonb2JqJywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRo
aXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH19OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7
IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwg
J29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitmb3Ig
KHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MSA9IG9iai5tZXRob2QoKSgn
dGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQxLCAnb2JqLW5hbWUtdGVz
dCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5uYW1lPSduZXdPYmon
OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9k
KCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmlu
ZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBh
cnJvdyBmdW5jdGlvbiAjNSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgewor
ICB2YXIgcmVzdWx0MiA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0
ZXN0Q2FzZShyZXN1bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg1YmQzNjNlNGU0NmIwMmQyZjE5YmJlMzg1MDJmNTI4MjMzYTlmMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAtMCwwICsxLDI2IEBACit2YXIgdGVz
dENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiAr
IGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwor
dmFyIG9iaiA9IHsKKyAgbmFtZTonb2JqJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1l
ICA6J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2
YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9OworCitub0lu
bGluZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAw
OyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3Qn
ICsgaS50b1N0cmluZygpKSwgJ2ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5n
KCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5pbnRlcm5hbE9iamVjdC5uYW1lPSduZXdJbnRl
cm5hbE9iamVjdCc7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENh
c2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdu
ZXdJbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NzU0OTRjZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVhY2U2Mjg3NTQ2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTUuanMKQEAgLTAsMCArMSw0OCBAQAordmFyIHNvcnRlZFZhbHVl
czsKKwordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4g
RXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOwor
ICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIGFycjogWzEsIDQsIDYsIDMsIDcsIDBdLAorICBi
dWJibGVTb3J0OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHsKKyAgICAgIHZhciB0
bXA7CisgICAgICB2YXIgYXIgPSB0aGlzLmFyci5zbGljZSgpOworICAgICAgdmFyIF9sZW5ndGgg
PSBhci5sZW5ndGgKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGZvciAodmFyIGogPSBpOyBqID4gMDsgai0tKSB7CisgICAgICAgICAgaWYgKChhcltq
XSAtIGFyW2ogLSAxXSkgPCAwKSB7CisgICAgICAgICAgICB0bXAgPSBhcltqXTsKKyAgICAgICAg
ICAgIGFyW2pdID0gYXJbaiAtIDFdOworICAgICAgICAgICAgYXJbaiAtIDFdID0gdG1wOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGFyOworICAgIH0KKyAg
fQorfTsKKworbm9JbmxpbmUob2JqLmJ1YmJsZVNvcnQpOworCitmb3IgKHZhciBpPTA7IGk8MTAw
MDA7IGkrKykgeworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgMywgNywgMF07CisgICAgdGVz
dENhc2Uob2JqLmJ1YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKworICAg
IHZhciBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29y
dGVkVmFsdWVzWzBdLCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5z
aWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVl
c1s2XSwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzciKTsKKworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgNSwg
OCwgMjEsIDE5LCAwXTsKKworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgs
IDksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgp
KCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzFdLCAxLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTIiKTsKKyAg
ICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTMiKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQxN2Jj
N2M4ZjE4MDUzNThiZGJhODViMmNlZjZhNjliNWY0MWVjYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy02LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsK
KyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gIHRoaXMubmFtZTsK
KyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMSA9ICgpID0+ICgpID0+IHRoaXMubmFtZTsKKyAg
dGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMiA9ICgpID0+ICgpID0+ICgpID0+IHRoaXMubmFtZTsK
K30KKwordmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKworbm9JbmxpbmUoZC5nZXROYW1lKCkpOwor
bm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCkpOworbm9JbmxpbmUoZC5nZXROYW1l
TmVzdGluZ0xldmVsMigpKCkoKSk7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAg
dGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2Uo
ZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKyAgdGVz
dENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMt
YWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxMGEzMWQ2NzMxYWU2OTc0
ZDY2N2VkOGQyNDg3MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlv
bi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwor
dmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24g
YmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAg
dmFyIHNldCA9ICh4KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbic7CisgICAgICByZXN1bHQgPSB4OworICAgIH0KKyAgICBpZiAoYikgeworICAgICAgICBP
U1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUg
MTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDMwNjM3Yzg1YmY5NDIx
YWU5Yzk3ZTBkZDdmNmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRp
b24tc2luay5qcwpAQCAtMCwwICsxLDM4IEBACit2YXIgbiA9IDEwMDAwMDAwOworCit2YXIgbmV3
Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBiYXIoZikg
eworICAgIGlmICh0aGlzID09IG5ld0NvbnRleHQpCisgICAgICAgIHRocm93ICdXcm9uZyBjb250
ZXh0IG9mIG5lc3RpbmcgZnVuY3Rpb24nOworICAgIGYoMTApOworfQorCitmdW5jdGlvbiBmb28o
YikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAg
cmVzdWx0ID0geDsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRl
eHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0
LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uJzsK
KyAgICB9OworCisgICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChy
ZXN1bHQgIT0gMTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5s
aW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykg
eworICAgIHZhciByZXN1bHQgPSBmb28uY2FsbChuZXdDb250ZXh0LCAhKGkgJSAxMDApKTsKKyAg
ICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OWUw
MjcxMzljMTY2N2UxMDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBu
ZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGNhbGwo
bykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQg
YnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5r
IChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBm
dW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRo
aXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBv
ZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisgICAgfTsKKyAgICBpZiAocCkgeworICAgICAgICBjYWxs
KGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAgICAg
ICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAg
cmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRy
dWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhw
ZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9p
bnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRM
CisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBP
U1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRo
cm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3ZGUyOGY2MGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM2IEBA
Cit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91
bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQK
K2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hl
Y2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3
Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dy
b25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgICAgcmV0dXJuIHg7CisgICAg
fTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVy
biB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQK
KyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0Lmlk
KQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsK
KyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4
dCwgdHJ1ZSwgZmFsc2UpOy8vIFN1YnN0aXR1dGUgdGhpcworICAgIHZhciByZXN1bHQgPSBmKDQy
KTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIg
YnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24g
c2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBm
dW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luay5j
YWxsKG5ld0NvbnRleHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCit2YXIgcmVzdWx0
ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQg
NDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3ZWEwNzYzNWE0MTMxY2QyMzExZDQ1
MDczNWY1N2MxZGQ5NTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMK
QEAgLTAsMCArMSw0NSBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0
JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhp
cyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+
IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAg
IGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAg
ICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKworICAg
ICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyBy
ZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1
bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhp
cy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9m
IGFycm93IGZ1bmN0aW9uICMyJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5s
aW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIg
ZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsvLyB1c2UgY2FsbCB0byBzdWJz
dGl0dXRlIGNvbnRleHQKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAh
PSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsK
K30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0aGUgaW1w
bGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRy
dWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAg
Ly8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBv
ciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290
ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5r
IGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rLmNhbGwobmV3Q29u
dGV4dCwgdHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0g
NDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNlMGM2NThkM2EyZjc5MjI5ZGY0
Zjg5MmNjZGExNTEzYzk0ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDE3IEBA
Cit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewor
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBl
Y3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0K
K307CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNp
bXBsZUFycm93RnVuY3Rpb24pOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRl
c3RDYXNlKE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSwgRnVuY3Rp
b24ucHJvdG90eXBlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdldFByb3RvdHlwZU9mIHZhbHVlIGZv
ciBhcnJvdyBmdW5jdGlvbiIpOworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uIGlu
c3RhbmNlb2YgRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBp
bnN0YW5jZW9mIG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2lt
cGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBO
b3QgY29ycmVjdCByZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1ldGhvZCBvZiBhcnJvdyBmdW5jdGlv
ICAgbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YTFmMGE0OWNi
MTY4NjNjNTkyMTM2MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKQEAg
LTAsMCArMSwyNCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQs
IG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNz
YWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFs
ICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9
IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVu
Y3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5h
bWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJ
dGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAg
cmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RD
YXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJv
dyBmdW5jdGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVycm9yOiBF
cnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXJ1bi0xMC0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXJ1bi0xMC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNkYjNjNzBhMWIyN2MzZGJiNTIzODA5
NTVmNTM1M2Q3Njc0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKQEAgLTAsMCArMSwyNSBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2
YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsK
KyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFs
KCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0i
ICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1
bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2Uo
cnVuKDEpLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24g
b25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1
dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAw
MC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFiMDFjYTI3ZDBiOTcyMGI1N2U4ZDYw
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5j
dGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBp
PGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRo
aXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7Cisg
ICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmou
bmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQor
ICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJF
cnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGlt
ZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQyNzFmNGEz
MTU5MTYyNWEwYmQzZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpz
CkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cg
bWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFj
dHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1
bHQgPSB0cnVlOworICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmog
PSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMu
Z2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisgICAgdmFyIG9i
aiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFt
ZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordGVzdENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5n
IGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmct
bm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQyODYyYzYyOGUzYjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1MWRlYzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lu
a2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gY2Fs
bChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBx
KSB7CisgICAgdmFyIGYgPSAoKSA9PiB7IH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChm
KTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAg
ICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJl
dHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIGlm
IChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBi
dXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNo
b3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVu
Y3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1
ZSwgdHJ1ZSk7CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLngg
dG8gYmUgMyBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3Jl
eGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAxNDBmYTE0OTk3M2UxN2FhYThkOTEw
NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0
aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAo
cSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGlu
ZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYg
PSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJl
c3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJv
cGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2
YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjog
ZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3ZWZjNjE4NmJlMDU3YzNjYmIyNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2lu
ayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB4OworICAgIGlmIChwKSB7IGlmIChxKSBnLmlu
bmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geDsKK30KK25vSW5saW5lKHNp
bmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNp
bmsodHJ1ZSwgdHJ1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQg
IT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7
Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQg
ZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0
IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJlc3Vs
dCA9IGYoMTIpOworaWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0
ZXIgYXMgaXQgc2hvdWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAg
ICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hl
Y2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBh
c3NpZ25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5l
cjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUg
NDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0OTIzOTcx
OTgzZGNkYTM0YzI2OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCww
ICsxLDI3IEBACit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMg
QSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nl
c3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1
cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2
YXIgZXhjZXB0aW9uID0gbnVsbDsKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRy
eSB7CisgICAgICAgbmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4Y2VwdGlv
biA9IGU7CisgICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQorICAgICAg
ICAgIHRocm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOwor
ICB9CisKKyAgaWYgKCFleGNlcHRpb24pCisgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJv
d24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKKworICB2YXIgZSA9IG5l
dyBCKGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2VjMGRkZDU1
MTRmYWY0ZDBkMDNjOWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0w
LDAgKzEsMjcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2Fn
ZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCAr
ICInIjsKKyAgfQorfTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7
YSArIDF9OworCitub0lubGluZShhZjEpOworbm9JbmxpbmUoYWYyKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjEsICJmdW5jdGlvbiIs
ICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAg
dGVzdENhc2UodHlwZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCisvL0ZpeG1lOiBTb21lIGJ1ZyBpbiBpbmxp
bmluZyB0eXBlb2Ygd2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFtZXRlcnMgZnRsLW5vLWNqaXQtbm8t
aW5saW5lLXZhbGlkYXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1ZSAtLWVuYWJsZUZ1bmN0aW9uRG90
QXJndW1lbnRzXD10cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXRocmVzaG9sZEZv
ckpJVEFmdGVyV2FybVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBoPXRydWUgLS1tYXhpbXVtSW5saW5p
bmdEZXB0aD0xCisvLworLy8gZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSAgeworLy8g
ICBpZiAodHlwZW9mIChmdW5jdGlvbiAoKSB7fSkgIT09ICdmdW5jdGlvbicpCisvLyAgICAgICB0
aHJvdyAnV3JvbmcgdHlwZSc7CisvLyB9CisvLyAgdGVzdENhc2UodHlwZW9mICgpPT57fSwgImZ1
bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAj
My0iICsgaSk7CisKKy8vICB0ZXN0Q2FzZSh0eXBlb2YgKChiKSA9PiB7YiArIDF9KSwgImZ1bmN0
aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUzNDU3Y2FhNjRkMWU2YjdhMDIuLmYx
ZDFiOGYxNTAwYWRjY2U4YjczYzY4ODVjODA1ODgzYzk2NzA1MTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NiBAQAorMjAxNS0wOC0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNv
bT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheC4g
QXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCBvZiB0aGlzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93
ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tYmluZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLXRoaXMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi10ZHouanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLXR5cGVvZi5qczogQWRkZWQuCisKIDIwMTUtMDgtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2UgZmxha2lu
ZXNzIG9mIGluc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
YjMyNmNjYmI0ZTE0YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2YwMTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92
ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBkLnkoKS5iaW5kKGUsICdsZXknKSgpIGlzICdiYXJsZXknCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLWJpbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlhY2IyYmM4ZmQ1MDRjNjhmMDQ0NWE2
ZWFjNGE2YTE0NTRhYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1iaW5kLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNmNDVlMTZiOTk2NTcyZDFhZmRlZWRk
NTkxMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
YWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1
bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBw
bHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCkuY2FsbChlKSBp
cyAnZm9vJworUEFTUyBkLnkoKS5hcHBseShlKSBpcyAnZm9vJworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2YTg3NDllYzViN2U3ODNjNmE5ZWMz
MTMyZDJkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjcwNmZmZjE3YzIxMjM4NTM2NDBiYjJhNGVi
MTdkNjNlMWEzNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdu
ZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5Y2RkNGQ4YmRmYTYyNDFjYjZiZWZi
ZjA0Y2M5NTgzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWNvbnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYjY2ZmMyODhjYWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBs
ZXhpY2FsIGJpbmQgb2YgdGhpcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBkLmdldE5hbWUoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lSGFyZCgpIGlzIGQubmFtZQor
UEFTUyBkLmdldE5hbWVOZXN0aW5nKCkoKSgpIGlzIGQubmFtZQorUEFTUyBvYmoubWV0aG9kKCko
J2NvcnJlY3QnKSBpcyAnb2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIG9iai5tZXRob2QoKSgn
Y29ycmVjdCcpIGlzICduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRl
cm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdpbnRlcm5hbE9iamVjdC1uYW1lLWNv
cnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBp
cyAnbmV3SW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBpbnN0YW5jZS5mdW5jKCkg
PT09IGluc3RhbmNlIGlzIHRydWUKK1BBU1Mgb3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJP
YmogaXMgdHJ1ZQorUEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1Mg
cmVhbC5ib3Jyb3coKSgpID09PSByZWFsIGlzIHRydWUKK1BBU1MgYXJyb3dGdW5jdGlvbignLXRo
aXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1MgaG9zdE9iai5mdW5jKCctdGhpcycpIGlzICJyaWdo
dC10aGlzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MWVhMjJhNzZmZGY4YmZmNWU3MmU1MWI3Nzk0YjNlMzQ3ZDE2
NDJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTE1MmU1ZTM3YzY5MTVm
MzgyM2UyOWIyMGE5NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9y
cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYmplY3QuZ2V0UHJvdG90
eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rpb24ucHJvdG90eXBlCitQQVNTIHNp
bXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVlCitQQVNTIHNpbXBs
ZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNjdmOGIwMGU0NjA1NWVlNmZh
ZTVjMWU4Mjg5ZWZlZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXRkei1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZjZDg2MDBlODg0MTI3N2M0OTRhOTg5
MDIyNDUyZWE2YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tdGR6LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFy
cm93IGZ1bmN0aW9uIHRlc3QgdGR6CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tdGR6Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2QzZmM0OGU1YzUzZmMxMTkyNmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjJmYjJjZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUwY2E1MzQ5YzFiYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVl
CitQQVNTIHR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKCgp
PT57fSkgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKChiKSA9PiB7YiArIDF9
KT09PSdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2NWUzNzNmZWRiNzQzODBlMDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2MWRlM2JhYjUyMDljNzJkZGNmNTAy
MTAwMzQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dm
dW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNh
bGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2MWNiZWIwYjllZTEzM2ZlODczMTEy
YmZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0
aW9uLWNhbGwuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjRjODQyNzZl
NzEwODc3ODZjNTk0MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAs
MCArMSwxNSBAQAordmFyIGFmID0gKGEsIGIpID0+IGEgKyBiOworCitub0lubGluZShhZik7CisK
K2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGFmKGEsIGIpOworfQorCitub0lubGlu
ZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciBy
ZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTcz
YzNiNWUwY2E3OTE3OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpAQCAt
MCwwICsxLDE1IEBACit2YXIgZmUgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7fQor
Citub0lubGluZShmZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZlKGEs
IGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAz
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpz
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNTNmMDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0ZTk5NzljMDJhYzJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmlu
ZC5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBm
dW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kJyk7
CisKK3ZhciBkID0geworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHog
PT4gdGhpcy54ICsgejsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitzaG91bGRC
ZSgiZC55KCkuYmluZChlLCAnbGV5JykoKSIsICInYmFybGV5JyIpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4ZjkxMWJmMWM0NGQzODlkMGEzZDIx
ODQ2ODM0ODRiNmY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2NyaXB0aW9u
KCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRl
biBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHknKTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwK
KyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9OworCit2YXIgZSA9
IHsgeCA6ICJiYXIiIH07CisKK3Nob3VsZEJlKCdkLnkoKS5jYWxsKGUpJywgIidmb28nIik7Citz
aG91bGRCZSgnZC55KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmFkMDc2ODQ3YmZmNDky
OWY3ODA3NzY1Zjk5MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDcg
QEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVj
dG9yJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZFRo
cm93KCduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTU2YTE1
NTMwZjM0Y2MzMDhhY2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMu
anMKQEAgLTAsMCArMSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVu
Y3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRoaXMnKTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAg
dGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1l
Iik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgp
Iik7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7
Cit9CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CitzaG91bGRCZSgnZC5nZXROYW1lKCknLCAn
ZC5uYW1lJyk7CitzaG91bGRCZSgnZC5nZXROYW1lSGFyZCgpJywgJ2QubmFtZScpOworc2hvdWxk
QmUoJ2QuZ2V0TmFtZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1lJyk7CisKK3ZhciBvYmogPSB7Cisg
IG5hbWUgICA6ICdvYmpDb2RlJywKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7CisgIH0KK307CisKK3No
b3VsZEJlKCJvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInb2JqQ29kZS1uYW1lLWNvcnJlY3Qn
Iik7CitvYmoubmFtZT0nbmV3T2JqQ29kZSc7CitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3Jy
ZWN0JykiLCAiJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworCit2YXIgZGVlcE9iaiA9IHsK
KyAgbmFtZSA6ICd3cm9uZ09iakNvZGUnLAorICBpbnRlcm5hbE9iamVjdDogeworICAgIG5hbWUg
IDonaW50ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZh
bHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9CisgIH0KK307CitzaG91bGRC
ZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidpbnRlcm5h
bE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK2RlZXBPYmouaW50ZXJuYWxPYmplY3QubmFtZSA9
ICduZXdJbnRlcm5hbE9iamVjdCc7CisKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0
Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCci
KTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVu
YyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1
Y3RvcigpOworCitzaG91bGRCZSgiaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSIsICJ0cnVl
Iik7CisKK3ZhciBvd25lck9iaiA9IHsKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiAoKSA9PiB0aGlzOworICB9Cit9OworCitzaG91bGRCZSgib3duZXJPYmoubWV0aG9kKCko
KSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgZmFrZSA9IHsgc3RlYWwgOiBvd25lck9i
ai5tZXRob2QoKSB9Oworc2hvdWxkQmUoImZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmoiLCAidHJ1
ZSIpOworCit2YXIgcmVhbCA9IHsgYm9ycm93IDogb3duZXJPYmoubWV0aG9kIH07CitzaG91bGRC
ZSgicmVhbC5ib3Jyb3coKSgpID09PSByZWFsIiwgInRydWUiKTsKKwordmFyIGFycm93RnVuY3Rp
b24gPSB7IHggOiAicmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9uIDogZnVuY3Rpb24oKSB7IHJldHVy
biB6ID0+IHRoaXMueCArIHo7IH19LmdldEFycm93RnVuY3Rpb24oKTsKK3ZhciBob3N0T2JqID0g
eyB4IDogIndyb25nIiwgZnVuYyA6IGFycm93RnVuY3Rpb24gfTsKKworc2hvdWxkQmUoImFycm93
RnVuY3Rpb24oJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CitzaG91bGRCZSgiaG9zdE9iai5m
dW5jKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLW90aGVycy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzk5MzFjM2RlYmNiNTAyN2FkMTRmZDE1NDdlNWFi
YTAzOGI0YjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIEluc3BpcmVkIGJ5
IG1vemlsbGEgdGVzdHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
IGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsKKwordmFyIHNpbXBsZUFycm93RnVu
Y3Rpb24gPSAoKSA9PiB7fTsKKworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1w
bGVBcnJvd0Z1bmN0aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJzaW1w
bGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24iLCAidHJ1ZSIpOworc2hvdWxkQmUo
InNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24iLCAidHJ1ZSIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY1OGZjNjUxM2Vk
YWJkZTFkZDY1MDc0OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEsMjYgQEAK
K2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6Jyk7CisK
K3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29u
c3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZv
cmVTdXBlcikgeworICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICB9CisgIH0KK307CisKK3ZhciBpc1JlZmVy
ZW5jZUVycm9yID0gZmFsc2U7Cit0cnkgeworICAgICBuZXcgQih0cnVlKTsKK30gY2F0Y2ggKGUp
IHsKKyAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOwor
fQorCitzaG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7CisKK3ZhciBlID0gbmV3
IEIoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MmFhMjY5MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9m
LmpzCkBAIC0wLDAgKzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkg
PT4ge2EgKyAxfTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbiciLCAidHJ1
ZSIpOworCitzaG91bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyIsICJ0cnVlIik7CisK
K3Nob3VsZEJlKCJ0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitz
aG91bGRCZSgidHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIiwgInRydWUiKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259143</attachid>
            <date>2015-08-17 06:13:32 -0700</date>
            <delta_ts>2015-08-17 06:52:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817161327.patch</filename>
            <type>text/plain</type>
            <size>179134</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMTRmNTA1YzRjOGY2MGM2OWQwM2MzMDMxNzVkYmM0
MzUyMmM1MWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoYXJnMSwgVHJ1
c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZWxzZQorICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisjZW5k
aWYKKyAgICAgICAgCisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjI4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCks
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4
LDYgKzIyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFy
Z3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9k
ZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFj
MjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNv
bXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFl
NmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAg
ICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3Bl
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAg
IGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAg
ICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4
Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBz
ZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZi
ZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIy
MjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2
YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3Bl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3
MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90
eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVO
YW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dG
dW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRh
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJy
b3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1
MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhp
czoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAg
Y2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0
NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
QEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9u
X0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAor
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQ
dHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNz
WiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50
UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1
bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRj
ZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0
YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
QEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5v
cCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09
IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJv
d0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAg
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5z
aW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAg
ICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3
RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9u
PigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAg
PyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5
b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMu
SlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0g
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBm
YXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29w
ZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdl
YWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9o
ZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
LAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlv
bgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJh
bWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1Bv
aW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVu
Y3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQog
ICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFm
OTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwx
NiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhl
Y3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAg
ICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAg
ICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAg
ICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAg
ICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUx
OWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4
ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2Vm
NTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAog
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07
CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5
ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uYWE5MjY5YTE4OWMxMDg2OTZlZDFhYjdjNDcx
MzQ0NGExYWY5OGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25B
cmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVu
dHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVj
bCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAg
ICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2
YWx1ZXMgaW50byB0aGUKQEAgLTk1NSw2ICs5NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxpZiBD
UFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICs5OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0K
KyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAg
ICB7CiAgICAgICAgIG1vdmVEb3VibGUoYXJnNCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAg
LTEwMDcsNiArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNlbHNlCisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBh
c3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBhcmcxKTsKQEAgLTExMjgsNyArMTEyOSw3IEBAIHB1YmxpYzoKICNlbHNlCiAjZXJyb3Ig
IkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCi0KKyAgICAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkBAIC0xNDcwLDcgKzE0
NzEsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFu
eSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IKICAgICAvLyBleGFjdGx5IDQg
YXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFSTXY3LgogI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9S
RUdJU1RFUlMgPT0gNAotCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCkKICAgICB7CiAgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwpA
QCAtMTUzNSw2ICsxNTM1LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGVXKEdQUlJl
ZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAg
c2V0dXBUd29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcy
LCBUcnVzdGVkSW1tUHRyIGFyZzMsIFRydXN0ZWRJbW02NCBhcmc0KQogICAgIHsKICAgICAgICAg
cG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CkBAIC0xODk4LDYgKzE5MDUsMTMgQEAg
cHVibGljOgogI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAogCiAj
aWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA1CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1Q
dHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzR1BS
PEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmcz
KTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIH0KKyAgICAKICAgICB2b2lkIHNldHVwU3R1YkFyZ3VtZW50czEzNChHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBUaHJlZVN0dWJB
cmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjQ+KGFyZzEsIGFyZzMsIGFyZzQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IDAzOGY1ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3ZmYyZWJhNDBlYjQuLmJi
Yzg1MjNmNWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9lbmQpCiAgICAgICAgIERFRklORV9PUChv
cF9lbnRlcikKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZSkKKyAgICAgICAgREVGSU5F
X09QKG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEp
CiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZToKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVu
Y19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdl
eHApCiAgICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCA4NDExYTdlZjY1YTljNmJkY2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2Li43NzFmZDliNDA2NWJk
ZDE3MjJjMGU3MmI4ODcyMDhlYzYyZjFlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTQ5OCw2ICs0OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2Vu
ZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lcV9udWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQo
SW5zdHJ1Y3Rpb24qKTsKQEAgLTUzOSw2ICs1NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19h
cnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29i
amVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CkBAIC02
NTMsNiArNjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hp
ZnQoSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdo
dFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNv
bW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhi
b29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNs
b3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1
bnNpZ25lZCBkZXB0aCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2so
aW50IHNjb3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAgLTcyMyw2ICs3MjYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQUlJlZywgQnlWYWxJbmZv
Kik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVy
YXRpb25fRUpzYywgR1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQywgaW50LCBHUFJSZWcsIEpTQ2VsbCopOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VK
c2NDSiwgaW50LCBHUFJSZWcsIEpTQ2VsbCosIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIEdQUlJlZywgaW50
MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRP
cGVyYXRpb25fRUpzY1osIGludCwgR1BSUmVnLCBpbnQzMl90KTsKICNpZiBVU0UoSlNWQUxVRTY0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ZDY4NjkwMDgxYzk5
NmQ3ZTMzYmYzYmQyNWRjYzU4YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcyNDk1NmJmNTg0OTFiM2Rl
NzgzYTZmY2RjMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAt
MjcxLDYgKzI3MSwxMiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYQogICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7
CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcx
LCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsKKyAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3Qp
OworfQorICAgIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2lu
dGVyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBv
aW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU5
OGQ0ZWM5OWMxZDE4ZTZjMzk2MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4M2JjYzhjNDVkZTY2NmY3
M2M5ZTkxMWY1MTQyOWYzNWViMTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTY3Myw2ICs2NzQsMTQg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNj
b3BlQ2hhaW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQor
ICAgIAordm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0
YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dG
dW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxs
KGRzdCwgcmVnVDApOworfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NjIsMjYgKzk3MSw0NSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30K
KyAgICAKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBib29s
IGlzQXJyb3dGdW5jdGlvbiA9IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cDsKKyAg
ICAKICAgICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7Cisg
ICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVk
U2NvcGUgPSBicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSkpKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXpl
b2YoUmVnaXN0ZXIpICogZHN0KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlv
bikKKyAgICAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQsIHJlZ1QxKTsKICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0
YWdGb3IoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpVbmRlZmluZWRUYWcpKTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsK
ICNlbmRpZgotCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVmaW5lZFNjb3Bl
LmxpbmsodGhpcyk7Ci0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2Rl
QmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhw
cik7CisgICAgICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVC
bG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAg
IGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3
QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyAgICBlbHNlCisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1
bmN0aW9uKTsKICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0KKyAgICAKK3ZvaWQgSklUOjplbWl0
X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorICAg
IAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXgg
OTFjMDBlM2ZkNDVlMDk3ZTNiYjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4uYjM5YWUxZDFhMzA2ODAz
NDNlOWZkOWE3MjMxNDI5YjZlNTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbi5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisj
aW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVk
ZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTky
Miw2ICs5MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAor
dm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpD
YWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlv
bjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwg
cmVnVDApOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggYjVmOWUzNjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMwMjRjZGNkYjkzYi4uNGZm
MGUzZDE1MGI0MjYwZWY5NGIyMWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJ
VFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTk0
Miw2ICs5NDMsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
dW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGMKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhl
Y3V0YWJsZSksIHNjb3BlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwq
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52
YWxpZGF0ZWQpCit7CisgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVu
Y3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFi
bGUpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgICAgICAKKyAgICBKU0Fycm93RnVuY3Rpb24qIGFycm93
RnVuY3Rpb24gID0gaXNJbnZhbGlkYXRlZAorICAgICAgICA/IEpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKQorICAgICAgICA6IEpTQXJyb3dGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyb3dGdW5jdGlvbik7
Cit9CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29t
bW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cit9
CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4
ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0
aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhp
c1ZhbHVlLCBmYWxzZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKaW5kZXggM2Q4M2Y1OTBkY2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJjYmU4NGY5Yi4uYTY3Y2Fh
Y2IzMmZiMjE1OGE5YzA1ZTZhNTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSos
IHZvaWQqLCB2bwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRP
cGVyYXRpb25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwg
SW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpf
SklUT3BlcmF0aW9uX0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7Cit0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQ0op
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU1MpKEV4ZWNT
dGF0ZSosIHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAt
Mjg4LDYgKzI4OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
QXJyYXlCdWZmZXJXaXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0
ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9u
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVh
bGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lO
VEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJv
d0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJl
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdSZWdleHAoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25IYW5kbGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKaW5kZXggMmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDllZjliMDEzOGQ5YTgzZjFl
Yy4uYTJhNmIyYjExYzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJWTS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKaW5kZXggNTViODFlZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJiNDFmNTY4NWQ3Zi4uMmNk
OWY2ZWI4ZDY4Mzg2ODcwOTdjNGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgpAQCAtMTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgTExJbnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBj
LCBfX3JjZl9leGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hp
bGUgKGZhbHNlKQotCisgICAgCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90
cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdo
ZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTAxMywxMiArMTAx
NCwyNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lO
KCk7CisgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
ICAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5S
ZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29k
ZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKLSAgICBKU0Z1bmN0aW9uKiBm
dW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpOworICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNd
LnUub3BlcmFuZCk7CiAgICAgCi0gICAgTExJTlRfUkVUVVJOKGZ1bmMpOworICAgIExMSU5UX1JF
VFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1BfQyg0KS5q
c1ZhbHVlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5S
ZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBj
b2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5U
X1JFVFVSTihKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRo
aXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxs
KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTA5Niw3ICsxMTA5LDcgQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0
cnVjdGlvbiogcGMsIENvZGUKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNo
ZWNrZWQoKTsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAKKwogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAg
ICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOGNjNjlhOTYwMGJiZjlkODUzMzlkNjA5
NTk1ZjY3YzY4ZDA3NjcxYi4uM2YxZGFhODEyYjcwMmUyM2M2YWFlZjlmZDdjMDY3MWVlMjAyNWMw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAg
LTk3LDYgKzk3LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0
Y2hfY2hhcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9z
dHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCBjOTEwNjE3ZWQ4MzRiNzRjOWYyZjhlZTRiMjY4N2M4YjljZmUzYzdjLi43M2ZjNTg4NDQyZGRj
NGI5Y2ZhN2I4OGYwMDRjYTg2NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTgzLDYgKzExODMsMTAg
QEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9uZXdfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19hcnJv
d19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDUpCiAKIF9sbGlu
dF9vcF9jYWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZTkw
ZWNlZGZhNzMwOTgyZmVlZjcxZWViMGNlYTY0MzgyMzRhNjkxYy4uN2VmNmI4N2MxNzBhZDA4M2Ix
ZjUyOWRhODgzNmMwMGNkYTY0YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIzNzMsMyArMjM3
MywxMiBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAg
ICAgZGlzcGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0s
IHQwCisgICAgbG9hZGkgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5k
ZXggZDk0NTVmNzVjN2I2NjQyZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1Yi4uZDIxNTJhMmYyNzdh
ZGU1ODc5NzZhMWMzZjEyMDIzNzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyMjYsMyArMjIy
NiwxMSBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAg
ICAgZGlzcGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBK
U0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgy
KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKaW5kZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5
NGE2Ny4uODA2ZGI1MjMwM2Q1YWQzYTcxODgxMjlmODhiZDc2NGM2YjUwZWVjNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOSArMzYxLDE5IEBA
IHB1YmxpYzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAK
ICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29s
IGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291
bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAog
ICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJp
Y3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAg
ICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwg
bW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgewor
ICAgICAgICB1c2VzVGhpcygpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5m
by5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3Rh
cnRDb2x1bW4pOwotCi0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rp
b25JbmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rp
b25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlv
bkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5l
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0ZTEyODg0OGVhOGI0M2Zk
ODYzNjk3NGNiOTk3YzM3ZGIuLmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0M2JjYmExOTY5M2FkYmQx
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oCkBAIC04OTAsMTMgKzg5MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIAorICAgIGlu
bGluZSBCYXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkK
ICAgICB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwg
RnVuY3Rpb25FeHByZXNzaW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpG
dW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpCisgICAgICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRl
bnQsIG1fbWV0YWRhdGEsIHNvdXJjZSkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIEZ1bmNE
ZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRp
b24pCiAgICAgICAgICwgbV9tZXRhZGF0YShtX21ldGFkYXRhKQpAQCAtOTA0LDYgKzkxMCwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3Vy
Y2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgQXJy
b3dGdW5jRXhwck5vZGU6OkFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5j
RXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAg
IH0KKwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIGlubGluZSBDbGFzc0RlY2xO
b2RlOjpDbGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBjbGFzc0RlY2xhcmF0aW9uKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9j
YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGNmNGZlNDUw
YTkyNDk1MDRmMzBiYTg1YTI2NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUzMzA1YzRhMGMyMWM3MzM4
ODM5YzI5ZjIzYzc0ZGU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CkBAIC0xNTEsNyArMTUxLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRh
dGFOb2RlKAogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExv
Y2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlKQorICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBT
b3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogTm9k
ZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAg
ICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw2ICsxNjMsNyBAQCBGdW5jdGlv
bk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9wYXJzZU1v
ZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0
KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25z
dHJ1Y3RvcktpbmQpKQorICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlv
bikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CmluZGV4IDFkNmIwM2Q3NzY2Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQuLjg3MzY2OGVj
MzdiNDI3YjkyMDY0OWRlMzA2ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1h
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Np
bXBsZUFycmF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzQWRkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDksNyArMTgxMCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1
bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVj
dG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgICAgICAgICBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
KTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0
IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzUsNiArMTgzNiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RD
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29u
c3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiAgICAgICAg
IHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBz
dGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2MCw2ICsx
ODYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNl
TW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAg
IHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKKyAgICAgICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb24gOiAxOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwg
OiBwdWJsaWMgU2NvcGVOb2RlIHsKQEAgLTE4ODksMTggKzE4OTIsMzUgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBG
dW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJhc2VGdW5j
RXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgQmFzZUZ1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCisgICAg
cHJvdGVjdGVkOgorICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAg
ICB9OworCisKKyAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9k
ZSB7CisgICAgcHVibGljOgorICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291
cmNlQ29kZSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OwogCi0gICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBtX21ldGFkYXRhOworICAgIGNsYXNzIEFycm93RnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VG
dW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJO
b2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICNpZiBFTkFC
TEUoRVM2X0NMQVNTX1NZTlRBWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAppbmRleCBhZWU3MGI2YTczMjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxLi5mNTA4MTRl
N2IxNDJhYjUzMDBkODRhNGI3MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkJvCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwg
dW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Cisg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0
aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1
bmN0aW9uQm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsK
ICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2Vu
TG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3Ry
dWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2Nh
dGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3Rv
cktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTE1NjIsNyArMTU2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkJvCiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5
bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVu
Y3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAi
Q2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVk
IGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291
bnQsIHBhcnNlTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9k
ZSwgaXNBcnJvd0Z1bmN0aW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1
bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE3MzcsNyArMTczOCw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0
cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLQorICAg
IAogICAgIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAK
ICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVz
ZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBm
dW5jdGlvbi4KQEAgLTE3NTYsMTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQK
ICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGlu
ZVN0YXJ0T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5k
TG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0
YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLQorICAgICAg
ICAKKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5cGUgPT0gQXJyb3dGdW5j
dGlvblBhcnNlVHlwZTsKKyAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwg
ZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4s
IAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29u
c3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAg
ICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8t
PnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICAKICAgICAg
ICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZElu
Zm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNG
cmVlVmFyaWFibGVJbmZvKTsKQEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJl
ZUJ1aWxkCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9u
LmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5k
RnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9u
UGFyc2VUeXBlKQorICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAgICAgZnVu
Y3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJv
ZHlCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
aW5kZXggMDc2MGMxOWViMTYzNmRiMjFhMTc5NjEyYTU0OTZlMTljZmQxYmIwNy4uZGM1NjFmOWIx
YTZkYTM2NDNiODI3MmZlN2IxMmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAg
ICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9w
ZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVu
Y3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwg
aW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSkgeyBy
ZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJj
ZVBhcnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVu
Y3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9
CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCAwYWIx
NjcyMTE2ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2OTRmMjdhNDU4NzNiMmEy
MTY3YTM2OTYzNWQzZTU5NDVhYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcApAQCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0cjxDb2RlQmxvY2s+IFNj
cmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdn
ZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVn
Z2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhh
c1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPQotICAgICAgICBleGVjdXRhYmxlLT5t
X3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKAotICAgICAgICAgICAgKnZtLCBleGVj
dXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9y
KTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2
bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBlcnJvciwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNl
KGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxl
LT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1
bmxpbmtlZENvZGVCbG9jaykgewogICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRp
b24oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmNl
MjQyOGNiYzEwMWRkYTZjYjEwMWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2YyYmRlODhjNWE2ZTkxNjc2
MDM2ZWUyN2Q3NDRmNzY0NTM5Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaApAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xl
YXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0
cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVk
IG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJp
YWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAt
NTMwLDcgKzUzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2Ny
aXB0RXhlY3V0YWJsZTsKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25N
b2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlv
bk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsg
fQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAg
IGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFj
MjYwZTE2YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8
Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6
c19pbmZvID0geyAiQXJyb3dGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNBcnJvd0Z1bmN0aW9uKSB9OworCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4o
Y2VsbCktPkpTQXJyb3dGdW5jdGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOworfQorCitKU0Fycm93
RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7Cisg
ICAgSlNBcnJvd0Z1bmN0aW9uKiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSwgYm91bmRUaGlzKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5u
b3RpZnlXcml0ZSh2bSwgcmVzdWx0LCAiQWxsb2NhdGluZyBhbiBhcnJvdyBmdW5jdGlvbiIpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9u
KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwg
SlNWYWx1ZSBib3VuZFRoaXMpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2Nv
cGUtPmdsb2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2Jv
dW5kVGhpcyh2bSwgdGhpcywgYm91bmRUaGlzKQoreworfQorCitKU0Fycm93RnVuY3Rpb24qIEpT
QXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUs
IEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEFTU0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25G
dW5jdGlvbigpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9u
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBcnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKK30KKworQ29uc3RydWN0
VHlwZSBKU0Fycm93RnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYpCit7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
b3dGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIy
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
b3dGdW5jdGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QWxla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAor
I2RlZmluZSBKU0Fycm93RnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTElu
dERlc2lyZWRPZmZzZXRzOworICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpT
RnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisg
ICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERG
Rzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9u
KiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7Cisg
ICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVl
KTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgCisgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAg
ICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAg
ICAgICByZXR1cm4gc2l6ZW9mKEpTQXJyb3dGdW5jdGlvbik7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBKU0Fycm93RnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICB7
CisgICAgICAgIEpTQXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0Fycm93RnVuY3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4
ZWN1dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0
cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgc3Rh
dGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
Jik7CisKKyAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgp
OyB9CisgICAgCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRo
aXNWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dG
dW5jdGlvbiwgbV9ib3VuZFRoaXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVk
OgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgCitwcml2YXRlOgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2Jv
dW5kVGhpczsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQXJy
b3dGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgK
aW5kZXggMGI4N2Q3NWM5MTQ1MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBmMDkzZS4uOTI4MzUwZTI0
NzhjNDVmN2JmN2U4YWE4NGM5ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTQxLDYgKzE0MSw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgSlNTY29wZSopOworICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U1Njb3BlKiwgU3RydWN0dXJlKik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0
aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNp
bmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2ZTVjMTE2NGNiMjdmYTVl
NDE2MThiNGI4MTQyZjAyLi5mMDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUyN2I2M2I2NDRhODg0NDEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25Jbmxp
bmVzLmgKQEAgLTQ0LDYgKzQ0LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZN
JiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzCiAgICAgLCBt
X3JhcmVEYXRhKCkKIHsKIH0KKyAgICAKK2lubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZN
JiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQorICAg
ICwgbV9leGVjdXRhYmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQorICAgICwgbV9yYXJlRGF0YSgp
Cit7Cit9CiAKIGlubGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0
YWJsZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFk
MDQyMy4uZGExYWMyNWFhYjAwODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMwZmYzOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTks
NiArNTksNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmgiCkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChW
TSYgdm0pCiAgICAgZXhlYy0+c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsKIAogICAg
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2Fycm93
RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91
bmRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9u
YW1lZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVRyYW5zaXRpb24odm0sIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFt
ZU9mZnNldCkpOwogICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSkpOwpAQCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA5OTg2
YmNmNjI0NWUyY2M0NjgyMGIxMzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEyYjI5MzA1NWU5YmFlMzBi
YjczZmQ5MDE1YmMwMDM4MzYzYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0
aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1l
U3RydWN0dXJlOwpAQCAtNDYyLDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNh
bGxlZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
KyAgICBTdHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2Jq
ZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1h
Y3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMWUzYTY2ZWE5MmYwMzBkYjM3NzlhNGMzZTQwMmU3YzExOGQxZDgxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpzCkBAIC0w
LDAgKzEsNDYgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlv
biBzaG91bGRUaHJvd1REWihmdW5jKSB7CisgICAgdmFyIGhhc1Rocm93biA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUu
bmFtZS5pbmRleE9mKCJSZWZlcmVuY2VFcnJvciIpICE9PSAtMSkKKyAgICAgICAgICAgIGhhc1Ro
cm93biA9IHRydWU7CisgICAgfQorICAgIGlmICghaGFzVGhyb3duKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkRpZCBub3QgdGhyb3cgVERaIGVycm9yIik7Cit9CisKK2Z1bmN0aW9uIGJhcihm
KSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICB2YXIg
c2V0ID0gICh4KSA9PiB7IHJlc3VsdCA9IHg7IHJldHVybiB0ZHpQZXJwZXRyYXRvcjsgfQorICAg
IGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAg
ICAgIGJhcihzZXQpOworICAgICAgICAgICAgcmV0dXJuIHRkelBlcnBldHJhdG9yOworICAgICAg
ICB9CisgICAgfQorICAgIGxldCB0ZHpQZXJwZXRyYXRvcjsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKHNob3VsZFRocm93
VERaKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgYm9vbCA9ICEo
aSAlIDEwMCk7CisgICAgaWYgKGJvb2wpCisgICAgICAgIHNob3VsZFRocm93VERaKCgpPT4geyBm
b28oYm9vbCk7IH0pOworICAgIGVsc2UgeworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKGJvb2wp
OworICAgICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3Jl
eGl0LWRlZmF1bHQtdmFsdWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNDFiYmUxNDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5YzY1YTRiYTc3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKQEAgLTAsMCAr
MSwzNyBAQAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoc2V0KSB7CisgICAgdmFy
IHJlc3VsdCA9IHNldCgwKTsKKyAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgcmVzdWx0OworfQorCitmdW5jdGlvbiBmb28oYikg
eworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBpbVVuZGVmaW5lZDsKKyAgICB2YXIgYmF6
OworICAgIHZhciBzZXQgPSAgKHgpID0+IHsKKyAgICAgICAgcmVzdWx0ID0geDsKKyAgICAgICAg
aWYgKGJheiAhPT0gNTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiAr
IGJhejsKKyAgICAgICAgcmV0dXJuIGltVW5kZWZpbmVkOworICAgIH07CisgICAgYmF6ID0gNTA7
CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAg
ICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShp
ICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdiMmMyYWQzNDVlMjZjMjAz
Nzc4OTBkZjVmMzFmYWYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpA
QCAtMCwwICsxLDI1IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcigpIHsgfQor
CitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAo
eCkgPT4geyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOwor
ICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJh
cik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAg
IHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3OWVjOWVhYTY1YzU0MTkz
MGI5MDQ4MjZlN2EyM2ExM2ZiMmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpAQCAt
MCwwICsxLDI0IEBACit2YXIgbiA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEw
KTsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBz
ZXQgPSB4ID0+IHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQp
OworICAgICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAg
IGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDMyMDg4YWJmMjZkYWUy
YWU3MWEyYWM0YzA1ZDRmMDc3NTVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKQEAgLTAsMCArMSwx
OCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4g
RXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOwor
ICB9Cit9OworCit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJl
dHVybiB6ID0+IHRoaXMueCArIHo7IH0KK307CisKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0g
eyB4IDogImJheiIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENh
c2UoZC55KCkuYmluZChlLCAibGV5IikoKSwgImJhcmxleSIsICJFcnJvcjogZnVuY3Rpb24gYmlu
ZCBzaG91bGRuJ3QgY2hhbmdlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24i
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5YzgzYWM1M2E3ZjZkMzUx
OTYyMzIxNGMxZTlmYzYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTggQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkg
PT4gdGhpcy54OyB9Cit9Oworbm9JbmxpbmUoZC55KTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9
OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0Q2FzZShkLnkoKS5jYWxs
KGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0IGNoYW5nZSB0aGUgbGV4
aWNhbCBiaW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIpOworICAgIHRlc3RDYXNlKGQueSgp
LmFwcGx5KGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBhcHBseSBzaG91bG4ndCBjaGFuZ2Ug
dGhlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25z
dHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3OTQ5YmM2YjJjNzhhYjQ2
NTllYThjMmFjNjNkZTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsMjIg
QEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4
cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAg
fQorfTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworbm9JbmxpbmUo
c2ltcGxlQXJyb3dGdW5jdGlvbik7CisKK3ZhciBlcnJvck9uQ3JlYXRlID0gZmFsc2U7CisKK2Zv
ciAoaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0cnkgeworICAgICAgIHZhciBmYyA9IG5ldyBzaW1w
bGVBcnJvd0Z1bmN0aW9uKCk7CisgICB9CisgICBjYXRjaCAoZSkgeworICAgICBlcnJvck9uQ3Jl
YXRlID0gdHJ1ZTsKKyAgIH0KKworICAgIHRlc3RDYXNlKGVycm9yT25DcmVhdGUsIHRydWUsICJF
cnJvcjogTm8gZXhjZXB0aW9uIGR1cmluZyBydW4gbmV3IEFycm93RnVuY3Rpb24iKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNm
YWIyNGM5MWJjNTdjOTU4NzYzMmRmZWM5YTRjOTM3OThlMjE1YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy0xLmpzCkBAIC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9u
IChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywg
YnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUp
IHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhp
cy5uYW1lIik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5u
YW1lKSgpIik7Cit9CisKK25vSW5saW5lKERvZykKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkr
KykgeworICB2YXIgZCA9IG5ldyBEb2coIk1heCIpOworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwg
ZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFt
ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzIiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10
aGlzLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVjODE2NGU0OGQwM2E2N2Vi
OTJhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBAIC0wLDAgKzEsMzkgQEAK
K3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Cisg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVj
dGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQor
fTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVu
YyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1
Y3RvcigpOworCit0ZXN0Q2FzZShpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlLCB0cnVlLCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjMiIpOworCit2YXIgb2JqID0geworICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworbm9JbmxpbmUob2JqLm1ldGhvZCk7CisK
K2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmoubWV0aG9k
KCkoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQorCit2YXIgZmFrZSA9IHtzdGVh
bDogb2JqLm1ldGhvZCgpfTsKK25vSW5saW5lKGZha2Uuc3RlYWwpOworCitmb3IgKHZhciBpPTA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UoZmFrZS5zdGVhbCgpID09PSBvYmosIHRy
dWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICM0Iik7Cit9CisKK3ZhciByZWFsID0ge2JvcnJvdzogb2JqLm1ldGhvZH07
Citub0lubGluZShyZWFsLmJvcnJvdyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICB0ZXN0Q2FzZShyZWFsLmJvcnJvdygpKCkgPT09IHJlYWwsIHRydWUsICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEwMTkwODZkNTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4OTM5YzA5MmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIgdGVzdENh
c2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4
cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFy
IG9iaiA9IHsgbmFtZTonb2JqJywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUp
ID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH19OworCitmb3IgKHZhciBpPTA7IGk8
MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmlu
ZygpKSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQor
Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MSA9IG9iai5tZXRo
b2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQxLCAnb2JqLW5h
bWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5uYW1lPSdu
ZXdPYmonOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmou
bWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50
b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9m
IHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkr
KykgeworICB2YXIgcmVzdWx0MiA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkp
OworICB0ZXN0Q2FzZShyZXN1bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCks
ICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93
IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy00LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg1YmQzNjNlNGU0NmIwMmQyZjE5YmJlMzg1MDJmNTI4MjMzYTlm
MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAtMCwwICsxLDI2IEBACit2
YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3Rl
ZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307
CisKKwordmFyIG9iaiA9IHsKKyAgbmFtZTonb2JqJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAg
ICBuYW1lICA6J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0
dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9Owor
Citub0lubGluZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBp
PDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCko
J3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ2ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRv
U3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2Yg
dGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5pbnRlcm5hbE9iamVjdC5uYW1lPSdu
ZXdJbnRlcm5hbE9iamVjdCc7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAg
dGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmco
KSksICduZXdJbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NzU0OTRjZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVhY2U2Mjg3NTQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKQEAgLTAsMCArMSw0OCBAQAordmFyIHNvcnRl
ZFZhbHVlczsKKwordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdl
ICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsg
IiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIGFycjogWzEsIDQsIDYsIDMsIDcsIDBd
LAorICBidWJibGVTb3J0OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHsKKyAgICAg
IHZhciB0bXA7CisgICAgICB2YXIgYXIgPSB0aGlzLmFyci5zbGljZSgpOworICAgICAgdmFyIF9s
ZW5ndGggPSBhci5sZW5ndGgKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbmd0aDsgaSsr
KSB7CisgICAgICAgIGZvciAodmFyIGogPSBpOyBqID4gMDsgai0tKSB7CisgICAgICAgICAgaWYg
KChhcltqXSAtIGFyW2ogLSAxXSkgPCAwKSB7CisgICAgICAgICAgICB0bXAgPSBhcltqXTsKKyAg
ICAgICAgICAgIGFyW2pdID0gYXJbaiAtIDFdOworICAgICAgICAgICAgYXJbaiAtIDFdID0gdG1w
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGFyOworICAg
IH0KKyAgfQorfTsKKworbm9JbmxpbmUob2JqLmJ1YmJsZVNvcnQpOworCitmb3IgKHZhciBpPTA7
IGk8MTAwMDA7IGkrKykgeworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgMywgNywgMF07Cisg
ICAgdGVzdENhc2Uob2JqLmJ1YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsK
KworICAgIHZhciBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENh
c2Uoc29ydGVkVmFsdWVzWzBdLCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5k
ZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNiIpOworICAgIHRlc3RDYXNlKHNvcnRl
ZFZhbHVlc1s2XSwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lk
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzciKTsKKworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwg
NiwgNSwgOCwgMjEsIDE5LCAwXTsKKworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5s
ZW5ndGgsIDksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2Yg
dGhlIGFycm93IGZ1bmN0aW9uICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxl
U29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzFdLCAxLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTIi
KTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTMiKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzQxN2JjN2M4ZjE4MDUzNThiZGJhODViMmNlZjZhNjliNWY0MWVjYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy02LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0
aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAi
JywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5h
bWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gIHRoaXMu
bmFtZTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMSA9ICgpID0+ICgpID0+IHRoaXMubmFt
ZTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMiA9ICgpID0+ICgpID0+ICgpID0+IHRoaXMu
bmFtZTsKK30KKwordmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKworbm9JbmxpbmUoZC5nZXROYW1l
KCkpOworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCkpOworbm9JbmxpbmUoZC5n
ZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSk7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKysp
IHsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVz
dENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsK
KyAgdGVzdENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSwgZC5uYW1lLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxMGEzMWQ2NzMx
YWU2OTc0ZDY2N2VkOGQyNDg3MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0
aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNCBAQAordmFyIG4gPSAxMDAwMDAw
MDsKKwordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVu
Y3Rpb24gYmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7
CisgICAgdmFyIHNldCA9ICh4KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlv
biBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQg
IT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJv
dyBmdW5jdGlvbic7CisgICAgICByZXN1bHQgPSB4OworICAgIH0KKyAgICBpZiAoYikgeworICAg
ICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwg
IShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24t
c2luay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDMwNjM3Yzg1
YmY5NDIxYWU5Yzk3ZTBkZDdmNmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFj
dGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDM4IEBACit2YXIgbiA9IDEwMDAwMDAwOworCit2
YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBi
YXIoZikgeworICAgIGlmICh0aGlzID09IG5ld0NvbnRleHQpCisgICAgICAgIHRocm93ICdXcm9u
ZyBjb250ZXh0IG9mIG5lc3RpbmcgZnVuY3Rpb24nOworICAgIGYoMTApOworfQorCitmdW5jdGlv
biBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4gewor
ICAgICAgcmVzdWx0ID0geDsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3Jl
IGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdD
b250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0
aW9uJzsKKyAgICB9OworCisgICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gMTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJl
c3VsdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47
IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28uY2FsbChuZXdDb250ZXh0LCAhKGkgJSAxMDAp
KTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxs
b2NhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg2OWUwMjcxMzljMTY2N2UxMDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAK
K3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9u
IGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworLy8gU2hvdWxkIGJlIGlu
dm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlv
biBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBh
cnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0
IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29u
dGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisgICAgfTsKKyAgICBpZiAocCkgeworICAgICAg
ICBjYWxsKGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAg
ICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9
CisgICAgcmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luay5jYWxsKG5ld0NvbnRl
eHQsIHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJv
cjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRo
aXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0
aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRl
ZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQor
ICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3Jl
eGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3ZGUyOGY2
MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsx
LDM2IEBACit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCisv
LyBTaG91bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0Nv
bnRleHQKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geworICAgICAg
Ly8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMg
IT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhy
b3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgICAgcmV0dXJuIHg7
CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAg
IHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNv
bnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250
ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9u
ICMyJzsKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3
Q29udGV4dCwgdHJ1ZSwgZmFsc2UpOy8vIFN1YnN0aXR1dGUgdGhpcworICAgIHZhciByZXN1bHQg
PSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0
ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVu
Y3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0
IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0g
c2luay5jYWxsKG5ld0NvbnRleHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCit2YXIg
cmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhw
ZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3ZWEwNzYzNWE0MTMxY2Qy
MzExZDQ1MDczNWY1N2MxZGQ5NTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1w
dXQuanMKQEAgLTAsMCArMSw0NSBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1j
b250ZXh0JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1
dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcg
PSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQK
KyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0Lmlk
KQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsK
KworICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9
IDQyOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFy
cm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQg
fHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250
ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30K
K25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAg
ICB2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsvLyB1c2UgY2FsbCB0
byBzdWJzdGl0dXRlIGNvbnRleHQKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJl
c3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBi
ZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0
aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRl
eHQsIHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIp
CisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29y
cmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBi
dXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5v
dCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rLmNhbGwo
bmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1
bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIg
KyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNlMGM2NThkM2EyZjc5
MjI5ZGY0Zjg5MmNjZGExNTEzYzk0ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsx
LDE3IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2Fn
ZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAi
LiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7
CisgIH0KK307CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5s
aW5lKHNpbXBsZUFycm93RnVuY3Rpb24pOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDtpKyspIHsK
KyAgIHRlc3RDYXNlKE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSwg
RnVuY3Rpb24ucHJvdG90eXBlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdldFByb3RvdHlwZU9mIHZh
bHVlIGZvciBhcnJvdyBmdW5jdGlvbiIpOworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0
aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0
IGZvciBpbnN0YW5jZW9mIG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENh
c2Uoc2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiwgdHJ1ZSwgIkVy
cm9yOiBOb3QgY29ycmVjdCByZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1ldGhvZCBvZiBhcnJvdyBm
dW5jdGlvICAgbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YTFm
MGE0OWNiMTY4NjNjNTkyMTM2MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEu
anMKQEAgLTAsMCArMSwyNCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhw
ZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJv
dyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsg
YWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJl
c3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2Jq
ID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlz
LmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcg
T2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgewor
ICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisK
K3Rlc3RDYXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBv
ZiBhcnJvdyBmdW5jdGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVy
cm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXJ1bi0xMC0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNkYjNjNzBhMWIyN2MzZGJi
NTIzODA5NTVmNTM1M2Q3Njc0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKQEAgLTAsMCArMSwy
NSBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4g
RXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOwor
ICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7Cisg
IGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5h
bWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9
PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworCisgICAgdmFyIG9iaiA9IG5ldyBPYmoo
Ikl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAg
ICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVz
dENhc2UocnVuKDEpLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVu
Y3Rpb24gb25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogZHVyaW5n
IGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0x
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1
bi0xMDAwMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFiMDFjYTI3ZDBiOTcyMGI1
N2U4ZDYwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanMKQEAgLTAsMCArMSwyMyBAQAordmFy
IHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQg
JyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9Owor
CitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIg
aT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAg
ICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5h
bWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlm
IChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7Cisg
ICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRy
dWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAw
MDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQy
NzFmNGEzMTU5MTYyNWEwYmQzZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAw
MC0yLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWws
IGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAg
dGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAn
IiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZh
ciByZXN1bHQgPSB0cnVlOworICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZh
ciBPYmogPSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAg
IHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisgICAg
dmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmou
Z2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJu
IHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjog
ZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNp
bmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQyODYyYzYyOGUzYjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1MWRlYzEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rp
b24gY2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5r
IChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7IH07CisgICAgaWYgKHApIHsKKyAgICAgICAg
Y2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAg
ICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQor
ICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2UpOwor
ICAgIGlmIChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8g
YmUgMiBidXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0
aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0
aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNp
bmsodHJ1ZSwgdHJ1ZSk7CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3Rl
ZCBvLnggdG8gYmUgMyBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2lu
Zy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAxNDBmYTE0OTk3M2UxN2Fh
YThkOTEwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjEgQEAK
K2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkg
eyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citu
b0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAg
dmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAg
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3Qg
IiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBi
ZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24g
aXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1
ZSk7Cit2YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJF
cnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtp
bmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3ZWZjNjE4NmJlMDU3YzNj
YmIyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rp
b24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB4OworICAgIGlmIChwKSB7IGlmIChx
KSBnLmlubmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geDsKK30KK25vSW5s
aW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIg
ZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChy
ZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyBy
ZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29t
cGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGlt
cGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFy
IHJlc3VsdCA9IGYoMTIpOworaWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4n
dCBtYXR0ZXIgYXMgaXQgc2hvdWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jh
c2gKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKwor
Ly8gQ2hlY2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9w
ZXJ0eSBhc3NpZ25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0g
Zi5pbm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91
bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0
OTIzOTcxOTgzZGNkYTM0YzI2OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpA
QCAtMCwwICsxLDI3IEBACit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4
dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlm
IChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAg
ICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9
OworCit2YXIgZXhjZXB0aW9uID0gbnVsbDsKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7
CisgIHRyeSB7CisgICAgICAgbmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4
Y2VwdGlvbiA9IGU7CisgICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQor
ICAgICAgICAgIHRocm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJy
b3IiOworICB9CisKKyAgaWYgKCFleGNlcHRpb24pCisgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5v
dCB0aHJvd24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKKworICB2YXIg
ZSA9IG5ldyBCKGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2Vj
MGRkZDU1MTRmYWY0ZDBkMDNjOWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpz
CkBAIC0wLDAgKzEsMjcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cg
bWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFj
dHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChh
KSA9PiB7YSArIDF9OworCitub0lubGluZShhZjEpOworbm9JbmxpbmUoYWYyKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjEsICJmdW5j
dGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEi
KTsKKyAgdGVzdENhc2UodHlwZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVj
dCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCisvL0ZpeG1lOiBTb21lIGJ1ZyBp
biBpbmxpbmluZyB0eXBlb2Ygd2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFtZXRlcnMgZnRsLW5vLWNq
aXQtbm8taW5saW5lLXZhbGlkYXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1ZSAtLWVuYWJsZUZ1bmN0
aW9uRG90QXJndW1lbnRzXD10cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXRocmVz
aG9sZEZvckpJVEFmdGVyV2FybVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBoPXRydWUgLS1tYXhpbXVt
SW5saW5pbmdEZXB0aD0xCisvLworLy8gZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSAg
eworLy8gICBpZiAodHlwZW9mIChmdW5jdGlvbiAoKSB7fSkgIT09ICdmdW5jdGlvbicpCisvLyAg
ICAgICB0aHJvdyAnV3JvbmcgdHlwZSc7CisvLyB9CisvLyAgdGVzdENhc2UodHlwZW9mICgpPT57
fSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5j
dGlvbiAjMy0iICsgaSk7CisKKy8vICB0ZXN0Q2FzZSh0eXBlb2YgKChiKSA9PiB7YiArIDF9KSwg
ImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjNCIpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUzNDU3Y2FhNjRkMWU2Yjdh
MDIuLmYxZDFiOGYxNTAwYWRjY2U4YjczYzY4ODVjODA1ODgzYzk2NzA1MTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNS0wOC0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFycm93IGZ1bmN0aW9uIHN5
bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCBvZiB0
aGlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5
NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpz
L2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tYmluZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9u
LWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNh
bGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0
b3IuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1v
dGhlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90
aGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanM6IEFk
ZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9y
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi10ZHouanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXR5cGVvZi5qczogQWRkZWQuCisKIDIwMTUtMDgtMTMgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2Ug
Zmxha2luZXNzIG9mIGluc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIyYjMyNmNjYmI0ZTE0YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2YwMTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxk
IGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZAorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBkLnkoKS5iaW5kKGUsICdsZXknKSgpIGlzICdiYXJsZXknCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlhY2IyYmM4ZmQ1MDRjNjhm
MDQ0NWE2ZWFjNGE2YTE0NTRhYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
YWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNmNDVlMTZiOTk2NTcyZDFh
ZmRlZWRkNTkxMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3IgRVM2IGFy
cm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNh
bGwmYXBwbHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCkuY2Fs
bChlKSBpcyAnZm9vJworUEFTUyBkLnkoKS5hcHBseShlKSBpcyAnZm9vJworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2YTg3NDllYzViN2U3ODNj
NmE5ZWMzMTMyZDJkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjcwNmZmZjE3YzIxMjM4NTM2NDBi
YjJhNGViMTdkNjNlMWEzNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVz
dHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0
aW5nICduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5Y2RkNGQ4YmRmYTYyNDFj
YjZiZWZiZjA0Y2M5NTgzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0
b3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYjY2ZmMyODhjYWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5j
dGlvbiBsZXhpY2FsIGJpbmQgb2YgdGhpcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBkLmdldE5hbWUoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lSGFyZCgpIGlzIGQu
bmFtZQorUEFTUyBkLmdldE5hbWVOZXN0aW5nKCkoKSgpIGlzIGQubmFtZQorUEFTUyBvYmoubWV0
aG9kKCkoJ2NvcnJlY3QnKSBpcyAnb2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIG9iai5tZXRo
b2QoKSgnY29ycmVjdCcpIGlzICduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9i
ai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdpbnRlcm5hbE9iamVjdC1u
YW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJl
Y3QnKSBpcyAnbmV3SW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBpbnN0YW5jZS5m
dW5jKCkgPT09IGluc3RhbmNlIGlzIHRydWUKK1BBU1Mgb3duZXJPYmoubWV0aG9kKCkoKSA9PT0g
b3duZXJPYmogaXMgdHJ1ZQorUEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIGlzIHRydWUK
K1BBU1MgcmVhbC5ib3Jyb3coKSgpID09PSByZWFsIGlzIHRydWUKK1BBU1MgYXJyb3dGdW5jdGlv
bignLXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1MgaG9zdE9iai5mdW5jKCctdGhpcycpIGlz
ICJyaWdodC10aGlzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLXRoaXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWVhMjJhNzZmZGY4YmZmNWU3MmU1MWI3Nzk0YjNl
MzQ3ZDE2NDJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTE1MmU1ZTM3
YzY5MTVmMzgyM2UyOWIyMGE5NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9w
ZXJhdG9ycworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYmplY3QuZ2V0
UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rpb24ucHJvdG90eXBlCitQ
QVNTIHNpbXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVlCitQQVNT
IHNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24gaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNjdmOGIwMGU0NjA1
NWVlNmZhZTVjMWU4Mjg5ZWZlZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVy
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLXRkei1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZjZDg2MDBlODg0MTI3N2M0
OTRhOTg5MDIyNDUyZWE2YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3Ig
RVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRk
ei5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2QzZmM0OGU1YzUzZmMxMTky
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjJmYjJjZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUwY2E1MzQ5YzFiYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9PT0gJ2Z1bmN0aW9uJyBp
cyB0cnVlCitQQVNTIHR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBl
b2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKChiKSA9PiB7
YiArIDF9KT09PSdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tdHlwZW9mLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVv
Zi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2NWUzNzNmZWRiNzQzODBl
MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVv
Zi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2MWRlM2JhYjUyMDljNzJk
ZGNmNTAyMTAwMzQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
YXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jl
c3MvYXJyb3dmdW5jdGlvbi1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0
aW9uLWNhbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2MWNiZWIwYjllZTEzM2Zl
ODczMTEyYmZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJv
d2Z1bmN0aW9uLWNhbGwuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjRj
ODQyNzZlNzEwODc3ODZjNTk0MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMK
QEAgLTAsMCArMSwxNSBAQAordmFyIGFmID0gKGEsIGIpID0+IGEgKyBiOworCitub0lubGluZShh
Zik7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGFmKGEsIGIpOworfQorCitu
b0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAg
IHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNTczYzNiNWUwY2E3OTE3OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5q
cwpAQCAtMCwwICsxLDE1IEBACit2YXIgZmUgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAr
IGI7fQorCitub0lubGluZShmZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJu
IGZlKGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3Vs
dCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1i
aW5kLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNTNmMDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0ZTk5NzljMDJhYzJhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tYmluZC5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBh
cnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBi
aW5kJyk7CisKK3ZhciBkID0geworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0
dXJuIHogPT4gdGhpcy54ICsgejsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitz
aG91bGRCZSgiZC55KCkuYmluZChlLCAnbGV5JykoKSIsICInYmFybGV5JyIpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4ZjkxMWJmMWM0NGQzODlk
MGEzZDIxODQ2ODM0ODRiNmY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2Ny
aXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVy
d3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHknKTsKKwordmFyIGQgPSB7CisgIHggOiAi
Zm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9OworCit2
YXIgZSA9IHsgeCA6ICJiYXIiIH07CisKK3Nob3VsZEJlKCdkLnkoKS5jYWxsKGUpJywgIidmb28n
Iik7CitzaG91bGRCZSgnZC55KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmFkMDc2ODQ3
YmZmNDkyOWY3ODA3NzY1Zjk5MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCww
ICsxLDcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNv
bnN0cnVjdG9yJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3No
b3VsZFRocm93KCduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJyk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTU2YTE1NTMwZjM0Y2MzMDhhY2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJy
b3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRoaXMnKTsKKworZnVuY3Rpb24gRG9nKG5hbWUp
IHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhp
cy5uYW1lIik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5u
YW1lKSgpIik7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlz
Lm5hbWU7Cit9CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CitzaG91bGRCZSgnZC5nZXROYW1l
KCknLCAnZC5uYW1lJyk7CitzaG91bGRCZSgnZC5nZXROYW1lSGFyZCgpJywgJ2QubmFtZScpOwor
c2hvdWxkQmUoJ2QuZ2V0TmFtZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1lJyk7CisKK3ZhciBvYmog
PSB7CisgIG5hbWUgICA6ICdvYmpDb2RlJywKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAg
IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7CisgIH0KK307
CisKK3Nob3VsZEJlKCJvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInb2JqQ29kZS1uYW1lLWNv
cnJlY3QnIik7CitvYmoubmFtZT0nbmV3T2JqQ29kZSc7CitzaG91bGRCZSgib2JqLm1ldGhvZCgp
KCdjb3JyZWN0JykiLCAiJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworCit2YXIgZGVlcE9i
aiA9IHsKKyAgbmFtZSA6ICd3cm9uZ09iakNvZGUnLAorICBpbnRlcm5hbE9iamVjdDogeworICAg
IG5hbWUgIDonaW50ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1
cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9CisgIH0KK307Citz
aG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidp
bnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK2RlZXBPYmouaW50ZXJuYWxPYmplY3Qu
bmFtZSA9ICduZXdJbnRlcm5hbE9iamVjdCc7CisKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFs
T2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29y
cmVjdCciKTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRo
aXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25D
b25zdHJ1Y3RvcigpOworCitzaG91bGRCZSgiaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSIs
ICJ0cnVlIik7CisKK3ZhciBvd25lck9iaiA9IHsKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgewor
ICAgIHJldHVybiAoKSA9PiB0aGlzOworICB9Cit9OworCitzaG91bGRCZSgib3duZXJPYmoubWV0
aG9kKCkoKSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgZmFrZSA9IHsgc3RlYWwgOiBv
d25lck9iai5tZXRob2QoKSB9Oworc2hvdWxkQmUoImZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmoi
LCAidHJ1ZSIpOworCit2YXIgcmVhbCA9IHsgYm9ycm93IDogb3duZXJPYmoubWV0aG9kIH07Citz
aG91bGRCZSgicmVhbC5ib3Jyb3coKSgpID09PSByZWFsIiwgInRydWUiKTsKKwordmFyIGFycm93
RnVuY3Rpb24gPSB7IHggOiAicmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9uIDogZnVuY3Rpb24oKSB7
IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH19LmdldEFycm93RnVuY3Rpb24oKTsKK3ZhciBob3N0
T2JqID0geyB4IDogIndyb25nIiwgZnVuYyA6IGFycm93RnVuY3Rpb24gfTsKKworc2hvdWxkQmUo
ImFycm93RnVuY3Rpb24oJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CitzaG91bGRCZSgiaG9z
dE9iai5mdW5jKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzk5MzFjM2RlYmNiNTAyN2FkMTRmZDE1
NDdlNWFiYTAzOGI0YjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIEluc3Bp
cmVkIGJ5IG1vemlsbGEgdGVzdHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1
bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsKKwordmFyIHNpbXBsZUFy
cm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVP
ZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5cGUiKTsKK3Nob3VsZEJl
KCJzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24iLCAidHJ1ZSIpOworc2hv
dWxkQmUoInNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24iLCAidHJ1
ZSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY1OGZj
NjUxM2VkYWJkZTFkZDY1MDc0OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEs
MjYgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6
Jyk7CisKK3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsK
KyAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgaWYgKGFjY2Vzc1Ro
aXNCZWZvcmVTdXBlcikgeworICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOworICAgICAgc3VwZXIo
KTsKKyAgICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICB9CisgIH0KK307CisKK3ZhciBp
c1JlZmVyZW5jZUVycm9yID0gZmFsc2U7Cit0cnkgeworICAgICBuZXcgQih0cnVlKTsKK30gY2F0
Y2ggKGUpIHsKKyAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVy
cm9yOworfQorCitzaG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7CisKK3ZhciBl
ID0gbmV3IEIoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5q
cyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MmFhMjY5MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
dHlwZW9mLmpzCkBAIC0wLDAgKzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIg
PSAoYSkgPT4ge2EgKyAxfTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbici
LCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyIsICJ0cnVl
Iik7CisKK3Nob3VsZEJlKCJ0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIp
OworCitzaG91bGRCZSgidHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIiwgInRy
dWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259144</attachid>
            <date>2015-08-17 06:52:49 -0700</date>
            <delta_ts>2015-08-17 07:23:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817165244.patch</filename>
            <type>text/plain</type>
            <size>179014</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uODA3YmVjNThjYjg1NzFjYTAwYjYyOWMzMDM5NjRi
Yzc2YTI1OTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwg
YXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjIzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4LDYgKzIx
OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50
cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUq
KTsKQEAgLTIyMjEsNiArMjIzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVO
ZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3
RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDgw
MGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2
NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNj
b3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxl
TG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVO
ZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJ
bjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUzZGFm
MzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2
ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAg
ICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKyAg
ICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUp
OwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBp
bGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEz
Yi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAgICAg
ICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBzZXQgdGhl
aXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAgICAgICAg
IC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUw
M2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhw
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUz
YjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1
ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3MTguLjcx
MmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04
OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8o
U3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9s
OjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBT
eW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlv
bl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisg
ICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fy
cm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5j
dGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZp
bmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5
ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CkBA
IC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAgY2FzZSBU
b1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmlu
c2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNS
ZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhi
NC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2
LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpf
SklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnRQ
dHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUoaW50NjQs
IGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2ND
LCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAorICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGlu
dDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVu
Y3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFjcm8oSl9K
SVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50UHRyLCBp
bnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1bmN0aW9u
VHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4
NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAi
RlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJK
U0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKQEAgLTU5
Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21waWxlTG9h
ZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09
IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0Fy
cm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0
aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAgIAogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5k
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVlIGNhbGxS
ZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJs
ZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1
bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAgICA6IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rp
b24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAKLSAg
ICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAg
ICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAg
ICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyBhbGxv
Y2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFz
dC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5b3VuZy4K
LSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5j
dGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFi
bGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0gICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNG
dW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2Jq
ZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29wZSA6IG1f
aGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2lu
dGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9oZWFwcy5K
U0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxl
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICAgICBt
X291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRy
WmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAgICAgCiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVj
dCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBMVmFsdWUg
Y2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpLAotICAg
ICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7Cisg
ICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJhbWUsIHNj
b3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiB2
bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIo
ZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUxv
YWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25f
dGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQogICAgIHsK
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMz
ZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5
LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJs
ZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZh
bHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAgICAgICBp
c0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9IEpTVmFs
dWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAgICAgSlNG
dW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAgICAgIAor
ICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAgICAgICAg
ID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAgICAgICAg
ICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUxOWY4My4u
MGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1
YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2VmNTViMTIy
ZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5j
bHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07CisgICAg
Y2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5ODdjMzAz
YjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uYWE5MjY5YTE4OWMxMDg2OTZlZDFhYjdjNDcxMzQ0NGEx
YWY5OGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC02
MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNF
VCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsK
ICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVudHMgaW50
byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVjbCBjYWxs
aW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAgICAgLy8g
c3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMg
aW50byB0aGUKQEAgLTk1NSw2ICs5NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVwU3R1YkFy
Z3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxpZiBDUFUoQVJN
KQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICs5OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1v
dmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0KKyAgICAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAgICB7CiAg
ICAgICAgIG1vdmVEb3VibGUoYXJnNCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAgLTEwMDcs
NiArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNlbHNlCisKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBhc3NlbWJs
ZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBh
cmcxKTsKQEAgLTExMjgsNyArMTEyOSw3IEBAIHB1YmxpYzoKICNlbHNlCiAjZXJyb3IgIkpJVCBu
b3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCi0KKyAgICAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAg
ICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkBAIC0xNDcwLDcgKzE0NzEsNiBA
QCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxs
aW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IKICAgICAvLyBleGFjdGx5IDQgYXJndW1l
bnQgcmVnaXN0ZXJzLCBlLmcuIEFSTXY3LgogI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgPT0gNAotCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkK
ICAgICB7CiAgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwpAQCAtMTUz
NSw2ICsxNTM1LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGVXKEdQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBU
d29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mz4oYXJnMSwgYXJnMyk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVz
dGVkSW1tUHRyIGFyZzMsIFRydXN0ZWRJbW02NCBhcmc0KQogICAgIHsKICAgICAgICAgcG9rZShh
cmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CkBAIC0xODk4LDYgKzE5MDUsMTMgQEAgcHVibGlj
OgogI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAogCiAjaWYgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA1CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJn
MiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzR1BSPEdQUklu
Zm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKKyAg
ICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0K
KyAgICAKICAgICB2b2lkIHNldHVwU3R1YkFyZ3VtZW50czEzNChHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBUaHJlZVN0dWJBcmdzR1BS
PEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjph
cmd1bWVudEdQUjQ+KGFyZzEsIGFyZzMsIGFyZzQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDAzOGY1ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3ZmYyZWJhNDBlYjQuLmJiYzg1MjNm
NWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9lbmQpCiAgICAgICAgIERFRklORV9PUChvcF9lbnRl
cikKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9w
X2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAg
ICAgIERFRklORV9PUChvcF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRf
b2ZfbGluZToKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHAp
CisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAgICBERUZJ
TkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHApCiAg
ICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4NDEx
YTdlZjY1YTljNmJkY2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2Li43NzFmZDliNDA2NWJkZDE3MjJj
MGU3MmI4ODcyMDhlYzYyZjFlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5OCw2
ICs0OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9u
dWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1
Y3Rpb24qKTsKQEAgLTUzOSw2ICs1NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
ZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19m
dW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CkBAIC02NTMsNiAr
NjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5z
dHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0
U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwg
Ym9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUo
aW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25l
ZCBkZXB0aCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50IHNj
b3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAgLTcyMyw2ICs3MjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQUlJlZywgQnlWYWxJbmZvKik7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RUpzYywgR1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSnNjQywgaW50LCBHUFJSZWcsIEpTQ2VsbCopOworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwg
aW50LCBHUFJSZWcsIEpTQ2VsbCosIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIEdQUlJlZywgaW50MzJfdCk7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRp
b25fRUpzY1osIGludCwgR1BSUmVnLCBpbnQzMl90KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ZDY4NjkwMDgxYzk5NmQ3ZTMz
YmYzYmQyNWRjYzU4YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcyNDk1NmJmNTg0OTFiM2RlNzgzYTZm
Y2RjMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjcxLDYg
KzI3MSwxMiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYQogICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAK
K0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwsIEdQUlJlZyBhcmcyKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsKKyAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOworfQor
ICAgIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2ludGVyKQog
ewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU5OGQ0ZWM5
OWMxZDE4ZTZjMzk2MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4M2JjYzhjNDVkZTY2NmY3M2M5ZTkx
MWY1MTQyOWYzNWViMTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTY3Myw2ICs2NzQsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hh
aW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQorICAgIAor
dm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpD
YWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlv
bjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwg
cmVnVDApOworfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NjIsMjYgKzk3MSw0NSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
KyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAK
K3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbiA9IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cDsKKyAgICAKICAg
ICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYg
KGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUg
PSBicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVn
aXN0ZXIpICogZHN0KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJl
Z1QxKTsKICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3Io
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpV
bmRlZmluZWRUYWcpKTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICNlbmRp
ZgotCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlLmxpbmso
dGhpcyk7Ci0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2RlQmxvY2st
PmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhwcik7Cisg
ICAgICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+
ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIGlmIChp
c0Fycm93RnVuY3Rpb24pCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyAgICBlbHNlCisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9u
KTsKICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29wX25l
d19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorICAgIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOTFjMDBl
M2ZkNDVlMDk3ZTNiYjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4uYjM5YWUxZDFhMzA2ODAzNDNlOWZk
OWE3MjMxNDI5YjZlNTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNF
bnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTkyMiw2ICs5
MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUs
IHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zm
c2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDAp
OworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
aW5kZXggYjVmOWUzNjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMwMjRjZGNkYjkzYi4uNGZmMGUzZDE1
MGI0MjYwZWY5NGIyMWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFRvREZH
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTk0Miw2ICs5
NDMsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJs
ZSksIHNjb3BlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0
ZWQpCit7CisgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25F
eGVjdXRhYmxlOjppbmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgICAgICAKKyAgICBKU0Fycm93RnVuY3Rpb24qIGFycm93RnVuY3Rp
b24gID0gaXNJbnZhbGlkYXRlZAorICAgICAgICA/IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUs
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKQorICAgICAgICA6IEpTQXJyb3dGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyb3dGdW5jdGlvbik7Cit9Cisg
ICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cit9CisgICAg
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFi
bGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVl
LCBmYWxzZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5k
ZXggM2Q4M2Y1OTBkY2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJjYmU4NGY5Yi4uYTY3Y2FhY2IzMmZi
MjE1OGE5YzA1ZTZhNTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQq
LCB2bwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7Cit0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQ0opKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU1MpKEV4ZWNTdGF0ZSos
IHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBK
U0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAtMjg4LDYg
KzI4OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlC
dWZmZXJXaXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFM
OworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9u
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdl
eHAoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYW5kbGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKaW5kZXggMmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDllZjliMDEzOGQ5YTgzZjFlYy4uYTJh
NmIyYjExYzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJW
TS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
aW5kZXggNTViODFlZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJiNDFmNTY4NWQ3Zi4uMmNkOWY2ZWI4
ZDY4Mzg2ODcwOTdjNGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRp
b25zLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgpAQCAtMTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3Jj
Zl9leGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZh
bHNlKQotCisgICAgCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9v
cGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBp
bnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTAxMywxMiArMTAxNCwyNCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBK
U1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rl
cjo6c2NvcGUoKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2Nr
LT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpOworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3Bl
cmFuZCk7CiAgICAgCi0gICAgTExJTlRfUkVUVVJOKGZ1bmMpOworICAgIExMSU5UX1JFVFVSTihK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1BfQyg0KS5qc1ZhbHVl
KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rl
cjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxv
Y2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVS
TihKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRoaXNWYWx1
ZSkpOwogfQogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTA5Niw3ICsxMTA5LDcgQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlv
biogcGMsIENvZGUKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQo
KTsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAKKwogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOGNjNjlhOTYwMGJiZjlkODUzMzlkNjA5NTk1ZjY3
YzY4ZDA3NjcxYi4uM2YxZGFhODEyYjcwMmUyM2M2YWFlZjlmZDdjMDY3MWVlMjAyNWMwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hh
cik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjOTEw
NjE3ZWQ4MzRiNzRjOWYyZjhlZTRiMjY4N2M4YjljZmUzYzdjLi43M2ZjNTg4NDQyZGRjNGI5Y2Zh
N2I4OGYwMDRjYTg2NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTgzLDYgKzExODMsMTAgQEAgX2xs
aW50X29wX25ld19mdW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9u
ZXdfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19hcnJvd19mdW5j
X2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDUpCiAKIF9sbGludF9vcF9j
YWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZTkwZWNlZGZh
NzMwOTgyZmVlZjcxZWViMGNlYTY0MzgyMzRhNjkxYy4uN2VmNmI4N2MxNzBhZDA4M2IxZjUyOWRh
ODgzNmMwMGNkYTY0YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIzNzMsMyArMjM3MywxMiBA
QCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlz
cGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisg
ICAgbG9hZGkgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDk0
NTVmNzVjN2I2NjQyZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1Yi4uZDIxNTJhMmYyNzdhZGU1ODc5
NzZhMWMzZjEyMDIzNzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyMjYsMyArMjIyNiwxMSBA
QCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlz
cGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBKU0Fycm93
RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
MSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5NGE2Ny4u
ODA2ZGI1MjMwM2Q1YWQzYTcxODgxMjlmODhiZDc2NGM2YjUwZWVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOSArMzYxLDE5IEBAIHB1Ymxp
YzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAg
ICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3Ry
aWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAgICB7CiAgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAg
ICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29s
dW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250
ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAgICAgICAg
IGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwg
aXNBcnJvd0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJy
b3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgeworICAgICAg
ICB1c2VzVGhpcygpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRP
ZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1
bW4pOwotCi0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5h
KSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZv
LmJvZHksIHNvdXJjZSk7CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZv
Lm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8u
Ym9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0ZTEyODg0OGVhOGI0M2ZkODYzNjk3
NGNiOTk3YzM3ZGIuLmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0M2JjYmExOTY5M2FkYmQxNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBA
IC04OTAsMTMgKzg5MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIAorICAgIGlubGluZSBC
YXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKICAgICB7
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rp
b25FeHByZXNzaW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhw
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UpCisgICAgICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1f
bWV0YWRhdGEsIHNvdXJjZSkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIEZ1bmNEZWNsTm9k
ZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9tZXRhZGF0YShtX21ldGFkYXRhKQpAQCAtOTA0LDYgKzkxMCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlk
ZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgQXJyb3dGdW5j
RXhwck5vZGU6OkFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRh
ZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5v
ZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwog
I2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIGlubGluZSBDbGFzc0RlY2xOb2RlOjpD
bGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBjbGFzc0RlY2xhcmF0aW9uKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGNmNGZlNDUwYTkyNDk1
MDRmMzBiYTg1YTI2NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUzMzA1YzRhMGMyMWM3MzM4ODM5YzI5
ZjIzYzc0ZGU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0x
NTEsNyArMTUxLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KAogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9u
LCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlKQorICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogTm9kZShlbmRM
b2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAs
IG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw2ICsxNjMsNyBAQCBGdW5jdGlvbk1ldGFk
YXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9k
ZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAg
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rv
cktpbmQpKQorICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKIHsK
ICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4
IDFkNmIwM2Q3NzY2Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQuLjg3MzY2OGVjMzdiNDI3
YjkyMDY0OWRlMzA2ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVh
bCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUFy
cmF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWRk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDksNyArMTgxMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKTsKIAog
ICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzUsNiArMTgzNiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiAgICAgICAgIHZvaWQg
c2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9m
ZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2MCw2ICsxODYyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsK
ICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKKyAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb24gOiAxOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJs
aWMgU2NvcGVOb2RlIHsKQEAgLTE4ODksMTggKzE4OTIsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jRXhw
ck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJhc2VGdW5jRXhwck5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4
cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgQmFzZUZ1bmNFeHBy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCisgICAgcHJvdGVj
dGVkOgorICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICB9Owor
CisKKyAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9kZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29k
ZSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB9OwogCi0gICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21l
dGFkYXRhOworICAgIGNsYXNzIEFycm93RnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhw
ck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwg
Y29uc3QgU291cmNlQ29kZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICNpZiBFTkFCTEUoRVM2
X0NMQVNTX1NZTlRBWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCBhZWU3MGI2YTczMjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxLi5mNTA4MTRlN2IxNDJh
YjUzMDBkODRhNGI3MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkJvCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CisgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9k
eUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9u
Qm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQs
IHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTE1NjIsNyArMTU2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAg
ICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENo
ZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90
IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25N
ZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBh
cnNlTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNB
cnJvd0Z1bmN0aW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE3MzcsNyArMTczOCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
ID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLQorICAgIAogICAg
IGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAv
LyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUg
Y2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlv
bi4KQEAgLTE3NTYsMTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAg
ICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0
T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRp
b24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLQorICAgICAgICAKKyAg
ICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBh
cnNlVHlwZTsKKyAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9j
YXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAg
ICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0
b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBj
YWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFt
ZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgZnVu
Y3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwog
ICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKQEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUp
OwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rp
b25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VU
eXBlKQorICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAgICAgZnVuY3Rpb25C
b2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9j
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXgg
MDc2MGMxOWViMTYzNmRiMjFhMTc5NjEyYTU0OTZlMTljZmQxYmIwNy4uZGM1NjFmOWIxYTZkYTM2
NDNiODI3MmZlN2IxMmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgQ2xh
c3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxp
c3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBp
bnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSkgeyByZXR1cm4g
RnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJv
b2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAg
aW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCAwYWIxNjcyMTE2
ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2OTRmMjdhNDU4NzNiMmEyMTY3YTM2
OTYzNWQzZTU5NDVhYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcApAQCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0cjxDb2RlQmxvY2s+IFNjcmlwdEV4
ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
ID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2Zm
OwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc1Byb2Zp
bGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPQotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKAotICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxl
LT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgZXhl
Y3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
ciwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNlKGV4ZWN1
dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5tX3Vu
bGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtl
ZENvZGVCbG9jaykgewogICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmNlMjQyOGNi
YzEwMWRkYTZjYjEwMWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2YyYmRlODhjNWE2ZTkxNjc2MDM2ZWUy
N2Q3NDRmNzY0NTM5Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaApAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2Rl
KCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZh
cmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMo
KTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTMwLDcg
KzUzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1
bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUo
KTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAg
IGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0
IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgp
OyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFjMjYwZTE2
YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDgx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNo
a292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKKwor
I2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6c19pbmZv
ID0geyAiQXJyb3dGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNBcnJvd0Z1bmN0aW9uKSB9OworCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2VsbCkt
PkpTQXJyb3dGdW5jdGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOworfQorCitKU0Fycm93RnVuY3Rp
b24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgSlNB
cnJvd0Z1bmN0aW9uKiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
Ym91bmRUaGlzKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlX
cml0ZSh2bSwgcmVzdWx0LCAiQWxsb2NhdGluZyBhbiBhcnJvdyBmdW5jdGlvbiIpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1
ZSBib3VuZFRoaXMpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmds
b2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhp
cyh2bSwgdGhpcywgYm91bmRUaGlzKQoreworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dG
dW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFs
dWUgYm91bmRUaGlzKQoreworICAgIEFTU0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlv
bigpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNB
cnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBK
U0Fycm93RnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYp
Cit7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIyMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3Nh
bmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmlu
ZSBKU0Fycm93RnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2ly
ZWRPZmZzZXRzOworICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rp
b24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVh
dGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgc3Rh
dGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKwor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgCisgICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEpTQXJyb3dGdW5jdGlvbik7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBK
U0Fycm93RnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICB7CisgICAg
ICAgIEpTQXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0Fycm93RnVuY3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVjdHVy
ZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisK
KyAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9Cisg
ICAgCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dGdW5jdGlv
biwgbV9ib3VuZFRoaXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVkOgorICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgCitwcml2YXRlOgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgIAorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2JvdW5kVGhp
czsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQXJyb3dGdW5j
dGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXgg
MGI4N2Q3NWM5MTQ1MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBmMDkzZS4uOTI4MzUwZTI0NzhjNDVm
N2JmN2U4YWE4NGM5ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaApAQCAtMTQxLDYgKzE0MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
KiwgU3RydWN0dXJlKik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhl
Y3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFz
ZTo6ZmluaXNoQ3JlYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2ZTVjMTE2NGNiMjdmYTVlNDE2MThi
NGI4MTQyZjAyLi5mMDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUyN2I2M2I2NDRhODg0NDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgK
QEAgLTQ0LDYgKzQ0LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzCiAgICAgLCBtX3JhcmVE
YXRhKCkKIHsKIH0KKyAgICAKK2lubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQorICAgICwgbV9l
eGVjdXRhYmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQorICAgICwgbV9yYXJlRGF0YSgpCit7Cit9
CiAKIGlubGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFkMDQyMy4u
ZGExYWMyNWFhYjAwODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMwZmYzOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTksNiArNTks
NyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmgiCkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgZXhlYy0+c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsKIAogICAgIG1fZnVu
Y3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2Fycm93RnVuY3Rp
b25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5j
dGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1
bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24odm0sIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFtZU9mZnNl
dCkpOwogICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOwpAQCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA5OTg2YmNmNjI0
NWUyY2M0NjgyMGIxMzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEyYjI5MzA1NWU5YmFlMzBiYjczZmQ5
MDE1YmMwMDM4MzYzYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
bmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFt
ZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0
dXJlOwpAQCAtNDYyLDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxlZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fycm93
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0
aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MWUzYTY2ZWE5MmYwMzBkYjM3NzlhNGMzZTQwMmU3YzExOGQxZDgxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2
YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpzCkBAIC0wLDAgKzEs
NDYgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBzaG91
bGRUaHJvd1REWihmdW5jKSB7CisgICAgdmFyIGhhc1Rocm93biA9IGZhbHNlOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUubmFtZS5p
bmRleE9mKCJSZWZlcmVuY2VFcnJvciIpICE9PSAtMSkKKyAgICAgICAgICAgIGhhc1Rocm93biA9
IHRydWU7CisgICAgfQorICAgIGlmICghaGFzVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkRpZCBub3QgdGhyb3cgVERaIGVycm9yIik7Cit9CisKK2Z1bmN0aW9uIGJhcihmKSB7IH0K
KworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0g
ICh4KSA9PiB7IHJlc3VsdCA9IHg7IHJldHVybiB0ZHpQZXJwZXRyYXRvcjsgfQorICAgIGlmIChi
KSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJh
cihzZXQpOworICAgICAgICAgICAgcmV0dXJuIHRkelBlcnBldHJhdG9yOworICAgICAgICB9Cisg
ICAgfQorICAgIGxldCB0ZHpQZXJwZXRyYXRvcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitu
b0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKHNob3VsZFRocm93VERaKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgYm9vbCA9ICEoaSAlIDEw
MCk7CisgICAgaWYgKGJvb2wpCisgICAgICAgIHNob3VsZFRocm93VERaKCgpPT4geyBmb28oYm9v
bCk7IH0pOworICAgIGVsc2UgeworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKGJvb2wpOworICAg
ICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRl
ZmF1bHQtdmFsdWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNDFiYmUxNDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5YzY1YTRiYTc3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBA
QAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoc2V0KSB7CisgICAgdmFyIHJlc3Vs
dCA9IHNldCgwKTsKKyAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlOiAiICsgcmVzdWx0OworfQorCitmdW5jdGlvbiBmb28oYikgeworICAg
IHZhciByZXN1bHQgPSAwOworICAgIHZhciBpbVVuZGVmaW5lZDsKKyAgICB2YXIgYmF6OworICAg
IHZhciBzZXQgPSAgKHgpID0+IHsKKyAgICAgICAgcmVzdWx0ID0geDsKKyAgICAgICAgaWYgKGJh
eiAhPT0gNTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGJhejsK
KyAgICAgICAgcmV0dXJuIGltVW5kZWZpbmVkOworICAgIH07CisgICAgYmF6ID0gNTA7CisgICAg
aWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAg
ICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAw
KSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdiMmMyYWQzNDVlMjZjMjAzNzc4OTBk
ZjVmMzFmYWYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCww
ICsxLDI1IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5j
dGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4g
eyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAg
ICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citu
b0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciBy
ZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3OWVjOWVhYTY1YzU0MTkzMGI5MDQ4
MjZlN2EyM2ExM2ZiMmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsx
LDI0IEBACit2YXIgbiA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEwKTsgfQor
CitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSB4
ID0+IHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAg
ICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIg
KyByZXN1bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChy
ZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWJvdW5kLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDMyMDg4YWJmMjZkYWUyYWU3MWEy
YWM0YzA1ZDRmMDc3NTVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKQEAgLTAsMCArMSwxOCBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6
ID0+IHRoaXMueCArIHo7IH0KK307CisKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDog
ImJheiIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC55
KCkuYmluZChlLCAibGV5IikoKSwgImJhcmxleSIsICJFcnJvcjogZnVuY3Rpb24gYmluZCBzaG91
bGRuJ3QgY2hhbmdlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5YzgzYWM1M2E3ZjZkMzUxOTYyMzIx
NGMxZTlmYzYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0
Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsg
ZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFy
IGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhp
cy54OyB9Cit9Oworbm9JbmxpbmUoZC55KTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitm
b3IgKHZhciBpPTA7IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0Q2FzZShkLnkoKS5jYWxsKGUpLCAi
Zm9vIiwgIkVycm9yOiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0IGNoYW5nZSB0aGUgbGV4aWNhbCBi
aW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIpOworICAgIHRlc3RDYXNlKGQueSgpLmFwcGx5
KGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBhcHBseSBzaG91bG4ndCBjaGFuZ2UgdGhlIGxl
eGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rv
ci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3OTQ5YmM2YjJjNzhhYjQ2NTllYThj
MmFjNjNkZTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsMjIgQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworbm9JbmxpbmUoc2ltcGxl
QXJyb3dGdW5jdGlvbik7CisKK3ZhciBlcnJvck9uQ3JlYXRlID0gZmFsc2U7CisKK2ZvciAoaT0w
O2k8MTAwMDA7aSsrKSB7CisgICB0cnkgeworICAgICAgIHZhciBmYyA9IG5ldyBzaW1wbGVBcnJv
d0Z1bmN0aW9uKCk7CisgICB9CisgICBjYXRjaCAoZSkgeworICAgICBlcnJvck9uQ3JlYXRlID0g
dHJ1ZTsKKyAgIH0KKworICAgIHRlc3RDYXNlKGVycm9yT25DcmVhdGUsIHRydWUsICJFcnJvcjog
Tm8gZXhjZXB0aW9uIGR1cmluZyBydW4gbmV3IEFycm93RnVuY3Rpb24iKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNmYWIyNGM5
MWJjNTdjOTU4NzYzMmRmZWM5YTRjOTM3OThlMjE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy0xLmpzCkBAIC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1
YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7Cisg
ICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdh
cyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAg
dGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1l
Iik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgp
Iik7Cit9CisKK25vSW5saW5lKERvZykKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkrKykgewor
ICB2YXIgZCA9IG5ldyBEb2coIk1heCIpOworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1l
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFtZSwgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzIiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVjODE2NGU0OGQwM2E2N2ViOTJhNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
dmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgp
ID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3Rvcigp
OworCit0ZXN0Q2FzZShpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlLCB0cnVlLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMiIpOworCit2YXIgb2JqID0geworICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworbm9JbmxpbmUob2JqLm1ldGhvZCk7CisKK2ZvciAo
dmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoKSA9
PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQorCit2YXIgZmFrZSA9IHtzdGVhbDogb2Jq
Lm1ldGhvZCgpfTsKK25vSW5saW5lKGZha2Uuc3RlYWwpOworCitmb3IgKHZhciBpPTA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UoZmFrZS5zdGVhbCgpID09PSBvYmosIHRydWUsICJF
cnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICM0Iik7Cit9CisKK3ZhciByZWFsID0ge2JvcnJvdzogb2JqLm1ldGhvZH07Citub0lu
bGluZShyZWFsLmJvcnJvdyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICB0ZXN0Q2FzZShyZWFsLmJvcnJvdygpKCkgPT09IHJlYWwsIHRydWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEwMTkwODZkNTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4OTM5YzA5MmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIgdGVzdENhc2UgPSBm
dW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVk
ICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9
IHsgbmFtZTonb2JqJywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRo
aXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH19OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7
IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwg
J29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitmb3Ig
KHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MSA9IG9iai5tZXRob2QoKSgn
dGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQxLCAnb2JqLW5hbWUtdGVz
dCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5uYW1lPSduZXdPYmon
OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9k
KCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmlu
ZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBh
cnJvdyBmdW5jdGlvbiAjNSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgewor
ICB2YXIgcmVzdWx0MiA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0
ZXN0Q2FzZShyZXN1bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg1YmQzNjNlNGU0NmIwMmQyZjE5YmJlMzg1MDJmNTI4MjMzYTlmMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAtMCwwICsxLDI2IEBACit2YXIgdGVz
dENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiAr
IGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwor
dmFyIG9iaiA9IHsKKyAgbmFtZTonb2JqJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1l
ICA6J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2
YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9OworCitub0lu
bGluZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAw
OyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3Qn
ICsgaS50b1N0cmluZygpKSwgJ2ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5n
KCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5pbnRlcm5hbE9iamVjdC5uYW1lPSduZXdJbnRl
cm5hbE9iamVjdCc7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENh
c2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdu
ZXdJbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NzU0OTRjZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVhY2U2Mjg3NTQ2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTUuanMKQEAgLTAsMCArMSw0OCBAQAordmFyIHNvcnRlZFZhbHVl
czsKKwordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4g
RXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOwor
ICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIGFycjogWzEsIDQsIDYsIDMsIDcsIDBdLAorICBi
dWJibGVTb3J0OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHsKKyAgICAgIHZhciB0
bXA7CisgICAgICB2YXIgYXIgPSB0aGlzLmFyci5zbGljZSgpOworICAgICAgdmFyIF9sZW5ndGgg
PSBhci5sZW5ndGgKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGZvciAodmFyIGogPSBpOyBqID4gMDsgai0tKSB7CisgICAgICAgICAgaWYgKChhcltq
XSAtIGFyW2ogLSAxXSkgPCAwKSB7CisgICAgICAgICAgICB0bXAgPSBhcltqXTsKKyAgICAgICAg
ICAgIGFyW2pdID0gYXJbaiAtIDFdOworICAgICAgICAgICAgYXJbaiAtIDFdID0gdG1wOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGFyOworICAgIH0KKyAg
fQorfTsKKworbm9JbmxpbmUob2JqLmJ1YmJsZVNvcnQpOworCitmb3IgKHZhciBpPTA7IGk8MTAw
MDA7IGkrKykgeworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgMywgNywgMF07CisgICAgdGVz
dENhc2Uob2JqLmJ1YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKworICAg
IHZhciBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29y
dGVkVmFsdWVzWzBdLCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5z
aWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVl
c1s2XSwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzciKTsKKworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgNSwg
OCwgMjEsIDE5LCAwXTsKKworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgs
IDksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgp
KCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzFdLCAxLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTIiKTsKKyAg
ICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTMiKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQxN2Jj
N2M4ZjE4MDUzNThiZGJhODViMmNlZjZhNjliNWY0MWVjYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy02LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsK
KyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gIHRoaXMubmFtZTsK
KyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMSA9ICgpID0+ICgpID0+IHRoaXMubmFtZTsKKyAg
dGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMiA9ICgpID0+ICgpID0+ICgpID0+IHRoaXMubmFtZTsK
K30KKwordmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKworbm9JbmxpbmUoZC5nZXROYW1lKCkpOwor
bm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCkpOworbm9JbmxpbmUoZC5nZXROYW1l
TmVzdGluZ0xldmVsMigpKCkoKSk7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAg
dGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2Uo
ZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKyAgdGVz
dENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMt
YWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxMGEzMWQ2NzMxYWU2OTc0
ZDY2N2VkOGQyNDg3MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlv
bi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwor
dmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24g
YmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAg
dmFyIHNldCA9ICh4KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbic7CisgICAgICByZXN1bHQgPSB4OworICAgIH0KKyAgICBpZiAoYikgeworICAgICAgICBP
U1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUg
MTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDMwNjM3Yzg1YmY5NDIx
YWU5Yzk3ZTBkZDdmNmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRp
b24tc2luay5qcwpAQCAtMCwwICsxLDM4IEBACit2YXIgbiA9IDEwMDAwMDAwOworCit2YXIgbmV3
Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBiYXIoZikg
eworICAgIGlmICh0aGlzID09IG5ld0NvbnRleHQpCisgICAgICAgIHRocm93ICdXcm9uZyBjb250
ZXh0IG9mIG5lc3RpbmcgZnVuY3Rpb24nOworICAgIGYoMTApOworfQorCitmdW5jdGlvbiBmb28o
YikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAg
cmVzdWx0ID0geDsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRl
eHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0
LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uJzsK
KyAgICB9OworCisgICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChy
ZXN1bHQgIT0gMTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5s
aW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykg
eworICAgIHZhciByZXN1bHQgPSBmb28uY2FsbChuZXdDb250ZXh0LCAhKGkgJSAxMDApKTsKKyAg
ICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OWUw
MjcxMzljMTY2N2UxMDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBu
ZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGNhbGwo
bykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQg
YnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5r
IChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBm
dW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRo
aXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBv
ZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisgICAgfTsKKyAgICBpZiAocCkgeworICAgICAgICBjYWxs
KGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAgICAg
ICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAg
cmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRy
dWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhw
ZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9p
bnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRM
CisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBP
U1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRo
cm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3ZGUyOGY2MGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM2IEBA
Cit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91
bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQK
K2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hl
Y2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3
Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dy
b25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgICAgcmV0dXJuIHg7CisgICAg
fTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVy
biB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQK
KyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0Lmlk
KQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsK
KyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4
dCwgdHJ1ZSwgZmFsc2UpOy8vIFN1YnN0aXR1dGUgdGhpcworICAgIHZhciByZXN1bHQgPSBmKDQy
KTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIg
YnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24g
c2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBm
dW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luay5j
YWxsKG5ld0NvbnRleHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCit2YXIgcmVzdWx0
ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQg
NDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3ZWEwNzYzNWE0MTMxY2QyMzExZDQ1
MDczNWY1N2MxZGQ5NTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMK
QEAgLTAsMCArMSw0NSBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0
JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhp
cyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+
IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAg
IGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAg
ICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKworICAg
ICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyBy
ZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1
bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhp
cy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9m
IGFycm93IGZ1bmN0aW9uICMyJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5s
aW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIg
ZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsvLyB1c2UgY2FsbCB0byBzdWJz
dGl0dXRlIGNvbnRleHQKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAh
PSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsK
K30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0aGUgaW1w
bGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRy
dWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAg
Ly8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBv
ciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290
ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5r
IGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rLmNhbGwobmV3Q29u
dGV4dCwgdHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0g
NDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNlMGM2NThkM2EyZjc5MjI5ZGY0
Zjg5MmNjZGExNTEzYzk0ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDE3IEBA
Cit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewor
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBl
Y3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0K
K307CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNp
bXBsZUFycm93RnVuY3Rpb24pOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRl
c3RDYXNlKE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSwgRnVuY3Rp
b24ucHJvdG90eXBlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdldFByb3RvdHlwZU9mIHZhbHVlIGZv
ciBhcnJvdyBmdW5jdGlvbiIpOworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uIGlu
c3RhbmNlb2YgRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBp
bnN0YW5jZW9mIG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2lt
cGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBO
b3QgY29ycmVjdCByZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1ldGhvZCBvZiBhcnJvdyBmdW5jdGlv
ICAgbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YTFmMGE0OWNi
MTY4NjNjNTkyMTM2MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKQEAg
LTAsMCArMSwyNCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQs
IG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNz
YWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFs
ICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9
IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVu
Y3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5h
bWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJ
dGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAg
cmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RD
YXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJv
dyBmdW5jdGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVycm9yOiBF
cnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXJ1bi0xMC0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXJ1bi0xMC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNkYjNjNzBhMWIyN2MzZGJiNTIzODA5
NTVmNTM1M2Q3Njc0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKQEAgLTAsMCArMSwyNSBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2
YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsK
KyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFs
KCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0i
ICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1
bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2Uo
cnVuKDEpLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24g
b25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1
dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAw
MC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFiMDFjYTI3ZDBiOTcyMGI1N2U4ZDYw
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5j
dGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBp
PGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRo
aXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7Cisg
ICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmou
bmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQor
ICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJF
cnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGlt
ZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQyNzFmNGEz
MTU5MTYyNWEwYmQzZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpz
CkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cg
bWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFj
dHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1
bHQgPSB0cnVlOworICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmog
PSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMu
Z2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisgICAgdmFyIG9i
aiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFt
ZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordGVzdENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5n
IGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmct
bm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQyODYyYzYyOGUzYjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1MWRlYzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lu
a2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gY2Fs
bChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBx
KSB7CisgICAgdmFyIGYgPSAoKSA9PiB7IH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChm
KTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAg
ICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJl
dHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIGlm
IChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBi
dXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNo
b3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVu
Y3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1
ZSwgdHJ1ZSk7CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLngg
dG8gYmUgMyBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3Jl
eGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAxNDBmYTE0OTk3M2UxN2FhYThkOTEw
NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0
aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAo
cSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGlu
ZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYg
PSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJl
c3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJv
cGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2
YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjog
ZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3ZWZjNjE4NmJlMDU3YzNjYmIyNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2lu
ayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB4OworICAgIGlmIChwKSB7IGlmIChxKSBnLmlu
bmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geDsKK30KK25vSW5saW5lKHNp
bmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNp
bmsodHJ1ZSwgdHJ1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQg
IT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7
Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQg
ZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0
IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJlc3Vs
dCA9IGYoMTIpOworaWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0
ZXIgYXMgaXQgc2hvdWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAg
ICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hl
Y2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBh
c3NpZ25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5l
cjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUg
NDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0OTIzOTcx
OTgzZGNkYTM0YzI2OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCww
ICsxLDI3IEBACit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMg
QSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nl
c3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1
cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2
YXIgZXhjZXB0aW9uID0gbnVsbDsKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRy
eSB7CisgICAgICAgbmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4Y2VwdGlv
biA9IGU7CisgICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQorICAgICAg
ICAgIHRocm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOwor
ICB9CisKKyAgaWYgKCFleGNlcHRpb24pCisgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJv
d24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKKworICB2YXIgZSA9IG5l
dyBCKGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2VjMGRkZDU1
MTRmYWY0ZDBkMDNjOWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0w
LDAgKzEsMjcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2Fn
ZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCAr
ICInIjsKKyAgfQorfTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7
YSArIDF9OworCitub0lubGluZShhZjEpOworbm9JbmxpbmUoYWYyKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjEsICJmdW5jdGlvbiIs
ICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAg
dGVzdENhc2UodHlwZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCisvL0ZpeG1lOiBTb21lIGJ1ZyBpbiBpbmxp
bmluZyB0eXBlb2Ygd2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFtZXRlcnMgZnRsLW5vLWNqaXQtbm8t
aW5saW5lLXZhbGlkYXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1ZSAtLWVuYWJsZUZ1bmN0aW9uRG90
QXJndW1lbnRzXD10cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXRocmVzaG9sZEZv
ckpJVEFmdGVyV2FybVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBoPXRydWUgLS1tYXhpbXVtSW5saW5p
bmdEZXB0aD0xCisvLworLy8gZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSAgeworLy8g
ICBpZiAodHlwZW9mIChmdW5jdGlvbiAoKSB7fSkgIT09ICdmdW5jdGlvbicpCisvLyAgICAgICB0
aHJvdyAnV3JvbmcgdHlwZSc7CisvLyB9CisvLyAgdGVzdENhc2UodHlwZW9mICgpPT57fSwgImZ1
bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAj
My0iICsgaSk7CisKKy8vICB0ZXN0Q2FzZSh0eXBlb2YgKChiKSA9PiB7YiArIDF9KSwgImZ1bmN0
aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUzNDU3Y2FhNjRkMWU2YjdhMDIuLmYx
ZDFiOGYxNTAwYWRjY2U4YjczYzY4ODVjODA1ODgzYzk2NzA1MTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NiBAQAorMjAxNS0wOC0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNv
bT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheC4g
QXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCBvZiB0aGlzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93
ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tYmluZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLXRoaXMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi10ZHouanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLXR5cGVvZi5qczogQWRkZWQuCisKIDIwMTUtMDgtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2UgZmxha2lu
ZXNzIG9mIGluc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
YjMyNmNjYmI0ZTE0YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2YwMTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92
ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBkLnkoKS5iaW5kKGUsICdsZXknKSgpIGlzICdiYXJsZXknCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLWJpbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlhY2IyYmM4ZmQ1MDRjNjhmMDQ0NWE2
ZWFjNGE2YTE0NTRhYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1iaW5kLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNmNDVlMTZiOTk2NTcyZDFhZmRlZWRk
NTkxMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
YWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1
bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBw
bHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCkuY2FsbChlKSBp
cyAnZm9vJworUEFTUyBkLnkoKS5hcHBseShlKSBpcyAnZm9vJworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2YTg3NDllYzViN2U3ODNjNmE5ZWMz
MTMyZDJkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjcwNmZmZjE3YzIxMjM4NTM2NDBiYjJhNGVi
MTdkNjNlMWEzNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdu
ZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5Y2RkNGQ4YmRmYTYyNDFjYjZiZWZi
ZjA0Y2M5NTgzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWNvbnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYjY2ZmMyODhjYWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBs
ZXhpY2FsIGJpbmQgb2YgdGhpcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBkLmdldE5hbWUoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lSGFyZCgpIGlzIGQubmFtZQor
UEFTUyBkLmdldE5hbWVOZXN0aW5nKCkoKSgpIGlzIGQubmFtZQorUEFTUyBvYmoubWV0aG9kKCko
J2NvcnJlY3QnKSBpcyAnb2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIG9iai5tZXRob2QoKSgn
Y29ycmVjdCcpIGlzICduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRl
cm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdpbnRlcm5hbE9iamVjdC1uYW1lLWNv
cnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBp
cyAnbmV3SW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBpbnN0YW5jZS5mdW5jKCkg
PT09IGluc3RhbmNlIGlzIHRydWUKK1BBU1Mgb3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJP
YmogaXMgdHJ1ZQorUEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1Mg
cmVhbC5ib3Jyb3coKSgpID09PSByZWFsIGlzIHRydWUKK1BBU1MgYXJyb3dGdW5jdGlvbignLXRo
aXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1MgaG9zdE9iai5mdW5jKCctdGhpcycpIGlzICJyaWdo
dC10aGlzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MWVhMjJhNzZmZGY4YmZmNWU3MmU1MWI3Nzk0YjNlMzQ3ZDE2
NDJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTE1MmU1ZTM3YzY5MTVm
MzgyM2UyOWIyMGE5NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9y
cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYmplY3QuZ2V0UHJvdG90
eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rpb24ucHJvdG90eXBlCitQQVNTIHNp
bXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVlCitQQVNTIHNpbXBs
ZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNjdmOGIwMGU0NjA1NWVlNmZh
ZTVjMWU4Mjg5ZWZlZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXRkei1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZjZDg2MDBlODg0MTI3N2M0OTRhOTg5
MDIyNDUyZWE2YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tdGR6LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFy
cm93IGZ1bmN0aW9uIHRlc3QgdGR6CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tdGR6Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2QzZmM0OGU1YzUzZmMxMTkyNmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjJmYjJjZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUwY2E1MzQ5YzFiYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVl
CitQQVNTIHR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKCgp
PT57fSkgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKChiKSA9PiB7YiArIDF9
KT09PSdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2NWUzNzNmZWRiNzQzODBlMDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2MWRlM2JhYjUyMDljNzJkZGNmNTAy
MTAwMzQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dm
dW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNh
bGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2MWNiZWIwYjllZTEzM2ZlODczMTEy
YmZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0
aW9uLWNhbGwuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjRjODQyNzZl
NzEwODc3ODZjNTk0MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAs
MCArMSwxNSBAQAordmFyIGFmID0gKGEsIGIpID0+IGEgKyBiOworCitub0lubGluZShhZik7CisK
K2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGFmKGEsIGIpOworfQorCitub0lubGlu
ZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciBy
ZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTcz
YzNiNWUwY2E3OTE3OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpAQCAt
MCwwICsxLDE1IEBACit2YXIgZmUgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7fQor
Citub0lubGluZShmZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZlKGEs
IGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAz
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpz
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNTNmMDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0ZTk5NzljMDJhYzJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmlu
ZC5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBm
dW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kJyk7
CisKK3ZhciBkID0geworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHog
PT4gdGhpcy54ICsgejsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitzaG91bGRC
ZSgiZC55KCkuYmluZChlLCAnbGV5JykoKSIsICInYmFybGV5JyIpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4ZjkxMWJmMWM0NGQzODlkMGEzZDIx
ODQ2ODM0ODRiNmY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2NyaXB0aW9u
KCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRl
biBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHknKTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwK
KyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9OworCit2YXIgZSA9
IHsgeCA6ICJiYXIiIH07CisKK3Nob3VsZEJlKCdkLnkoKS5jYWxsKGUpJywgIidmb28nIik7Citz
aG91bGRCZSgnZC55KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmFkMDc2ODQ3YmZmNDky
OWY3ODA3NzY1Zjk5MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDcg
QEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVj
dG9yJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZFRo
cm93KCduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTU2YTE1
NTMwZjM0Y2MzMDhhY2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMu
anMKQEAgLTAsMCArMSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVu
Y3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRoaXMnKTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAg
dGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1l
Iik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgp
Iik7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7
Cit9CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CitzaG91bGRCZSgnZC5nZXROYW1lKCknLCAn
ZC5uYW1lJyk7CitzaG91bGRCZSgnZC5nZXROYW1lSGFyZCgpJywgJ2QubmFtZScpOworc2hvdWxk
QmUoJ2QuZ2V0TmFtZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1lJyk7CisKK3ZhciBvYmogPSB7Cisg
IG5hbWUgICA6ICdvYmpDb2RlJywKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7CisgIH0KK307CisKK3No
b3VsZEJlKCJvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInb2JqQ29kZS1uYW1lLWNvcnJlY3Qn
Iik7CitvYmoubmFtZT0nbmV3T2JqQ29kZSc7CitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3Jy
ZWN0JykiLCAiJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworCit2YXIgZGVlcE9iaiA9IHsK
KyAgbmFtZSA6ICd3cm9uZ09iakNvZGUnLAorICBpbnRlcm5hbE9iamVjdDogeworICAgIG5hbWUg
IDonaW50ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZh
bHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9CisgIH0KK307CitzaG91bGRC
ZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidpbnRlcm5h
bE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK2RlZXBPYmouaW50ZXJuYWxPYmplY3QubmFtZSA9
ICduZXdJbnRlcm5hbE9iamVjdCc7CisKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0
Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCci
KTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVu
YyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1
Y3RvcigpOworCitzaG91bGRCZSgiaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSIsICJ0cnVl
Iik7CisKK3ZhciBvd25lck9iaiA9IHsKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiAoKSA9PiB0aGlzOworICB9Cit9OworCitzaG91bGRCZSgib3duZXJPYmoubWV0aG9kKCko
KSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgZmFrZSA9IHsgc3RlYWwgOiBvd25lck9i
ai5tZXRob2QoKSB9Oworc2hvdWxkQmUoImZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmoiLCAidHJ1
ZSIpOworCit2YXIgcmVhbCA9IHsgYm9ycm93IDogb3duZXJPYmoubWV0aG9kIH07CitzaG91bGRC
ZSgicmVhbC5ib3Jyb3coKSgpID09PSByZWFsIiwgInRydWUiKTsKKwordmFyIGFycm93RnVuY3Rp
b24gPSB7IHggOiAicmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9uIDogZnVuY3Rpb24oKSB7IHJldHVy
biB6ID0+IHRoaXMueCArIHo7IH19LmdldEFycm93RnVuY3Rpb24oKTsKK3ZhciBob3N0T2JqID0g
eyB4IDogIndyb25nIiwgZnVuYyA6IGFycm93RnVuY3Rpb24gfTsKKworc2hvdWxkQmUoImFycm93
RnVuY3Rpb24oJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CitzaG91bGRCZSgiaG9zdE9iai5m
dW5jKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLW90aGVycy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzk5MzFjM2RlYmNiNTAyN2FkMTRmZDE1NDdlNWFi
YTAzOGI0YjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIEluc3BpcmVkIGJ5
IG1vemlsbGEgdGVzdHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
IGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsKKwordmFyIHNpbXBsZUFycm93RnVu
Y3Rpb24gPSAoKSA9PiB7fTsKKworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1w
bGVBcnJvd0Z1bmN0aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJzaW1w
bGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24iLCAidHJ1ZSIpOworc2hvdWxkQmUo
InNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24iLCAidHJ1ZSIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY1OGZjNjUxM2Vk
YWJkZTFkZDY1MDc0OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEsMjYgQEAK
K2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6Jyk7CisK
K3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29u
c3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZv
cmVTdXBlcikgeworICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICB9CisgIH0KK307CisKK3ZhciBpc1JlZmVy
ZW5jZUVycm9yID0gZmFsc2U7Cit0cnkgeworICAgICBuZXcgQih0cnVlKTsKK30gY2F0Y2ggKGUp
IHsKKyAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOwor
fQorCitzaG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7CisKK3ZhciBlID0gbmV3
IEIoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MmFhMjY5MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9m
LmpzCkBAIC0wLDAgKzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkg
PT4ge2EgKyAxfTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbiciLCAidHJ1
ZSIpOworCitzaG91bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyIsICJ0cnVlIik7CisK
K3Nob3VsZEJlKCJ0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitz
aG91bGRCZSgidHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIiwgInRydWUiKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259146</attachid>
            <date>2015-08-17 07:23:24 -0700</date>
            <delta_ts>2015-08-17 07:51:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817172318.patch</filename>
            <type>text/plain</type>
            <size>180111</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uYzRmN2M4MjgyYzI0Yjk1YjQ5ZjlmMmI5ODk5NDUz
NmYxZjhiOTY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZVcoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisjZWxzZQorICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJn
Mik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVdzIG9wZXJhdGlvbiwgV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludFNldCkKICAgICB7CkBAIC0xNjE3LDYgKzE2MjcsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbVB0cihjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNj
Q0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwg
YXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKQEAgLTIxODgs
NiArMjIwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJn
dW1lbnRzKE5vZGUqKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRTY29wZShOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVTa2lwU2NvcGUoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgo
Tm9kZSopOwpAQCAtMjIyMSw2ICsyMjM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVB1
dEJ5VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2Rl
KiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVk
QXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlw
ZWRBcnJheVR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29t
cGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgU3RydWN0dXJlKiwgR1BSUmVnLCBHUFJSZWcs
IEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lkIGNvbXBp
bGVOZXdGdW5jdGlvbihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRm9yd2FyZFZhcmFyZ3MoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oTm9kZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5k
ZXggODAwYjg3MmRmOWRiMGI2ZjgxZWI0YzIwMzcxNzRiYzk0NmFkODM4My4uNzUxMjA5Njc5YWMy
OWQ5MDY1ZDBiMDAxYWM3YTI5YWQ5ODdiOTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNjg2LDcgKzM2ODYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0U2NvcGU6CiAgICAgICAgIGNvbXBpbGVHZXRTY29wZShub2RlKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIAorCisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGNv
bXBpbGVMb2FkQXJyb3dGdW5jdGlvblRoaXMobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgIGNvbXBpbGVTa2lwU2NvcGUobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDMzMSwxMSArNDMzNSwxMiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDcmVhdGVDbG9uZWRB
cmd1bWVudHMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisKICAgICBj
YXNlIE5ld0Z1bmN0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY29t
cGlsZU5ld0Z1bmN0aW9uKG5vZGUpOwogICAgICAgICBicmVhazsKLSAgICAgICAgCisKICAgICBj
YXNlIEluOgogICAgICAgICBjb21waWxlSW4obm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXgg
NTNkYWYzNGNhNTA4NWJhMDQyOTk5ODE5NTY2YWM4MDEyZTE5NmJhNS4uYWZmNzMxNDA3ZjcyYWU2
ZTQxZjZkNjlhNGJhZWJiNzRmN2UwOGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNzI5LDcgKzM3MjksMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0U2NvcGU6
CiAgICAgICAgIGNvbXBpbGVHZXRTY29wZShub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IAorICAgICAgICAgICAgCisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAg
IGNvbXBpbGVMb2FkQXJyb3dGdW5jdGlvblRoaXMobm9kZSk7CisgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgCiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgIGNvbXBpbGVTa2lwU2NvcGUo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDMzNiwxMSArNDM0MCwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDcmVhdGVDbG9u
ZWRBcmd1bWVudHMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisKICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAg
Y29tcGlsZU5ld0Z1bmN0aW9uKG5vZGUpOwogICAgICAgICBicmVhazsKLSAgICAgICAgCisKICAg
ICBjYXNlIEluOgogICAgICAgICBjb21waWxlSW4obm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllcklu
c2VydGlvblBoYXNlLmNwcAppbmRleCA2NmFjZGEyOWI2NGY4MzgxYTA2OTc1YjkyYjgzMjBjYTg2
OTk4YTNiLi5kMjBjNWRkZmM2NTk4MjA0M2RhNjEyMGJkMTllNTZhM2U2NzQzZTQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllcklu
c2VydGlvblBoYXNlLmNwcApAQCAtMzAwLDYgKzMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlU2Nv
cGVkQXJndW1lbnRzOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Cisg
ICAgICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgogICAgICAgICAgICAgICAgIC8vIE5vZGVzIHRoYXQgYWxsb2NhdGUgZ2V0IHRvIHNl
dCB0aGVpciBlcG9jaCBiZWNhdXNlIGZvciB0aG9zZSBub2RlcyB3ZSBrbm93CiAgICAgICAgICAg
ICAgICAgLy8gdGhhdCB0aGV5IHdpbGwgYmUgdGhlIG5ld2VzdCBvYmplY3QgaW4gdGhlIGhlYXAu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IGFjOTI3M2NkYjZkNDgyYjZjYTVkY2JkNGNhNmJk
NjFkNTAzZjBjMGYuLjc5MTkwMjUyYmQ3YjhkYzViZjZlMGEwZDAyNjU0MWY5NjJkYTA3NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xMzUsNyArMTM1LDkgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0
cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5y
ZWdFeHBTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CisgICAg
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246
CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4IGU0MTZmZGFhZmVlMjIy
OWY2NTNiOWFlMDYyNDgwMDA5OTk4NzVhMDAuLjNjMzg2NGNhMTgwYWEzNmU0ODA4YzIzYTEzMDZi
ZTI4ZTVkN2I5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVk
ZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgog
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU2NvcGUu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKaW5kZXggNTgxZjRjYmQ5YTc2OGI5YWIyYTgzOTIxY2YyNGQzNTI0YmM4NTcx
OC4uNzEyZmQ4ZGEyMjFkZGQ0ODM4MmQ5MmRiNDBhMGUyNjFhMTdmMjg3OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgK
QEAgLTg4LDcgKzg4LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBt
YWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNl
dCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5
cGVPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJl
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBT
eW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkKKyAgICBtYWNybyhTeW1ib2xfcHJpdmF0ZU5h
bWUsIFN5bWJvbDo6b2Zmc2V0T2ZQcml2YXRlTmFtZSgpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1
bmN0aW9uX2V4ZWN1dGFibGUsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
IFwKKyAgICBtYWNybyhKU0Fycm93RnVuY3Rpb25fc2NvcGUsIEpTQXJyb3dGdW5jdGlvbjo6b2Zm
c2V0T2ZTY29wZUNoYWluKCkpIFwKKyAgICBtYWNybyhKU0Fycm93RnVuY3Rpb25fcmFyZURhdGEs
IEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSBcCisgICAgbWFjcm8oSlNBcnJv
d0Z1bmN0aW9uX3RoaXMsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSkKIAog
I2RlZmluZSBGT1JfRUFDSF9JTkRFWEVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNy
byhEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0
KCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBlMmIxZjQxOTdmZjhlODM0ZGRmNDkwYWUyZDUw
OTIxYjllMmZlYjQyLi43NzM3NDIxY2UwNmFkZjUxZThhODBlOGQxM2YzY2E2MmU5YTVhZmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
MDUsNiArMTA1LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBMb29wSGludDoKICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNlIENy
ZWF0ZUFjdGl2YXRpb246CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3
RnVuY3Rpb246CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTE0MSw2ICsxNDIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgR2V0RXhlY3V0
YWJsZToKICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlz
OgogICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudDoKICAgICBj
YXNlIFRvU3RyaW5nOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJ
bnRyaW5zaWNSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJp
bnNpY1JlcG9zaXRvcnkuaAppbmRleCA5YjM0NDE0MTdlMTYxNjZkMGVjMWZkM2Y2Y2U5NmY3OTQ1
ZjIyOGI0Li4xMjVlNGZlY2EzNmM1OGUyMTYyNTZhN2M1OWIyODQ0ZWM4NWYwOGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaApA
QCAtODYsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFj
cm8oSl9KSVRPcGVyYXRpb25fRUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50NjQs
IGludFB0cikpIFwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSkosIGZ1bmN0aW9uVHlwZShp
bnQ2NCwgaW50UHRyLCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25f
RUpzY0MsIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50UHRyLCBpbnRQdHIpKSBcCisg
ICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpzY0NKLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0
ciwgaW50NjQsIGludDY0LCBpbnQ2NCkpXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc3Na
LCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50UHRyLCBpbnQzMikpIFwKICAgICBtYWNy
byhKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGZ1bmN0aW9uVHlwZShpbnQ2NCwgaW50UHRyLCBpbnRQ
dHIsIGludDY0LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSnNzX0pJVE9wZXJhdGlvbl9FWiwgZnVu
Y3Rpb25UeXBlKGludFB0ciwgaW50UHRyLCBpbnQzMikpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggYzYxYTc1MWZjMzQ4MDEzNGNk
YTFmNzg0ZDQwNjAwMjcwZWZlODM0YS4uZTEzZDBhNjczOTUyN2RkOWMzMTA2ODBjMGI5MDg3NDRj
N2Q2MjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJGVExPdXRwdXQuaCIKICNpbmNs
dWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGVExXZWlnaHRlZFRhcmdldC5oIgorI2luY2x1
ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgpA
QCAtNTkzLDYgKzU5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlQ3JlYXRlQWN0
aXZhdGlvbigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246
CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgICAgIGNvbXBpbGVOZXdG
dW5jdGlvbigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0
QXJndW1lbnRzOgpAQCAtNjc4LDYgKzY4MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0
U2NvcGU6CiAgICAgICAgICAgICBjb21waWxlR2V0U2NvcGUoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKKyAgICAgICAgICAgIGNvbXBp
bGVMb2FkQXJyb3dGdW5jdGlvblRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFNraXBTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVTa2lwU2NvcGUoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzA5MywzOCArMzA5OCw1NSBAQCBwcml2YXRlOgogICAgIAogICAgIHZv
aWQgY29tcGlsZU5ld0Z1bmN0aW9uKCkKICAgICB7CisgICAgICAgIEFTU0VSVChtX25vZGUtPm9w
KCkgPT0gTmV3RnVuY3Rpb24gfHwgbV9ub2RlLT5vcCgpID09IE5ld0Fycm93RnVuY3Rpb24pOwor
ICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtX25vZGUtPm9wKCkgPT0g
TmV3QXJyb3dGdW5jdGlvbjsKKyAgICAgICAgCiAgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUgPSBpc0Fycm93
RnVuY3Rpb24gPyBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpIDogbnVsbHB0cjsKKyAgICAgICAg
CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fbm9kZS0+Y2FzdE9w
ZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKTsKICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPnNp
bmdsZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAgICAgICAgICBMVmFsdWUg
Y2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uTmV3RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1
dGFibGUpKTsKKyAgICAgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gaXNBcnJvd0Z1bmN0aW9u
CisgICAgICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fy
cm93RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUp
LCB0aGlzVmFsdWUpCisgICAgICAgICAgICAgICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpc0Fy
cm93RnVuY3Rpb24KKyAgICAgICAgICAgID8gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkKKyAgICAgICAgICAg
IDogbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5j
dGlvblN0cnVjdHVyZSgpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGgg
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5ld0Z1bmN0aW9uIHNsb3cgcGF0aCIpKTsKICAgICAg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdG
dW5jdGlvbiBjb250aW51YXRpb24iKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAg
IAotICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+
KAotICAgICAgICAgICAgc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93UGF0aCk7Cisg
ICAgICAgIExWYWx1ZSBmYXN0T2JqZWN0ID0gaXNBcnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/
IGFsbG9jYXRlT2JqZWN0PEpTQXJyb3dGdW5jdGlvbj4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJa
ZXJvLCBzbG93UGF0aCkKKyAgICAgICAgICAgIDogYWxsb2NhdGVPYmplY3Q8SlNGdW5jdGlvbj4o
c3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93UGF0aCk7CisgICAgICAgIAogICAgICAg
ICAKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBtZW1vcnkgYmFycmllcnMgc2luY2Ugd2UganVz
dCBmYXN0LWNyZWF0ZWQgdGhlIGZ1bmN0aW9uLCBzbyBpdAogICAgICAgICAvLyBtdXN0IGJlIHlv
dW5nLgotICAgICAgICBtX291dC5zdG9yZVB0cihzY29wZSwgZmFzdE9iamVjdCwgbV9oZWFwcy5K
U0Z1bmN0aW9uX3Njb3BlKTsKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSksIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKTsKLSAg
ICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgZmFzdE9iamVjdCwgbV9oZWFw
cy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZh
c3RPYmplY3QsIGlzQXJyb3dGdW5jdGlvbiA/IG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3Njb3Bl
IDogbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vh
a1BvaW50ZXIoZXhlY3V0YWJsZSksIGZhc3RPYmplY3QsIGlzQXJyb3dGdW5jdGlvbiA/ICBtX2hl
YXBzLkpTQXJyb3dGdW5jdGlvbl9leGVjdXRhYmxlIDogbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1
dGFibGUpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAg
ICAgIG1fb3V0LnN0b3JlUHRyKHRoaXNWYWx1ZSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU0Fycm93
RnVuY3Rpb25fdGhpcyk7CisgICAgICAgIAorICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5p
bnRQdHJaZXJvLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9oZWFwcy5KU0Fycm93
RnVuY3Rpb25fcmFyZURhdGEgOiBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOwogICAgICAg
ICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0
T2JqZWN0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIExW
YWx1ZSBjYWxsUmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCks
Ci0gICAgICAgICAgICBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUp
KTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gaXNBcnJvd0Z1bmN0aW9u
CisgICAgICAgICAgICA/IHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dG
dW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpLCBtX2NhbGxGcmFt
ZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCB0aGlzVmFsdWUpCisgICAgICAgICAg
ICA6IHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9p
bnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgIAogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNhbGxSZXN1bHQpOwogICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CiAgICAgICAgIApAQCAtNDA1Niw2ICs0MDc4LDExIEBAIHByaXZhdGU6CiAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LCBtX2hlYXBzLkpTRnVuY3Rpb25fc2NvcGUpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCkKKyAgICB7CisgICAgICAgIHNldEpTVmFsdWUobV9v
dXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyb3dGdW5j
dGlvbl90aGlzKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgY29tcGlsZVNraXBTY29wZSgpCiAg
ICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU1Njb3BlX25leHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmluZGV4IDhjZGJjNWQxMDE2ZWM1YmE1NzJjNTE0ZGY2MWY5
MTA2YzNkZmZhZDkuLmE4YmQ1N2ZiYWU4OWYyZTAzMWYxZDc4NmE2MjAwMTJkNjkxOTYwMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtMTU5LDE2
ICsxNTksMjUgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0
ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRoZSBleGVj
dXRhYmxlIGFuZCBhY3RpdmF0aW9uIGFyZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICBKU1Njb3BlKiBhY3RpdmF0aW9uID0gbnVsbHB0
cjsKKyAgICAgICAgSlNWYWx1ZSBib3VuZFRoaXM7CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uID0gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+
cHJvcGVydGllcygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgY29uc3QgRXhpdFByb3Bl
cnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07CiAg
ICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihGdW5jdGlvbkV4ZWN1dGFibGVQTG9jKSkKICAgICAgICAgICAgICAgICBleGVjdXRh
YmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNb
aV0pKTsKICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpID09IFByb21vdGVkTG9j
YXRpb25EZXNjcmlwdG9yKEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MpKQogICAgICAgICAgICAgICAg
IGFjdGl2YXRpb24gPSBqc0Nhc3Q8SlNTY29wZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0p
KTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpID09IFByb21vdGVkTG9jYXRp
b25EZXNjcmlwdG9yKEFycm93RnVuY3Rpb25Cb3VuZFRoaXNQTG9jKSkgeworICAgICAgICAgICAg
ICAgIGlzQXJyb3dGdW5jdGlvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgYm91bmRUaGlzID0g
SlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZXhlY3V0YWJsZSAmJiBhY3RpdmF0aW9uKTsKIAotICAgICAg
ICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIEpTRnVuY3Rpb24qIHJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAg
ICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24sIGJvdW5kVGhpcykKKyAgICAg
ICAgICAgIDogSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CiAKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAppbmRleCAwZDUwODAzNzJhZjJlYjA3YmQ2YzkxMDBiNDA0ZmYxZWQ1ZTE5
ZjgzLi4wYTgwMmJkMzlkZjkyMDNkMjNjZDQ0ZmIyNGNmN2U0NmM4MDJiOWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBhZDlkZjZmYzcxZDhk
ZDkwMDVjMWEzYzEyZWVjMDQyYjM4MTk4NDQ4Li4xODdkYWJlNTMzNjJlNzk4NWI0YmUwNGM3ZWY1
NWIxMjJkMWM5ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBJbnRlcnByZXRlcl9oCiAK
ICNpbmNsdWRlICJBcmdMaXN0LmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCkBAIC01MCw2ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEV4ZWN1
dGFibGVCYXNlOwogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBWTTsK
KyAgICBjbGFzcyBKU0Fycm93RnVuY3Rpb247CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA1ZmE2YjUzNjJkZTk4
N2MzMDNiMGZhMDE2NTI2MGQwMWExNmIwZmY4Li4zMGJhYWE1ODhiNDE4YjdkYzYzMzU1ODNhOTJm
YzNmMzEwOGVmMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
QEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgICAgICBmdW5jdG9yKEdQUkluZm86Om5vbkFy
Z0dQUjApOwogICAgICAgICBwb2tlKEdQUkluZm86Om5vbkFyZ0dQUjAsIFBPS0VfQVJHVU1FTlRf
T0ZGU0VUICsgYXJndW1lbnRJbmRleCAtIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnMpOwogICAgIH0KLQogICAgIC8vIFRoZXNlIG1ldGhvZHMgdXNlZCB0byBzb3J0IGFyZ3VtZW50
cyBpbnRvIHRoZSBjb3JyZWN0IHJlZ2lzdGVycy4KICAgICAvLyBPbiBYODYgd2UgdXNlIGNkZWNs
IGNhbGxpbmcgY29udmVudGlvbnMsIHdoaWNoIHBhc3MgYWxsIGFyZ3VtZW50cyBvbiB0aGUKICAg
ICAvLyBzdGFjay4gT24gb3RoZXIgYXJjaGl0ZWN0dXJlcyB3ZSBtYXkgbmVlZCB0byBzb3J0IHZh
bHVlcyBpbnRvIHRoZQpAQCAtMjA5LDYgKzIwOCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlVyhHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQor
ICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKyAgICAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKICAgICB7CiAgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOwpAQCAtOTU1LDYgKzk2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgc2V0dXBTdHViQXJndW1l
bnRzKGFyZzEsIGFyZzIpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KKyAgICAKICNlbGlmIENQVShBUk0pCiAj
aWYgQ1BVKEFSTV9IQVJERlApCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
KEZQUlJlZyBhcmcxKQpAQCAtOTk4LDcgKzEwMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUo
YXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0KKyAgICAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAgICB7CiAgICAg
ICAgIG1vdmVEb3VibGUoYXJnNCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAgLTEwMDcsNiAr
MTAxNSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNlbHNlCisKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBhc3NlbWJsZXIo
KS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcx
KTsKQEAgLTExMjgsNyArMTEzNyw3IEBAIHB1YmxpYzoKICNlbHNlCiAjZXJyb3IgIkpJVCBub3Qg
c3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCi0KKyAgICAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkBAIC0xMjI3LDYgKzEyMzYsMTMgQEAg
cHVibGljOgogICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGVXKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCisgICAgeworICAg
ICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJn
MiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CiAjaWYgQ1BVKFg4Nl82
NCkgfHwgQ1BVKEFSTTY0KQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW02NCBhcmcyKQogICAgIHsKQEAgLTE0
NzAsNyArMTQ4Niw2IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJs
ZSBmb3IgYW55IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHByb3ZpZGVzIGZvcgogICAgIC8vIGV4
YWN0bHkgNCBhcmd1bWVudCByZWdpc3RlcnMsIGUuZy4gQVJNdjcuCiAjaWYgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA9PSA0Ci0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09G
RlNFVCk7CkBAIC0xNTM1LDYgKzE1NTAsMTMgQEAgcHVibGljOgogICAgIH0KIAogI2lmIENQVShY
ODZfNjQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZVcoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgewor
ICAgICAgICBzZXR1cFR3b1N0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BS
UmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMywgVHJ1c3RlZEltbTY0IGFyZzQpCiAgICAgewog
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKQEAgLTE4OTgsNiArMTky
MCwxMyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9
PSA0CiAKICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDUKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlVyhHUFJSZWcgYXJnMSwgVHJ1
c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1
YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFy
ZzEsIGFyZzMpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Cisg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzMTM0KEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBzZXR1cFRo
cmVlU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjMsIEdQUkluZm86OmFyZ3VtZW50R1BSND4oYXJnMSwgYXJnMywgYXJnNCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggMDM4ZjVkN2RiYzA2YWY4MTBmNzFhN2Q0MjQwZDdmZjJlYmE0
MGViNC4uYmJjODUyM2Y1YmIyM2EzOTMwYzA5NGVkNDg2MjE3NDY0ZDg2YzU1MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE5LDYgKzIxOSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2VuZCkKICAgICAgICAgREVG
SU5FX09QKG9wX2VudGVyKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Njb3BlKQorICAgICAg
ICBERUZJTkVfT1Aob3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMpCiAgICAgICAgIERFRklORV9P
UChvcF9lcSkKICAgICAgICAgREVGSU5FX09QKG9wX2VxX251bGwpCiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX291dF9vZl9saW5lOgpAQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJheV9idWZm
ZXIpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuYykKICAgICAgICAgREVGSU5FX09QKG9w
X25ld19mdW5jX2V4cCkKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJvd19mdW5jX2V4cCkg
CiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X3JlZ2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25vdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IDg0MTFhN2VmNjVhOWM2YmRjYzE2YjM2NGViMjhlNDEwMTZiNTg1ODYuLjc3MWZk
OWI0MDY1YmRkMTcyMmMwZTcyYjg4NzIwOGVjNjJmMWU0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtNDk4LDYgKzQ5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3BfZW5kKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXEoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9ieV9pZChJbnN0cnVjdGlvbiopOwpAQCAtNTM5LDYgKzU0MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZlcihJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVn
ZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoSW5zdHJ1Y3Rpb24q
KTsKQEAgLTY1Myw2ICs2NTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
UmlnaHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQg
ZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5ld0Z1
bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFZhckluamVjdGlv
bkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOwogICAgICAgICB2b2lkIGVtaXRS
ZXNvbHZlQ2xvc3VyZShpbnQgZHN0LCBpbnQgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25D
aGVja3MsIHVuc2lnbmVkIGRlcHRoKTsKICAgICAgICAgdm9pZCBlbWl0TG9hZFdpdGhTdHJ1Y3R1
cmVDaGVjayhpbnQgc2NvcGUsIFN0cnVjdHVyZSoqIHN0cnVjdHVyZVNsb3QpOwpAQCAtNzIzLDYg
KzcyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkJ5LCBpbnQsIEdQUlJlZywgR1BSUmVnLCBC
eVZhbEluZm8qKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FSnNjLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDLCBpbnQsIEdQUlJlZywgSlNDZWxs
Kik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpzY0NKLCBpbnQsIEdQUlJlZywgSlNDZWxsKiwgR1BSUmVnKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiwgR1BS
UmVnLCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihDX0pJVE9wZXJhdGlvbl9FSnNjWiwgaW50LCBHUFJSZWcsIGludDMyX3QpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDVkNjg2
OTAwODFjOTk2ZDdlMzNiZjNiZDI1ZGNjNThiMDMwZjdkNmMuLmZiYWIyY2MwZjM5NzI0OTU2YmY1
ODQ5MWIzZGU3ODNhNmZjZGMyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCkBAIC0yNzEsNiArMjcxLDEyIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhCiAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlv
biwgZHN0KTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgaW50IGRzdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCit7CisgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOworICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRp
b24sIGRzdCk7Cit9CisgICAgCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIGludCBkc3QsIHZv
aWQqIHBvaW50ZXIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIocG9pbnRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
aW5kZXggNTk4ZDRlYzk5YzFkMThlNmMzOTYyMTE5NzIwYWNlYWMxZWUyZmE2ZC4uYzgzYmNjOGM0
NWRlNjY2ZjczYzllOTExZjUxNDI5ZjM1ZWIxMTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgog
I2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAi
SlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpAQCAtNjczLDYg
KzY3NCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9m
ZnNldE9mU2NvcGVDaGFpbigpKSwgcmVnVDApOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdU
MCk7CiB9CisgICAgCit2b2lkIEpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSwgcmVnVDApOworICAgIGVtaXRT
dG9yZUNlbGwoZHN0LCByZWdUMCk7Cit9CiAKIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTk2MiwyNiArOTcxLDQ1IEBAIHZv
aWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKIHZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogeworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rp
b24pOworfQorICAgIAordm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwor
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gb3Bjb2RlSUQgPT0gb3BfbmV3X2Fycm93X2Z1bmNf
ZXhwOworICAgIAogICAgIEp1bXAgbm90VW5kZWZpbmVkU2NvcGU7CiAgICAgaW50IGRzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJl
Z1QwKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAgICBub3RV
bmRlZmluZWRTY29wZSA9IGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOwogICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0
KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIHNpemVvZihSZWdpc3RlcikgKiBkc3QpKTsKICNlbHNlCiAgICAgZW1pdExvYWRQYXlsb2Fk
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBpZiAoaXNBcnJv
d0Z1bmN0aW9uKQorICAgICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzRd
LnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJhbmNoMzIoTm90
RXF1YWwsIHRhZ0ZvcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOwogICAgIGVtaXRTdG9yZShkc3QsIGpzVW5kZWZp
bmVkKCkpOwogI2VuZGlmCi0KICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgbm90VW5kZWZp
bmVkU2NvcGUubGluayh0aGlzKTsKLQotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4cHIg
PSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAs
IGZ1bmNFeHByKTsKKyAgICAgICAgCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9
IG1fY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdBcnJvd0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDEpOworICAg
IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCBy
ZWdUMCwgZnVuY3Rpb24pOwogICAgIGRvbmUubGluayh0aGlzKTsKIH0KLQorICAgIAordm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7
Cit9CisgICAgCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAppbmRleCA5MWMwMGUzZmQ0NWUwOTdlM2JiMWMzNzlkN2M5MDNmMGZkNjIwOTlhLi5iMzlhZTFk
MWEzMDY4MDM0M2U5ZmQ5YTcyMzE0MjliNmU1NDQxMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NlbGwuaCIK
ICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgpAQCAtOTIyLDYgKzkyMywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDAp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpT
U3RhY2s6OkNhbGxlZSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJv
d0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSwgcmVnVDApOworICAgIGVtaXRTdG9yZUNl
bGwoZHN0LCByZWdUMCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGNhbGxlZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAppbmRleCBiNWY5ZTM2OWE3ZTU3YmFmZjA0NmQyYTM2NWRiYzAyNGNkY2Ri
OTNiLi40ZmYwZTNkMTUwYjQyNjBlZjk0YjIxZTNjYmEwZjIzMTJmYjQzOGI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5j
bHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJK
U0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgpAQCAtOTQyLDYgKzk0MywzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0YwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVu
Y3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGJv
b2wgaXNJbnZhbGlkYXRlZCkKK3sKKyAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhl
cml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9u
RXhlY3V0YWJsZSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgICAgIAorICAgIEpTQXJyb3dGdW5jdGlv
biogYXJyb3dGdW5jdGlvbiAgPSBpc0ludmFsaWRhdGVkCisgICAgICAgID8gSlNBcnJvd0Z1bmN0
aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVj
dXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpCisgICAgICAgIDogSlNB
cnJvd0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcnJvd0Z1
bmN0aW9uKTsKK30KKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCB0
cnVlKTsKK30KKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVy
biBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCAzZDgzZjU5MGRjZjkxODAzYTM0NDhiYTA4M2IyZjkyYmNiZTg0Zjli
Li5hNjdjYWFjYjMyZmIyMTU4YTljMDVlNmE1MDk2MjFiM2I4M2U4ZTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTIyLDYgKzEyMiw3IEBAIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQUCkoRXhl
Y1N0YXRlKiwgdm9pZCosIHZvCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVj
U3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9u
X0VKc2NDSikoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKTsK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VT
UykoRXhlY1N0YXRlKiwgc2l6ZV90LCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUNJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU3NpSkkpKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBs
Kik7CkBAIC0yODgsNiArMjg5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheUJ1ZmZlcldpdGhQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmEKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUo
RXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlIHNpemUp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRsZVdhdGNoZG9nVGltZXIoRXhlY1N0YXRlKikgV1RG
X0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAyZDQ2NzdjNjY1NTdiYmNjNWU0ZDEwOWVmOWIwMTM4
ZDlhODNmMWVjLi5hMmE2YjJiMTFjNTY4MWUwYjZlOTcwYzRmZDExYzk2ZTE5ZGI5M2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJv
d0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIlZNLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAppbmRleCA1NWI4MWVlMGY3OGZhN2FkOWEyMGRjZDQ3NjgxMmI0MWY1Njg1
ZDdmLi4yY2Q5ZjZlYjhkNjgzODY4NzA5N2M0ZWNjZTc5MjE1OTE1MTAxZjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNzEsNyArMTcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CiAgICAgICAgIEV4ZWNTdGF0ZSogX19yY2ZfZXhlYyA9IChleGVj
Q2FsbGVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX1JFVFVS
Tl9UV08ocGMsIF9fcmNmX2V4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgfSB3aGlsZSAoZmFsc2UpCi0KKyAgICAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGlu
dCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xMDEz
LDEyICsxMDE0LDI0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYykK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9w
ZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwotICAgIEpTRnVu
Y3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBzY29wZSk7Cisg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4
cHIocGNbM10udS5vcGVyYW5kKTsKICAgICAKLSAgICBMTElOVF9SRVRVUk4oZnVuYyk7CisgICAg
TExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsK
K30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBMTElOVF9P
UF9DKDQpLmpzVmFsdWUoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9w
ZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisgICAgCisg
ICAgTExJTlRfUkVUVVJOKEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSwgdGhpc1ZhbHVlKSk7CiB9CiAKIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxl
SG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUg
Y2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMDk2LDcgKzExMDksNyBA
QCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZQogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbGVlLT5z
Y29wZVVuY2hlY2tlZCgpOwogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKICAgICBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwotICAgIAorCiAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSAwOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA4Y2M2OWE5NjAwYmJmOWQ4
NTMzOWQ2MDk1OTVmNjdjNjhkMDc2NzFiLi4zZjFkYWE4MTJiNzAyZTIzYzZhYWVmOWZkN2MwNjcx
ZWUyMDI1YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaApAQCAtOTcsNiArOTcsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3N3aXRjaF9jaGFyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
c3dpdGNoX3N0cmluZyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmNf
ZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1
bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IGM5MTA2MTdlZDgzNGI3NGM5ZjJmOGVlNGIyNjg3YzhiOWNmZTNjN2MuLjczZmM1
ODg0NDJkZGM0YjljZmE3Yjg4ZjAwNGNhODY3M2U0OTlhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTExODMsNiAr
MTE4MywxMCBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCisgICAgZGlzcGF0Y2goNSkK
IAogX2xsaW50X29wX2NhbGw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpp
bmRleCBlOTBlY2VkZmE3MzA5ODJmZWVmNzFlZWIwY2VhNjQzODIzNGE2OTFjLi43ZWY2Yjg3YzE3
MGFkMDgzYjFmNTI5ZGE4ODM2YzAwY2RhNjRiNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjM3
MywzICsyMzczLDEyIEBAIF9sbGludF9vcF9wcm9maWxlX3R5cGU6CiAKIC5vcFByb2ZpbGVUeXBl
RG9uZToKICAgICBkaXNwYXRjaCg2KQorCitfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3Ro
aXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZz
ZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBKU0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwg
dDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVpIENlbGxUYWcs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQppbmRleCBkOTQ1NWY3NWM3YjY2NDJmYjhjODcyM2ZjMTUyYTM3OTA5MTAzYjViLi5kMjE1
MmEyZjI3N2FkZTU4Nzk3NmExYzNmMTIwMjM3MjliMzhhNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjIy
NiwzICsyMjI2LDExIEBAIF9sbGludF9vcF9wcm9maWxlX3R5cGU6CiAKIC5vcFByb2ZpbGVUeXBl
RG9uZToKICAgICBkaXNwYXRjaCg2KQorCitfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3Ro
aXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MAorICAg
IGxvYWRwIEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA3YjU4NzczMGE2ZjAzNTQ0MGRiOTBkOWM0MjY4
MGFkNTc4Yjk0YTY3Li44MDZkYjUyMzAzZDVhZDNhNzE4ODEyOWY4OGJkNzY0YzZiNTBlZWM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzYxLDE5ICsz
NjEsMTkgQEAgcHVibGljOgogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9j
YXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3Rh
cnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0
YU5vZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2Nh
dGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAg
ICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUp
OworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRl
ckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykK
ICAgICB7CisgICAgICAgIHVzZXNUaGlzKCk7CiAgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0g
bV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVu
Y3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZv
LmJvZHlTdGFydENvbHVtbik7Ci0KLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1l
LCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKKyAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUq
IHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXJyb3dGdW5jRXhwck5vZGUobG9jYXRpb24s
ICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAg
IGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rp
b25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggYWJiNzJhNzRlMTI4ODQ4
ZWE4YjQzZmQ4NjM2OTc0Y2I5OTdjMzdkYi4uYmRjMWJlZTc3ODQ0ODcyYWE2MjRkNDQzYmNiYTE5
NjkzYWRiZDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgKQEAgLTg5MCwxMyArODkwLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAg
CisgICAgaW5saW5lIEJhc2VGdW5jRXhwck5vZGU6OkJhc2VGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9tZXRhZGF0YShtX21l
dGFkYXRhKQogICAgIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3VyY2Us
IGlkZW50LCBGdW5jdGlvbkV4cHJlc3Npb24pOwogICAgIH0KIAorICAgIGlubGluZSBGdW5jRXhw
ck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVuY0V4cHJOb2RlKGxvY2F0
aW9uLCBpZGVudCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAgICB9CisKICAgICBpbmxp
bmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21l
dGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsb2NhdGlvbikKICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCkBAIC05MDQsNiAr
OTEwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtX21ldGFkYXRhLT5maW5pc2hQYXJz
aW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRGVjbGFyYXRpb24pOwogICAgIH0KIAorICAgIGlu
bGluZSBBcnJvd0Z1bmNFeHByTm9kZTo6QXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgIDog
QmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1fbWV0YWRhdGEsIHNvdXJjZSkKKyAg
ICB7CisgICAgfQorCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCiAgICAgaW5saW5lIENs
YXNzRGVjbE5vZGU6OkNsYXNzRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGNsYXNzRGVjbGFyYXRpb24pCiAgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXgg
Y2Y0ZmU0NTBhOTI0OTUwNGYzMGJhODVhMjY0ZTY3YmFhOWE1NWM5Ni4uMThmODQ1NTMzMDVjNGEw
YzIxYzczMzg4MzljMjlmMjNjNzRkZTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rp
b25NZXRhZGF0YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUp
CisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAgICAg
ICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1
bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYzLDYgKzE2Myw3IEBA
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBt
X3BhcnNlTW9kZShtb2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmlj
dENvbnRleHQpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpCisgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJv
d0Z1bmN0aW9uKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKaW5kZXggMWQ2YjAzZDc3NjYyOTdhZTE3NTkzYmJhOWFlYzU2MDkzMjkzMGMyZC4u
ODczNjY4ZWMzN2I0MjdiOTIwNjQ5ZGUzMDY4MzgxZTJjZDhhMTU3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTY1LDYgKzE2NSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVu
Y0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzQ29tbWFOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzU2ltcGxlQXJyYXkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTgwOSw3ICsxODEw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAg
ICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGlu
dCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAg
Q29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKKyAgICAgICAgICAg
IENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2Rl
JiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTgzNSw2
ICsxODM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wgaXNJ
blN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAg
ICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgICAgICBib29s
IGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAK
ICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGlu
ZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICB7CkBAIC0x
ODYwLDYgKzE4NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU291cmNlUGFyc2VNb2Rl
IG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsK
ICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgICAgICB1bnNpZ25l
ZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uTm9k
ZSBmaW5hbCA6IHB1YmxpYyBTY29wZU5vZGUgewpAQCAtMTg4OSwxOCArMTg5MiwzNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKIAotICAg
IGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3Mg
QmFzZUZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworICAgICAg
ICBCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAogICAgICAg
ICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEoKSB7IHJldHVybiBtX21ldGFkYXRhOyB9
CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFk
YXRhOworICAgIH07CisKKworICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNlRnVu
Y0V4cHJOb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBj
b25zdCBTb3VyY2VDb2RlJik7CisKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH07CiAKLSAgICAgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG1fbWV0YWRhdGE7CisgICAgY2xhc3MgQXJyb3dGdW5jRXhwck5vZGUgOiBwdWJs
aWMgQmFzZUZ1bmNFeHByTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBBcnJvd0Z1bmNFeHBy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisKKyAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dG
dW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAog
I2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IGFlZTcwYjZhNzMyOWJjMTFiNWNlNzNkNTM1MmQzMTNlMjJhMjdiZTEu
LmY1MDgxNGU3YjE0MmFiNTMwMGQ4NGE0YjcwMTlmOWM5ODRlMmIxODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE1NDYsMTEgKzE1NDYsMTIgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uQm8KICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAK
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJv
ZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKIHsKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5k
YXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgaWYgKGJvZHlUeXBlID09IFN0
YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgfHwgYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlC
bG9jaykgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkg
ewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgp
LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0
b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNv
bnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9u
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTU2Miw3ICsxNTYzLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uQm8KICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxl
bWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3Rh
bmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0
aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAg
dW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJh
bWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwg
cGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3Ry
aW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTczNyw3ICsxNzM4
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Ns
YXNzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25l
OwotCisgICAgCiAgICAgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1u
OwogICAgIAogICAgIC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBmdW5jdGlvbiBhbHJlYWR5LCB3
ZSBjYW4gdXNlIHRoZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUgcGFyc2VyIHRvIHRoZSBlbmQg
b2YgdGhlIGZ1bmN0aW9uLgpAQCAtMTc1NiwxMSArMTc1NywxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRy
ZWVCdWlsZAogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBtX3Rva2VuLm1f
ZGF0YS5saW5lU3RhcnRPZmZzZXQgOgogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZz
ZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0Owot
CisgICAgICAgIAorICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IHBhcnNlVHlwZSA9PSBB
cnJvd0Z1bmN0aW9uUGFyc2VUeXBlOworICAgICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZvLmJv
ZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFydExv
Y2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVu
ZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RN
b2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlKTsK
KyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2Fj
aGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgICAg
IAogICAgICAgICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUo
Y2FjaGVkSW5mbyk7CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVy
OjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwpAQCAtMTc3NCw3ICsxNzc3LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGQKICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1f
bG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJ
bmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAotICAgICAgICBpZiAocGFyc2VUeXBlID09IEFycm93
RnVuY3Rpb25QYXJzZVR5cGUpCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCiAgICAgICAg
ICAgICBmdW5jdGlvbkJvZHlUeXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9u
ID8gIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1
bmN0aW9uQm9keUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAppbmRleCAwNzYwYzE5ZWIxNjM2ZGIyMWExNzk2MTJhNTQ5NmUxOWNmZDFiYjA3Li5k
YzU2MWY5YjFhNmRhMzY0M2I4MjcyZmU3YjEyZTIxNWU0NGY0MmM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTg2LDcgKzE4Niw3IEBAIHB1
YmxpYzoKICAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5
cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7IH0KICNl
bmRpZgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJl
dHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9v
bCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VN
b2RlKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJl
dHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwg
aW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVz
dWx0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmlu
ZGV4IDBhYjE2NzIxMTY4MTk0YzFhNjAyODllYjg1NmU5OGMwY2ZhMTdiNzkuLjlkYzY5NGYyN2E0
NTg3M2IyYTIxNjdhMzY5NjM1ZDNlNTk0NWFiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yMzYsOCArMjM2LDcgQEAgUmVmUHRyPENvZGVC
bG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgIERlYnVnZ2VyTW9k
ZSBkZWJ1Z2dlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9u
IDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGdsb2JhbE9i
amVjdC0+aGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9mZjsKICAgICBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9Ci0gICAgICAgIGV4ZWN1
dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3IoCi0gICAgICAgICAgICAq
dm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgZXJyb3IpOworICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb2RlQmxv
Y2tGb3IoKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9m
aWxlck1vZGUsIGVycm9yLCBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CiAgICAgcmVj
b3JkUGFyc2UoZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRDb2x1bW4oKSwgZW5kQ29sdW1uKCkpOyAKICAg
ICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IHZtLT50aHJv
d0V4Y2VwdGlvbigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApp
bmRleCBiY2UyNDI4Y2JjMTAxZGRhNmNiMTAxZDcwYmYwMjdmN2UwZWEzZGYwLi5jZjJiZGU4OGM1
YTZlOTE2NzYwMzZlZTI3ZDc0NGY3NjQ1MzljYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7
IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4
ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUo
KSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQogCiAgICAg
dW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
Pm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkg
eyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygp
OyB9CkBAIC01MzAsNyArNTMwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsK
IAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgp
LCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjMzLDYgKzYzMyw3IEBAIHB1YmxpYzoKICAgICBG
dW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5j
dGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigp
OyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk1MWMyNjBlMTZhMjBlMmI4NDA5YWViYjlhMmU1OWRiOWIzZGY0ODYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxw
ZXJzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1
ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNBcnJvd0Z1
bmN0aW9uOjpzX2luZm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0Fycm93RnVuY3Rpb24pIH07CisKK3ZvaWQgSlNBcnJvd0Z1bmN0
aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0Fycm93RnVu
Y3Rpb24qPihjZWxsKS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7Cit9CisK
K0pTQXJyb3dGdW5jdGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhp
cykKK3sKKyAgICBKU0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0
aW9uKCktPm5vdGlmeVdyaXRlKHZtLCByZXN1bHQsICJBbGxvY2F0aW5nIGFuIGFycm93IGZ1bmN0
aW9uIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNBcnJvd0Z1bmN0aW9uOjpKU0Fycm93
RnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUq
IHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNj
b3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSkKKyAg
ICAsIG1fYm91bmRUaGlzKHZtLCB0aGlzLCBib3VuZFRoaXMpCit7Cit9CisKK0pTQXJyb3dGdW5j
dGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3Bl
KiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgQVNTRVJUKGV4ZWN1dGFibGUtPnNp
bmdsZXRvbkZ1bmN0aW9uKCktPmhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICByZXR1cm4gY3Jl
YXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKK30KKwordm9pZCBKU0Fycm93
RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU0Fycm93RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJvd0Z1
bmN0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZFRoaXMpOworfQorCitD
b25zdHJ1Y3RUeXBlIEpTQXJyb3dGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJikKK3sKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cm93RnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjU2ZjY4ZWZlZWRkODIzMWEzNWIyZmMyNDlmZDgx
YWM5N2Y1YjIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQXJyb3dGdW5j
dGlvbl9oCisjZGVmaW5lIEpTQXJyb3dGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAg
CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2Ns
YXNzIExMSW50RGVzaXJlZE9mZnNldHM7CisgICAgCitjbGFzcyBKU0Fycm93RnVuY3Rpb24gOiBw
dWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZH
X0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQg
Y2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU0Fycm93
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1Zh
bHVlKTsKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSos
IEpTVmFsdWUpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICAKKyAg
ICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0
eSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNBcnJvd0Z1bmN0aW9uKTsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlz
KQorICAgIHsKKyAgICAgICAgSlNBcnJvd0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTQXJyb3dGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXJyb3dGdW5jdGlv
bih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7CisgICAgICAgIEFTU0VSVChmdW5j
dGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgZnVuY3Rpb24tPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOworICAgIH0KKyAgICAK
KyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKKworICAgIEpTVmFsdWUgYm91bmRUaGlzKCkgeyByZXR1cm4gbV9ib3VuZFRo
aXMuZ2V0KCk7IH0KKyAgICAKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworICAgIAorICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGds
b2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9m
ZnNldE9mVGhpc1ZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNBcnJvd0Z1bmN0aW9uLCBtX2JvdW5kVGhpcyk7CisgICAgfQorICAgIAorICAgIGNvbnN0IHN0
YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCitw
cm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworICAgICAgICAKK3ByaXZhdGU6CisgICAgSlNBcnJvd0Z1bmN0aW9uKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgIAorICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCisgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+IG1fYm91bmRUaGlzOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gSlNBcnJvd0Z1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAppbmRleCAwYjg3ZDc1YzkxNDUwYzVhZjFhYWVkMjdhNjFhNzQ4ZWY4MGYwOTNlLi45
MjgzNTBlMjQ3OGM0NWY3YmY3ZThhYTg0YzllYzNhNGUyNTJhODZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNDEsNiArMTQxLDcgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0
YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
ICAgICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGY2YzZkNThlYzZlNWMxMTY0
Y2IyN2ZhNWU0MTYxOGI0YjgxNDJmMDIuLmYwNTk1ODRjZjA3ZDdmZDY5ZWEyZGNmZTI3YjYzYjY0
NGE4ODQ0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaApAQCAtNDQsNiArNDQsMTMgQEAgaW5saW5lIEpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHMK
ICAgICAsIG1fcmFyZURhdGEoKQogewogfQorICAgIAoraW5saW5lIEpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNj
b3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHNjb3BlLCBzdHJ1Y3R1
cmUpCisgICAgLCBtX2V4ZWN1dGFibGUodm0sIHRoaXMsIGV4ZWN1dGFibGUpCisgICAgLCBtX3Jh
cmVEYXRhKCkKK3sKK30KIAogaW5saW5lIEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNGdW5jdGlvbjo6
anNFeGVjdXRhYmxlKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjZWU5YmJkOTQwNDQ5MTI4OTQzODI3MWQwMDQ0
MTdjMjI5YWQwNDIzLi5kYTFhYzI1YWFiMDA4NjJjZDUzNzMwZjlhNWFkMTI1YTJkYzBmZjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlJ
dGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NhbGxi
YWNrQ29uc3RydWN0b3IuaCIKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICBleGVjLT5zZXRDYWxsZWUobV9nbG9iYWxDYWxsZWUuZ2V0KCkp
OwogCiAgICAgbV9mdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAg
IG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQXJyb3dGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNCb3VuZEZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsK
ICAgICBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0sIG1fZnVu
Y3Rpb25OYW1lT2Zmc2V0KSk7CiAgICAgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CkBAIC03OTUsNiArNzk3LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxlZVN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDk5ODZiY2Y2MjQ1ZTJjYzQ2ODIwYjEzMTAyYjIzNDI5MDBlYzNkN2IuLmJkMTJiMjkzMDU1
ZTliYWUzMGJiNzNmZDkwMTViYzAwMzgzNjNjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjMyLDYgKzIzMiw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxlZVN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFByb3BlcnR5T2Zmc2V0
IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJp
dmF0ZU5hbWVTdHJ1Y3R1cmU7CkBAIC00NjIsNiArNDYzLDcgQEAgcHVibGljOgogICAgIFN0cnVj
dHVyZSogY2FsbGVlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYm91bmRGdW5j
dGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogYXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
bmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAgICAgU3RydWN0dXJlKiBu
dW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVj
dHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUt
dGR6LWVycm9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMxZTNhNjZlYTkyZjAzMGRiMzc3OWE0YzNlNDAyZTdjMTE4ZDFkODEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3Iu
anMKQEAgLTAsMCArMSw0NiBAQAorInVzZSBzdHJpY3QiOworCit2YXIgbiA9IDEwMDAwMDA7CisK
K2Z1bmN0aW9uIHNob3VsZFRocm93VERaKGZ1bmMpIHsKKyAgICB2YXIgaGFzVGhyb3duID0gZmFs
c2U7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICBpZiAoZS5uYW1lLmluZGV4T2YoIlJlZmVyZW5jZUVycm9yIikgIT09IC0xKQorICAgICAgICAg
ICAgaGFzVGhyb3duID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFoYXNUaHJvd24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRGlkIG5vdCB0aHJvdyBURFogZXJyb3IiKTsKK30KKworZnVuY3Rp
b24gYmFyKGYpIHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIGxldCByZXN1bHQgPSAwOwor
ICAgIHZhciBzZXQgPSAgKHgpID0+IHsgcmVzdWx0ID0geDsgcmV0dXJuIHRkelBlcnBldHJhdG9y
OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgewor
ICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgICAgICByZXR1cm4gdGR6UGVycGV0cmF0b3I7
CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IHRkelBlcnBldHJhdG9yOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworbm9JbmxpbmUoc2hv
dWxkVGhyb3dURFopOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciBi
b29sID0gIShpICUgMTAwKTsKKyAgICBpZiAoYm9vbCkKKyAgICAgICAgc2hvdWxkVGhyb3dURFoo
KCk9PiB7IGZvbyhib29sKTsgfSk7CisgICAgZWxzZSB7CisgICAgICAgIHZhciByZXN1bHQgPSBm
b28oYm9vbCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZh
bHVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU0MWJiZTE0MDI0MTRkYjI2YzZiN2ZkNDAxZmIwZTljNjVhNGJh
NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpA
QCAtMCwwICsxLDM3IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcihzZXQpIHsK
KyAgICB2YXIgcmVzdWx0ID0gc2V0KDApOworICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyByZXN1bHQ7Cit9CisKK2Z1bmN0aW9u
IGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIGltVW5kZWZpbmVkOworICAg
IHZhciBiYXo7CisgICAgdmFyIHNldCA9ICAoeCkgPT4geworICAgICAgICByZXN1bHQgPSB4Owor
ICAgICAgICBpZiAoYmF6ICE9PSA1MCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlOiAiICsgYmF6OworICAgICAgICByZXR1cm4gaW1VbmRlZmluZWQ7CisgICAgfTsKKyAgICBi
YXogPSA1MDsKKyAgICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChi
KSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5l
KGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9
IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3Ny
ZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTQzN2FmN2IyYzJhZDM0
NWUyNmMyMDM3Nzg5MGRmNWYzMWZhZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3Jl
eGl0LmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gYmFy
KCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFy
IHNldCA9ICh4KSA9PiB7IHJlc3VsdCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JF
eGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9J
bmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsr
KSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9
IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1hY3RpdmF0aW9uLXNpbmsuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YTc5ZWM5ZWFh
NjVjNTQxOTMwYjkwNDgyNmU3YTIzYTEzZmIyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5r
LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcihm
KSB7IGYoMTApOyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7Cisg
ICAgdmFyIHNldCA9IHggPT4geyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAg
YmFyKHNldCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMTApCisgICAgICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZDogIiArIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAw
KSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIwMzIwODhh
YmYyNmRhZTJhZTcxYTJhYzRjMDVkNGYwNzc1NWU0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ib3VuZC5qcwpAQCAt
MCwwICsxLDE4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgIH0KK307CisKK3ZhciBkID0geworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlv
bigpIHsgcmV0dXJuIHogPT4gdGhpcy54ICsgejsgfQorfTsKKworbm9JbmxpbmUoZC55KTsKKwor
dmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgewor
ICB0ZXN0Q2FzZShkLnkoKS5iaW5kKGUsICJsZXkiKSgpLCAiYmFybGV5IiwgIkVycm9yOiBmdW5j
dGlvbiBiaW5kIHNob3VsZG4ndCBjaGFuZ2UgbGV4aWNhbCBiaW5kaW5nIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc3ZTBhZDljODNhYzUz
YTdmNmQzNTE5NjIzMjE0YzFlOWZjNjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwx
OCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4g
RXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOwor
ICB9Cit9OworCit2YXIgZCA9IHsKKyAgeCA6ICJmb28iLAorICB5IDogZnVuY3Rpb24oKSB7IHJl
dHVybiAoKSA9PiB0aGlzLng7IH0KK307Citub0lubGluZShkLnkpOworCit2YXIgZSA9IHsgeCA6
ICJiYXIiIH07CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDtpKyspeworICAgIHRlc3RDYXNlKGQu
eSgpLmNhbGwoZSksICJmb28iLCAiRXJyb3I6IGZ1bmN0aW9uIGNhbGwgc2hvdWxuJ3QgY2hhbmdl
IHRoZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7CisgICAgdGVzdENh
c2UoZC55KCkuYXBwbHkoZSksICJmb28iLCAiRXJyb3I6IGZ1bmN0aW9uIGFwcGx5IHNob3Vsbid0
IGNoYW5nZSB0aGUgbGV4aWNhbCBiaW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1YmViNTU3ZDc5NDliYzZi
MmM3OGFiNDY1OWVhOGMyYWM2M2RlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAs
MCArMSwyMiBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdl
ICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsg
IiciOworICB9Cit9OworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitu
b0lubGluZShzaW1wbGVBcnJvd0Z1bmN0aW9uKTsKKwordmFyIGVycm9yT25DcmVhdGUgPSBmYWxz
ZTsKKworZm9yIChpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRyeSB7CisgICAgICAgdmFyIGZjID0g
bmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKTsKKyAgIH0KKyAgIGNhdGNoIChlKSB7CisgICAgIGVy
cm9yT25DcmVhdGUgPSB0cnVlOworICAgfQorCisgICAgdGVzdENhc2UoZXJyb3JPbkNyZWF0ZSwg
dHJ1ZSwgIkVycm9yOiBObyBleGNlcHRpb24gZHVyaW5nIHJ1biBuZXcgQXJyb3dGdW5jdGlvbiIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40Y2ZhYjI0YzkxYmM1N2M5NTg3NjMyZGZlYzlhNGM5Mzc5OGUyMTVjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTEuanMKQEAgLTAsMCArMSwxOSBAQAordmFyIHRlc3RDYXNlID0g
ZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3Rl
ZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBE
b2cobmFtZSkgeworICB0aGlzLm5hbWUgPSBuYW1lOworICB0aGlzLmdldE5hbWUgPSAoKSA9PiBl
dmFsKCJ0aGlzLm5hbWUiKTsKKyAgdGhpcy5nZXROYW1lSGFyZCA9ICgpID0+IGV2YWwoIigoKSA9
PiB0aGlzLm5hbWUpKCkiKTsKK30KKworbm9JbmxpbmUoRG9nKQorCitmb3IgKHZhciBpPTA7aTwx
MDAwMDsgaSsrKSB7CisgIHZhciBkID0gbmV3IERvZygiTWF4Iik7CisgIHRlc3RDYXNlKGQuZ2V0
TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNp
ZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZUhhcmQo
KSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9m
IHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTdkYjMwM2NkZmUzZDE1ZGE0NWM4MTY0ZTQ4
ZDAzYTY3ZWI5MmE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIuanMKQEAgLTAsMCAr
MSwzOSBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsg
Ii4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIici
OworICB9Cit9OworCit2YXIgZnVuY3Rpb25Db25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsKKyAg
dGhpcy5mdW5jID0gKCkgPT4gdGhpczsKK307CisKK3ZhciBpbnN0YW5jZSA9IG5ldyBmdW5jdGlv
bkNvbnN0cnVjdG9yKCk7CisKK3Rlc3RDYXNlKGluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2Us
IHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICMyIik7CisKK3ZhciBvYmogPSB7CisgIG1ldGhvZDogZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiAoKSA9PiB0aGlzOworICB9Cit9OworCitub0lubGluZShvYmoubWV0
aG9kKTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKG9i
ai5tZXRob2QoKSgpID09PSBvYmosIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5
IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMzIik7Cit9CisKK3ZhciBmYWtl
ID0ge3N0ZWFsOiBvYmoubWV0aG9kKCl9Oworbm9JbmxpbmUoZmFrZS5zdGVhbCk7CisKK2ZvciAo
dmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShmYWtlLnN0ZWFsKCkgPT09
IG9iaiwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzQiKTsKK30KKwordmFyIHJlYWwgPSB7Ym9ycm93OiBvYmou
bWV0aG9kfTsKK25vSW5saW5lKHJlYWwuYm9ycm93KTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIHRlc3RDYXNlKHJlYWwuYm9ycm93KCkoKSA9PT0gcmVhbCwgdHJ1ZSwg
IkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LTMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTAxOTA4NmQ1ODQ3OWM0YmQ0ZmUwZjUyN2IzYTdiYjg5MzljMDky
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCkBAIC0wLDAgKzEsMjggQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KworCit2YXIgb2JqID0geyBuYW1lOidvYmonLCBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJu
ICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfX07CisKK2ZvciAodmFy
IGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKG9iai5tZXRob2QoKSgndGVzdCcgKyBp
LnRvU3RyaW5nKCkpLCAnb2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhp
cyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMx
Iik7Cit9CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHZhciByZXN1bHQxID0g
b2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSk7CisgIHRlc3RDYXNlKHJlc3VsdDEs
ICdvYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworb2Jq
Lm5hbWU9J25ld09iaic7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RD
YXNlKG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnbmV3T2JqLW5hbWUtdGVz
dCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CisKK2ZvciAodmFyIGk9MDsgaTwx
MDAwMDsgaSsrKSB7CisgIHZhciByZXN1bHQyID0gb2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9T
dHJpbmcoKSk7CisgIHRlc3RDYXNlKHJlc3VsdDIsICduZXdPYmotbmFtZS10ZXN0JyArIGkudG9T
dHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLTQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODViZDM2M2U0ZTQ2YjAyZDJmMTliYmUzODUwMmY1
MjgyMzNhOWYxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzCkBAIC0wLDAgKzEs
MjYgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKworCit2YXIgb2JqID0geworICBuYW1lOidvYmonLAorICBpbnRlcm5hbE9iamVj
dDogeworICAgIG5hbWUgIDonaW50ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24g
KCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9Cisg
IH0KK307CisKK25vSW5saW5lKG9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QpOworCitmb3IgKHZh
ciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKG9iai5pbnRlcm5hbE9iamVjdC5t
ZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnaW50ZXJuYWxPYmplY3QtbmFtZS10ZXN0
JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGlu
c2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworb2JqLmludGVybmFsT2JqZWN0
Lm5hbWU9J25ld0ludGVybmFsT2JqZWN0JzsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKysp
IHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3QnICsgaS50
b1N0cmluZygpKSwgJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCks
ICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93
IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy01LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg3NTQ5NGNlNmI2NmRiMGE3ZWI0M2RjYzgzZWMxZWFjZTYyODc1
NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpAQCAtMCwwICsxLDQ4IEBACit2
YXIgc29ydGVkVmFsdWVzOworCit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBl
Y3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93
IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBh
Y3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsKKyAgYXJyOiBbMSwgNCwgNiwg
MywgNywgMF0sCisgIGJ1YmJsZVNvcnQ6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4g
eworICAgICAgdmFyIHRtcDsKKyAgICAgIHZhciBhciA9IHRoaXMuYXJyLnNsaWNlKCk7CisgICAg
ICB2YXIgX2xlbmd0aCA9IGFyLmxlbmd0aAorICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfbGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPiAwOyBqLS0pIHsKKyAgICAg
ICAgICBpZiAoKGFyW2pdIC0gYXJbaiAtIDFdKSA8IDApIHsKKyAgICAgICAgICAgIHRtcCA9IGFy
W2pdOworICAgICAgICAgICAgYXJbal0gPSBhcltqIC0gMV07CisgICAgICAgICAgICBhcltqIC0g
MV0gPSB0bXA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4g
YXI7CisgICAgfQorICB9Cit9OworCitub0lubGluZShvYmouYnViYmxlU29ydCk7CisKK2ZvciAo
dmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgb2JqLmFyciA9IFsxLCAyLCA0LCA2LCAzLCA3
LCAwXTsKKyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCkubGVuZ3RoLCA3LCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMSIpOworCisgICAgdmFyIHNvcnRlZFZhbHVlcyA9IG9iai5idWJibGVTb3J0KCkoKTsKKyAg
ICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbMF0sIDAsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNh
bGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM2Iik7CisgICAgdGVzdENh
c2Uoc29ydGVkVmFsdWVzWzZdLCA3LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5k
ZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNyIpOworCisgICAgb2JqLmFyciA9IFsx
LCAyLCA0LCA2LCA1LCA4LCAyMSwgMTksIDBdOworCisgICAgdGVzdENhc2Uob2JqLmJ1YmJsZVNv
cnQoKSgpLmxlbmd0aCwgOSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGlu
c2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzgiKTsKKworICAgIHNvcnRlZFZhbHVlcyA9IG9i
ai5idWJibGVTb3J0KCkoKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbMV0sIDEsICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICMxMiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1s4XSwgMjEsICJFcnJvcjogdGhp
cyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMx
MyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNDE3YmM3YzhmMTgwNTM1OGJkYmE4NWIyY2VmNmE2OWI1ZjQxZWNhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIHRlc3RDYXNl
ID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBl
Y3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlv
biBEb2cobmFtZSkgeworICB0aGlzLm5hbWUgPSBuYW1lOworICB0aGlzLmdldE5hbWUgPSAoKSA9
PiAgdGhpcy5uYW1lOworICB0aGlzLmdldE5hbWVOZXN0aW5nTGV2ZWwxID0gKCkgPT4gKCkgPT4g
dGhpcy5uYW1lOworICB0aGlzLmdldE5hbWVOZXN0aW5nTGV2ZWwyID0gKCkgPT4gKCkgPT4gKCkg
PT4gdGhpcy5uYW1lOworfQorCit2YXIgZCA9IG5ldyBEb2coIk1heCIpOworCitub0lubGluZShk
LmdldE5hbWUoKSk7Citub0lubGluZShkLmdldE5hbWVOZXN0aW5nTGV2ZWwxKCkoKSk7Citub0lu
bGluZShkLmdldE5hbWVOZXN0aW5nTGV2ZWwyKCkoKSgpKTsKKworZm9yICh2YXIgaT0wO2k8MTAw
MDA7IGkrKykgeworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIp
OworICB0ZXN0Q2FzZShkLmdldE5hbWVOZXN0aW5nTGV2ZWwxKCkoKSwgZC5uYW1lLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMiIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVOZXN0aW5nTGV2ZWwyKCkoKSgpLCBkLm5hbWUs
ICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93
IGZ1bmN0aW9uICMzIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay1vc3Jl
eGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDEw
YTMxZDY3MzFhZTY5NzRkNjY3ZWQ4ZDI0ODcwYjVkNTMxZjY1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
dGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM0IEBACit2YXIgbiA9
IDEwMDAwMDAwOworCit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9
OworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVz
dWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93
IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwg
dGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0
IG9mIGFycm93IGZ1bmN0aW9uJzsKKyAgICAgIHJlc3VsdCA9IHg7CisgICAgfQorICAgIGlmIChi
KSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJh
cihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28uY2FsbChuZXdD
b250ZXh0LCAhKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0
aXZhdGlvbi1zaW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E0
MzA2MzdjODViZjk0MjFhZTljOTdlMGRkN2Y2Y2QxMzVjNDM5OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtYWN0aXZhdGlvbi1zaW5rLmpzCkBAIC0wLDAgKzEsMzggQEAKK3ZhciBuID0gMTAwMDAw
MDA7CisKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1
bmN0aW9uIGJhcihmKSB7CisgICAgaWYgKHRoaXMgPT0gbmV3Q29udGV4dCkKKyAgICAgICAgdGhy
b3cgJ1dyb25nIGNvbnRleHQgb2YgbmVzdGluZyBmdW5jdGlvbic7CisgICAgZigxMCk7Cit9CisK
K2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICh4
KSA9PiB7CisgICAgICByZXN1bHQgPSB4OworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rp
b24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlk
ICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJy
b3cgZnVuY3Rpb24nOworICAgIH07CisKKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFk
OiAiICsgcmVzdWx0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRleHQsICEo
aSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW5vLWRv
dWJsZS1hbGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODY5ZTAyNzEzOWMxNjY3ZTEwNjliYWJkMjk1YTZkN2ZjMGI5ZTQxNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCAr
MSwzNyBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKwor
ZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCisvLyBTaG91
bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQK
K2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZiA9ICgpID0+IHsKKyAgICAgIC8vIENo
ZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5l
d0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdX
cm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKyAgICB9OworICAgIGlmIChwKSB7
CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9jYXRpb24gb2YgZgorICAgICAgICBpZiAo
cSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
OworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsKK30KK25vSW5saW5lKHNpbmspOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBzaW5rLmNhbGwo
bmV3Q29udGV4dCwgdHJ1ZSwgZmFsc2UpOworICAgIGlmIChvLnggIT0gMykKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBidXQgaXMgIiArIHJlc3VsdDsKK30KKwor
Ly8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBk
b3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkg
YWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitpZiAoZi54
ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMyBidXQgaXMgIiAr
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0LmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5r
aW5nLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZmY2IzZmE1YjFlNzdmYjYyODYxODBiMzMyYTNi
ZTdkZTI4ZjYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0LmpzCkBA
IC0wLDAgKzEsMzYgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcK
K307CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMg
YnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB7
CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBp
ZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAg
ICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisgICAgICBy
ZXR1cm4geDsKKyAgICB9OworICAgIGlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJldHVybiBn
OyB9CisgICAgcmV0dXJuIHggPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24g
c3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9
IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cg
ZnVuY3Rpb24gIzInOworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5saW5lKHNpbmsp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsu
Y2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCisgICAgdmFy
IHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9y
OiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQs
IHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENo
ZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAor
dmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCx0cnVlLCB0cnVlKTsvLyBTdWJzdGl0dXRlIHRo
aXMKK3ZhciByZXN1bHQgPSBmKDQyKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVy
cm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNp
bmtpbmctcHV0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTdlYTA3NjM1
YTQxMzFjZDIzMTFkNDUwNzM1ZjU3YzFkZDk1ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1z
aW5raW5nLXB1dC5qcwpAQCAtMCwwICsxLDQ1IEBACit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQg
OiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGgg
c3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAg
ICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUg
Y29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0Nv
bnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rp
b24gIzEnOworCisgICAgICByZXR1cm4geDsKKyAgICB9OworICAgIGlmIChwKSB7IGlmIChxKSBn
LmlubmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geworICAgICAgLy8gQ2hl
Y2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3
Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dy
b25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzInOworCisgICAgICByZXR1cm4geDsKKyAg
ICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIHRydWUpOy8vIHVz
ZSBjYWxsIHRvIHN1YnN0aXR1dGUgY29udGV4dAorICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAg
ICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdv
dCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgYXJyb3cgZnVuY3Rpb24g
c2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBUZXN0IHRoZSBhbGxvY2F0
aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNlIGJyYW5jaAordmFyIGYgPSBzaW5rLmNhbGwo
bmV3Q29udGV4dCwgdHJ1ZSwgZmFsc2UpOwordmFyIHJlc3VsdCA9IGYoMTIpOworaWYgKHJlc3Vs
dCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIgYXMgaXQgc2hvdWxkIGJlIGVp
dGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hlY2sgdGhhdCB0aGUgYWxsb2NhdGlv
biBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2YXIgZiA9IHNp
bmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsKK3ZhciByZXN1bHQgPSBmLmlubmVyOwor
aWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGlubmVyIHNob3VsZCBiZSA0MiBi
dXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0Y2UwYzY1
OGQzYTJmNzkyMjlkZjRmODkyY2NkYTE1MTNjOTRlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCkBA
IC0wLDAgKzEsMTcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVk
LCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVz
c2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVh
bCArICInIjsKKyAgfQorfTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsK
Kworbm9JbmxpbmUoc2ltcGxlQXJyb3dGdW5jdGlvbik7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAw
O2krKykgeworICAgdGVzdENhc2UoT2JqZWN0LmdldFByb3RvdHlwZU9mKHNpbXBsZUFycm93RnVu
Y3Rpb24pLCBGdW5jdGlvbi5wcm90b3R5cGUsICJFcnJvcjogTm90IGNvcnJlY3QgZ2V0UHJvdG90
eXBlT2YgdmFsdWUgZm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RDYXNlKHNpbXBsZUFy
cm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBOb3QgY29ycmVj
dCByZXN1bHQgZm9yIGluc3RhbmNlb2YgbWV0aG9kIGZvciBhcnJvdyBmdW5jdGlvbiIpOworCisg
ICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uLCB0
cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3VsdCBmb3IgY29uc3RydWN0b3IgbWV0aG9kIG9m
IGFycm93IGZ1bmN0aW8gICBuIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDdhMWYwYTQ5Y2IxNjg2M2M1OTIxMzYxZjBhZGIxZTE0ZWM5YjY1YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1y
dW4tMTAtMS5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0
dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewor
ICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3
YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgewor
ICB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgZm9yKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAg
IHZhciBPYmogPSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAg
ICAgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IHRoaXMubmFtZTsKKyAgICB9OworCisgICAgdmFyIG9i
aiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFt
ZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordGVzdENhc2UocnVuKDEpLCB0cnVlLCAiRXJyb3I6IEVycm9yOiBkdXJpbmcgZXhl
Y3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIG9uZSB0aW1lIik7Cit0ZXN0Q2FzZShydW4oMTApLCB0
cnVlLCAiRXJyb3I6IEVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEw
IHRpbWVzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkY2RiM2M3MGEx
YjI3YzNkYmI1MjM4MDk1NWY1MzUzZDc2NzQyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5qcwpAQCAt
MCwwICsxLDI1IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0ID0g
dHJ1ZTsKKyAgZm9yKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmogPSBmdW5j
dGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMuZ2V0TmFt
ZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisKKyAgICB2YXIgb2JqID0g
bmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkp
IHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0Owor
fQorCit0ZXN0Q2FzZShydW4oMSksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBh
cnJvdyBmdW5jdGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVycm9y
OiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwIHRpbWVzIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVu
LTEwMDAwLTEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tcnVuLTEwMDAwLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU1ZjZiYzg2YmQzMTQ1MWIwMWNhMjdk
MGI5NzIwYjU3ZThkNjA1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcwpAQCAtMCwwICsxLDIz
IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkg
eworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBF
eHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7Cisg
IH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAg
Zm9yKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmogPSBmdW5jdGlvbiAobmFt
ZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMuZ2V0TmFtZSA9ICgpID0+
IHRoaXMubmFtZTsKKyAgICB9OworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7
CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBm
YWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEw
MDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5j
dGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRjNDI3MWY0YTMxNTkxNjI1YTBiZDNkNzQ0ZDI1MTI2MzMzMDJlNDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
cnVuLTEwMDAwLTIuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24g
KGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
IHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBi
dXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQp
IHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvciAodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7
CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1l
OworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7OworICAgIH07
CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUg
IT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQor
ICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0cnVlLCAiRXJyb3I6
IEVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwMDAwIHRpbWVzIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDI4NjJjNjI4ZTNiMmNhMzA0NDEwYjFhZTIyNjk0NzE4MDUxZGVjMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDI4IEBA
CitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0gMzsgfQorbm9JbmxpbmUoY2FsbCk7CisKK2Z1bmN0
aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZiA9ICgpID0+IHsgfTsKKyAgICBpZiAocCkgewor
ICAgICAgICBjYWxsKGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEp
IHsKKyAgICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsK
KyAgICB9CisgICAgcmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luayh0cnVlLCBm
YWxzZSk7CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVk
IG8ueCB0byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0
aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVj
ayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3Zh
ciBmID0gc2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJvdyAiRXJyb3I6
IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3Ny
ZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1zaW5raW5nLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI3ZjNjYTNiZGU4ZGEzMDE0MGZhMTQ5
OTczZTE3YWFhOGQ5MTA1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCAr
MSwyMSBAQAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB4OworICAg
IGlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4g
eDsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kp
IHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIHZhciByZXN1bHQgPSBmKDQy
KTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIg
YnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24g
c2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBm
dW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luayh0
cnVlLCB0cnVlKTsKK3ZhciByZXN1bHQgPSBmKDQyKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2lu
Zy1wdXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRiNzBiYjlhYmMyMzE0OGY2MjdlZmM2MTg2
YmUwNTdjM2NiYjI3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcwpAQCAtMCwwICsxLDI4IEBA
CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAgaWYgKHAp
IHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB4Owor
fQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewor
ICAgIHZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7Cisg
ICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBn
b3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3Vs
ZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBv
biB0aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luayh0cnVlLCBmYWxz
ZSk7Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8vIFRoaXMg
c2hvdWxkbid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3IgY29tcGxl
dGVseSBjcmFzaAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAiICsgcmVz
dWx0OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQg
dGhlIHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK3ZhciBy
ZXN1bHQgPSBmLmlubmVyOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGlu
bmVyIHNob3VsZCBiZSA0MiBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY4NzQ5MjM5NzE5ODNkY2RhMzRjMjY5MzkyMTE3YjE3NDhlNjdiNGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
dGR6LmpzCkBAIC0wLDAgKzEsMjcgQEAKK3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9IGNs
YXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7
CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgICAgdmFyIGYgPSAoKSA9PiB0
aGlzOworICAgICAgc3VwZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICB9
CisgIH0KK307CisKK3ZhciBleGNlcHRpb24gPSBudWxsOworZm9yICh2YXIgaT0wOyBpPDEwMDAw
OyBpKyspIHsKKyAgdHJ5IHsKKyAgICAgICBuZXcgQih0cnVlKTsKKyAgfSBjYXRjaCAoZSkgewor
ICAgICAgZXhjZXB0aW9uID0gZTsKKyAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VF
cnJvcikpCisgICAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiB0aHJvd24gd2FzIG5vdCBhIHJlZmVy
ZW5jZSBlcnJvciI7CisgIH0KKworICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgIHRocm93ICJFeGNl
cHRpb24gbm90IHRocm93biBmb3IgYW4gdW5pdGlhbGl6ZWQgdGhpcyBhdCBpdGVyYXRpb24iOwor
CisgIHZhciBlID0gbmV3IEIoZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzUzZWMwZGRkNTUxNGZhZjRkMGQwM2M5ZTA2NTcwYTBjODJiZTY0ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10
eXBlb2YuanMKQEAgLTAsMCArMSwyNyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVh
bCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAg
ICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2Fz
ICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIg
YWYyID0gKGEpID0+IHthICsgMX07CisKK25vSW5saW5lKGFmMSk7Citub0lubGluZShhZjIpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgdGVzdENhc2UodHlwZW9mIGFm
MSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5j
dGlvbiAjMSIpOworICB0ZXN0Q2FzZSh0eXBlb2YgYWYyLCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5v
dCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisKKy8vRml4bWU6IFNv
bWUgYnVnIGluIGlubGluaW5nIHR5cGVvZiB3aXRoIGZvbGxvd2luZyBydW4gcGFyYW1ldGVycyBm
dGwtbm8tY2ppdC1uby1pbmxpbmUtdmFsaWRhdGUKKy8vIC0tdXNlRlRMSklUXD10cnVlIC0tZW5h
YmxlRnVuY3Rpb25Eb3RBcmd1bWVudHNcPXRydWUgLS1lbmFibGVDb25jdXJyZW50SklUPWZhbHNl
IC0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAwICAtLXZhbGlkYXRlR3JhcGg9dHJ1ZSAt
LW1heGltdW1JbmxpbmluZ0RlcHRoPTEKKy8vCisvLyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyArK2kpICB7CisvLyAgIGlmICh0eXBlb2YgKGZ1bmN0aW9uICgpIHt9KSAhPT0gJ2Z1bmN0aW9u
JykKKy8vICAgICAgIHRocm93ICdXcm9uZyB0eXBlJzsKKy8vIH0KKy8vICB0ZXN0Q2FzZSh0eXBl
b2YgKCk9Pnt9LCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICMzLSIgKyBpKTsKKworLy8gIHRlc3RDYXNlKHR5cGVvZiAoKGIpID0+IHti
ICsgMX0pLCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93
IGZ1bmN0aW9uICM0Iik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTkwYjhmM2ExZDk1ZmM0M2JkZWViZTM0NTdjYWE2
NGQxZTZiN2EwMi4uZjFkMWI4ZjE1MDBhZGNjZThiNzNjNjg4NWM4MDU4ODNjOTY3MDUxMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA4LTEyICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2th
Y2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBFUzYgYXJyb3cgZnVu
Y3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBi
aW5kIG9mIHRoaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NDk1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICoganMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93
ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1
bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tb3RoZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10ZHouaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5q
czogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2Fs
bC5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmlu
ZC5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2Fs
bC5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzOiBBZGRlZC4KKwogMjAxNS0wOC0xMyAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFJlZHVjZSBmbGFraW5lc3Mgb2YgaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VO
YW1lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjJiMzI2Y2NiYjRlMTRjNjg5ZGQ3ZDkzODNjYzViYzk0ZmY3ZjAxNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhp
cyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmJpbmQoZSwgJ2xleScpKCkgaXMgJ2Jhcmxl
eScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbCBiL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOWFjYjJiYzhm
ZDUwNGM2OGYwNDQ1YTZlYWM0YTZhMTQ1NGFiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5k
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMDc3Zjk5NzlhY2Y0NWUxNmI5
OTY1NzJkMWFmZGVlZGQ1OTExMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIGZv
ciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBp
bnZva2UgY2FsbCZhcHBseQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBk
LnkoKS5jYWxsKGUpIGlzICdmb28nCitQQVNTIGQueSgpLmFwcGx5KGUpIGlzICdmb28nCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWQ4YTQ3ZTMwYjZhODc0OWVj
NWI3ZTc4M2M2YTllYzMxMzJkMmQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NzA2ZmZmMTdjMjEy
Mzg1MzY0MGJiMmE0ZWIxN2Q2M2UxYTM3MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVjdG9yCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3Ig
KGV2YWx1YXRpbmcgJ25ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCknKS4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBjMGI5YTljZGQ0ZDhi
ZGZhNjI0MWNiNmJlZmJmMDRjYzk1ODMwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNiNjZmYzI4OGNhY2JkOWM5MzdjOTcxYzJiZDZiNjhlNjY0YTk0ODkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0cyBmb3IgRVM2IGFy
cm93IGZ1bmN0aW9uIGxleGljYWwgYmluZCBvZiB0aGlzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGQuZ2V0TmFtZSgpIGlzIGQubmFtZQorUEFTUyBkLmdldE5hbWVIYXJk
KCkgaXMgZC5uYW1lCitQQVNTIGQuZ2V0TmFtZU5lc3RpbmcoKSgpKCkgaXMgZC5uYW1lCitQQVNT
IG9iai5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdvYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1Mg
b2JqLm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0JworUEFT
UyBkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ2ludGVybmFs
T2JqZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2Qo
KSgnY29ycmVjdCcpIGlzICduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnCitQQVNTIGlu
c3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2UgaXMgdHJ1ZQorUEFTUyBvd25lck9iai5tZXRob2Qo
KSgpID09PSBvd25lck9iaiBpcyB0cnVlCitQQVNTIGZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmog
aXMgdHJ1ZQorUEFTUyByZWFsLmJvcnJvdygpKCkgPT09IHJlYWwgaXMgdHJ1ZQorUEFTUyBhcnJv
d0Z1bmN0aW9uKCctdGhpcycpIGlzICJyaWdodC10aGlzIgorUEFTUyBob3N0T2JqLmZ1bmMoJy10
aGlzJykgaXMgInJpZ2h0LXRoaXMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZWEyMmE3NmZkZjhiZmY1ZTcyZTUx
Yjc3OTRiM2UzNDdkMTY0MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5
MTUyZTVlMzdjNjkxNWYzODIzZTI5YjIwYTk0ZGY1M2QwOGMwMDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBpbnN0YW5jZW9mIGFuZCB0
eXBlb2Ygb3BlcmF0b3JzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE9i
amVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSBpcyBGdW5jdGlvbi5wcm90
b3R5cGUKK1BBU1Mgc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIGlzIHRy
dWUKK1BBU1Mgc2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiBpcyB0
cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbCBiL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2N2Y4
YjAwZTQ2MDU1ZWU2ZmFlNWMxZTgyODllZmVlMWYxMTA5MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2FmNmNkODYwMGU4
ODQxMjc3YzQ5NGE5ODkwMjI0NTJlYTZhYjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gdGVzdCB0ZHoKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgaXNSZWZlcmVuY2VFcnJvciBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tdGR6Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhlZjE3MWNiODIwYmViM2NiNGE3ZDNmYzQ4ZTVj
NTNmYzExOTI2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdGR6Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9m
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MmZiMmNlOTY0YmQwMzMyMWI4MzJjYjg3YmJhZTBjYTUzNDlj
MWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBl
b2YtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorUEFTUyB0eXBlb2YgYWYxID09PSAnZnVu
Y3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCitQ
QVNTIHR5cGVvZiAoKCk9Pnt9KSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNTIHR5cGVvZiAo
KGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBhY2FhYTFhNGU0ZDBlNGNiM2QwNzY1ZTM3M2Zl
ZGI3NDM4MGUwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dm
dW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dm
dW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWI1NTJmODBmNjYxZGUzYmFi
NTIwOWM3MmRkY2Y1MDIxMDAzNDVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAK
K0pTUmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZDg0NTRiZmY2MTgyZTYxY2JlYjBi
OWVlMTMzZmU4NzMxMTJiZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODkyNGM4NDI3NmU3MTA4Nzc4NmM1OTQwYTgyMmJjYzZmOTdjMDZkNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5qcwpAQCAtMCwwICsxLDE1IEBACit2YXIgYWYgPSAoYSwgYikgPT4gYSArIGI7CisKK25v
SW5saW5lKGFmKTsKKworZnVuY3Rpb24gYmFyKGEsIGIpIHsKKyAgICByZXR1cm4gYWYoYSwgYik7
Cit9CisKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytp
KSB7CisgICAgdmFyIHJlc3VsdCA9IGJhcigxLCAyKTsKKyAgICBpZiAocmVzdWx0ICE9IDMpCisg
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMg
Yi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE1NzNjM2I1ZTBjYTc5MTc5NGYyNTE2OWE5MWNiNGE3ZGM5YjI4Y2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlv
bi1jYWxsLmpzCkBAIC0wLDAgKzEsMTUgQEAKK3ZhciBmZSA9IGZ1bmN0aW9uIChhLCBiKSB7IHJl
dHVybiBhICsgYjt9CisKK25vSW5saW5lKGZlKTsKKworZnVuY3Rpb24gYmFyKGEsIGIpIHsKKyAg
ICByZXR1cm4gZmUoYSwgYik7Cit9CisKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGJhcigxLCAyKTsKKyAgICBp
ZiAocmVzdWx0ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLWJpbmQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1iaW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1M2YwOGU5NjZjNzk0Y2JhZjlhZDRhM2FkYjRlOTk3OWMw
MmFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1iaW5kLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBm
b3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcg
aW52b2tlIGJpbmQnKTsKKwordmFyIGQgPSB7CisgIHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0aW9u
KCkgeyByZXR1cm4geiA9PiB0aGlzLnggKyB6OyB9Cit9OworCit2YXIgZSA9IHsgeCA6ICJiYXoi
IH07CisKK3Nob3VsZEJlKCJkLnkoKS5iaW5kKGUsICdsZXknKSgpIiwgIidiYXJsZXknIik7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM4ODhmOTExYmYx
YzQ0ZDM4OWQwYTNkMjE4NDY4MzQ4NGI2Zjk2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxMyBA
QAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxk
IGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgY2FsbCZhcHBseScpOworCit2YXIgZCA9IHsK
KyAgeCA6ICJmb28iLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiAoKSA9PiB0aGlzLng7IH0K
K307CisKK3ZhciBlID0geyB4IDogImJhciIgfTsKKworc2hvdWxkQmUoJ2QueSgpLmNhbGwoZSkn
LCAiJ2ZvbyciKTsKK3Nob3VsZEJlKCdkLnkoKS5hcHBseShlKScsICInZm9vJyIpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVm
YWQwNzY4NDdiZmY0OTI5Zjc4MDc3NjVmOTkwYjczNzNjZGY2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
CkBAIC0wLDAgKzEsNyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rp
b24gbm8gY29uc3RydWN0b3InKTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7
fTsKKworc2hvdWxkVGhyb3coJ25ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCknKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJlNTZhMTU1MzBmMzRjYzMwOGFjZTZiMGZhYTRjZmU3YzFlOTc4YzQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy5qcwpAQCAtMCwwICsxLDY3IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiBsZXhpY2FsIGJpbmQgb2YgdGhpcycpOworCitmdW5jdGlvbiBE
b2cobmFtZSkgeworICB0aGlzLm5hbWUgPSBuYW1lOworICB0aGlzLmdldE5hbWUgPSAoKSA9PiBl
dmFsKCJ0aGlzLm5hbWUiKTsKKyAgdGhpcy5nZXROYW1lSGFyZCA9ICgpID0+IGV2YWwoIigoKSA9
PiB0aGlzLm5hbWUpKCkiKTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZyA9ICgpID0+ICgpID0+ICgp
ID0+IHRoaXMubmFtZTsKK30KKwordmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKK3Nob3VsZEJlKCdk
LmdldE5hbWUoKScsICdkLm5hbWUnKTsKK3Nob3VsZEJlKCdkLmdldE5hbWVIYXJkKCknLCAnZC5u
YW1lJyk7CitzaG91bGRCZSgnZC5nZXROYW1lTmVzdGluZygpKCkoKScsICdkLm5hbWUnKTsKKwor
dmFyIG9iaiA9IHsKKyAgbmFtZSAgIDogJ29iakNvZGUnLAorICBtZXRob2QgOiBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsK
KyAgfQorfTsKKworc2hvdWxkQmUoIm9iai5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidvYmpDb2Rl
LW5hbWUtY29ycmVjdCciKTsKK29iai5uYW1lPSduZXdPYmpDb2RlJzsKK3Nob3VsZEJlKCJvYmou
bWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInbmV3T2JqQ29kZS1uYW1lLWNvcnJlY3QnIik7CisKK3Zh
ciBkZWVwT2JqID0geworICBuYW1lIDogJ3dyb25nT2JqQ29kZScsCisgIGludGVybmFsT2JqZWN0
OiB7CisgICAgbmFtZSAgOidpbnRlcm5hbE9iamVjdCcsCisgICAgbWV0aG9kOiBmdW5jdGlvbiAo
KSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH0KKyAg
fQorfTsKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0
JykiLCAiJ2ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCciKTsKKworZGVlcE9iai5pbnRlcm5h
bE9iamVjdC5uYW1lID0gJ25ld0ludGVybmFsT2JqZWN0JzsKKworc2hvdWxkQmUoImRlZXBPYmou
aW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInbmV3SW50ZXJuYWxPYmplY3Qt
bmFtZS1jb3JyZWN0JyIpOworCit2YXIgZnVuY3Rpb25Db25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgp
IHsKKyAgdGhpcy5mdW5jID0gKCkgPT4gdGhpczsKK307CisKK3ZhciBpbnN0YW5jZSA9IG5ldyBm
dW5jdGlvbkNvbnN0cnVjdG9yKCk7CisKK3Nob3VsZEJlKCJpbnN0YW5jZS5mdW5jKCkgPT09IGlu
c3RhbmNlIiwgInRydWUiKTsKKwordmFyIG93bmVyT2JqID0geworICBtZXRob2QgOiBmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuICgpID0+IHRoaXM7CisgIH0KK307CisKK3Nob3VsZEJlKCJvd25l
ck9iai5tZXRob2QoKSgpID09PSBvd25lck9iaiIsICJ0cnVlIik7CisKK3ZhciBmYWtlID0geyBz
dGVhbCA6IG93bmVyT2JqLm1ldGhvZCgpIH07CitzaG91bGRCZSgiZmFrZS5zdGVhbCgpID09PSBv
d25lck9iaiIsICJ0cnVlIik7CisKK3ZhciByZWFsID0geyBib3Jyb3cgOiBvd25lck9iai5tZXRo
b2QgfTsKK3Nob3VsZEJlKCJyZWFsLmJvcnJvdygpKCkgPT09IHJlYWwiLCAidHJ1ZSIpOworCit2
YXIgYXJyb3dGdW5jdGlvbiA9IHsgeCA6ICJyaWdodCIsIGdldEFycm93RnVuY3Rpb24gOiBmdW5j
dGlvbigpIHsgcmV0dXJuIHogPT4gdGhpcy54ICsgejsgfX0uZ2V0QXJyb3dGdW5jdGlvbigpOwor
dmFyIGhvc3RPYmogPSB7IHggOiAid3JvbmciLCBmdW5jIDogYXJyb3dGdW5jdGlvbiB9OworCitz
aG91bGRCZSgiYXJyb3dGdW5jdGlvbignLXRoaXMnKSIsICcicmlnaHQtdGhpcyInKTsKK3Nob3Vs
ZEJlKCJob3N0T2JqLmZ1bmMoJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3OTkzMWMzZGViY2I1MDI3
YWQxNGZkMTU0N2U1YWJhMDM4YjRiMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCArMSwxMCBAQAor
Ly8gSW5zcGlyZWQgYnkgbW96aWxsYSB0ZXN0cworZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYg
YXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9ycycpOworCit2YXIg
c2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitzaG91bGRCZSgiT2JqZWN0LmdldFBy
b3RvdHlwZU9mKHNpbXBsZUFycm93RnVuY3Rpb24pIiwgIkZ1bmN0aW9uLnByb3RvdHlwZSIpOwor
c2hvdWxkQmUoInNpbXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiIsICJ0cnVl
Iik7CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlv
biIsICJ0cnVlIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFhZjU4ZmM2NTEzZWRhYmRlMWRkNjUwNzQ5NmFlODY0YjYxMWZmZjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAg
LTAsMCArMSwyNiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24g
dGVzdCB0ZHonKTsKKwordmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBleHRl
bmRzIEEgeworICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBpZiAo
YWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7CisgICAg
ICBzdXBlcigpOworICAgIH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQorfTsK
KwordmFyIGlzUmVmZXJlbmNlRXJyb3IgPSBmYWxzZTsKK3RyeSB7CisgICAgIG5ldyBCKHRydWUp
OworfSBjYXRjaCAoZSkgeworICAgIGlzUmVmZXJlbmNlRXJyb3IgPSBlIGluc3RhbmNlb2YgUmVm
ZXJlbmNlRXJyb3I7Cit9CisKK3Nob3VsZEJlKCdpc1JlZmVyZW5jZUVycm9yJywgJ3RydWUnKTsK
KwordmFyIGUgPSBuZXcgQihmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
dHlwZW9mLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlw
ZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYyYWEyNjkwZmRhODJjNmEzMjhlYTBhYmMzNTVkMmQ4YmUzZDQ4
ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi10eXBlb2YuanMKQEAgLTAsMCArMSwxMiBAQAordmFyIGFmMSA9ICgpID0+IHt9Owor
dmFyIGFmMiA9IChhKSA9PiB7YSArIDF9OworCitzaG91bGRCZSgidHlwZW9mIGFmMSA9PT0gJ2Z1
bmN0aW9uJyIsICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0eXBlb2YgYWYyID09PSAnZnVuY3Rpb24n
IiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5cGVvZiAoKCk9Pnt9KSA9PT0gJ2Z1bmN0aW9uJyIs
ICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0eXBlb2YgKChiKSA9PiB7YiArIDF9KT09PSdmdW5jdGlv
biciLCAidHJ1ZSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259148</attachid>
            <date>2015-08-17 07:51:20 -0700</date>
            <delta_ts>2015-08-17 08:14:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817175115.patch</filename>
            <type>text/plain</type>
            <size>180016</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uYTkwN2Y2ZDg4ZDE5NTQ0MjU2ZjNkNzc0NGRhMDQ5
OWVjZmE1ZjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBVTlVT
RURfUEFSQU0oYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZVcoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBv
cGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2
ICsxNjI0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVn
IHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1Q
dHIodWlkKSk7CkBAIC0yMTg4LDYgKzIyMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxl
R2V0U2NvcGUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29t
cGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzNCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQ
UlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9p
ZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVy
ZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNp
emVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZf
dCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9u
KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZh
ZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMzY4Niw3ICszNjg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rp
b25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBj
b21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgICAgIAorCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVu
Y3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIAorCiAgICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZi
YTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcy
OSw3ICszNzI5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwotICAgICAgICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVu
Y3Rpb25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAg
ICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQz
NDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93
RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4
MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2
YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAg
ICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgorICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0
IGFsbG9jYXRlIGdldCB0byBzZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMg
d2Uga25vdwogICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qg
b2JqZWN0IGluIHRoZSBoZWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2
ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQw
MjY1NDFmOTYyZGEwNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdB
cnJvd0Z1bmN0aW9uOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9u
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlv
blN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApp
bmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4
MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52
aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1Njb3BlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4
MzkyMWNmMjRkMzUyNGJjODU3MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3
ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUs
IFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3Ry
dWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5
bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFj
cm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAor
ICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkg
XAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQ
KG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3Vt
ZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3
ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThk
MTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lw
U2NvcGU6CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoK
ICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExv
YWRBcnJvd0Z1bmN0aW9uVGhpczoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFy
Z3VtZW50Q291bnQ6CiAgICAgY2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2
ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0
NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGlu
dDY0LCBpbnRQdHIsIGludDY0LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25f
RUpKLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGlu
dFB0ciwgaW50UHRyKSkgXAorICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rp
b25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhK
X0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwg
aW50MzIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19K
SVRPcGVyYXRpb25fRVosIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4
IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1Mjdk
ZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
RlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0
ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJP
cGVyYW5kc0lubGluZXMuaCIKQEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAg
ICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6
CisgICAgICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tp
cFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAg
ICBBU1NFUlQobV9ub2RlLT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBO
ZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gbV9ub2RlLT5vcCgpID09IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBM
VmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUg
dGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6
IG51bGxwdHI7CisgICAgICAgIAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBtX25vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAg
IGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewot
ICAgICAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3Bl
LCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3Vs
dCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFr
UG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxs
KG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29w
ZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxs
UmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVj
dHVyZSgpCisgICAgICAgICAgICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBz
bG93IHBhdGgiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUo
c2xvd1BhdGgpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0
ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5j
dGlvbgorICAgICAgICAgICAgPyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRl
T2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgp
OworICAgICAgICAKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJh
cnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAg
ICAgICAgLy8gbXVzdCBiZSB5b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZh
c3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3Jl
UHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rp
b25fZXhlY3V0YWJsZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8s
IGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0
LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpT
QXJyb3dGdW5jdGlvbl9zY29wZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAg
IG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fy
cm93RnVuY3Rpb24gPyAgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVh
cHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93
RnVuY3Rpb24pCisgICAgICAgICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmpl
Y3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9v
dXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9u
ID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9u
X3JhcmVEYXRhKTsKICAgICAgICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQg
PSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51
YXRpb24pOwotICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAg
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQpLAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFr
UG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3Vs
dCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZy
YW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3
OCwxMSBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQog
ICAgIAorICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNv
bXBpbGVTa2lwU2NvcGUoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRy
KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAx
NmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZh
NjIwMDEyZDY5MTk2MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSog
YWN0aXZhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+
cHJvcGVydGllcygpW2ldOwogICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0g
UHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAg
ICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1Zh
bHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRp
b24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9j
KSkKICAgICAgICAgICAgICAgICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVl
OjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24o
KSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExv
YykpIHsKKyAgICAgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJvdW5kVGhpcyA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0
aXZhdGlvbik7CiAKLSAgICAgICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwg
YWN0aXZhdGlvbik7CisgICAgICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fy
cm93RnVuY3Rpb24KKyAgICAgICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9u
LCBib3VuZFRoaXMpCisgICAgICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwog
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2Jk
NmM5MTAwYjQwNGZmMWVkNWUxOWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZj
ODAyYjljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
aW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUz
MzYyZTc5ODViNGJlMDRjN2VmNTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZp
bmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJy
b3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7CiAgICAgY2xhc3MgVk07CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNz
IEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
aW5kZXggNWZhNmI1MzYyZGU5ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uMzBiYWFhNTg4
YjQxOGI3ZGM2MzM1NTgzYTkyZmMzZjMxMDhlZjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVu
Y3RvcihHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdH
UFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVz
ZWQgdG8gc29ydCBhcmd1bWVudHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8g
T24gWDg2IHdlIHVzZSBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBh
cmd1bWVudHMgb24gdGhlCiAgICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2Ug
bWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMgaW50byB0aGUKQEAgLTIwOSw2ICsyMDgsMTQgQEAgcHVi
bGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgfQogCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVnIGFyZzEsIFRy
dXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCiAgICAgewogICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTk1NSw2ICs5NjIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAg
CiAjZWxpZiBDUFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICsxMDA2LDcgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CiAgICAgfQotCisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiwgRlBSUmVn
IGFyZzQpCiAgICAgewogICAgICAgICBtb3ZlRG91YmxlKGFyZzQsIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CkBAIC0xMDA3LDYgKzEwMTUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjZWxzZQorCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQogICAgIHsK
ICAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgYXJnMSk7CkBAIC0xMTI4LDcgKzExMzcsNyBAQCBwdWJsaWM6CiAjZWxz
ZQogI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgot
CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcx
KQogICAgIHsKICAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpAQCAt
MTIyNyw2ICsxMjM2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlVyhHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0
ciBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tNjQg
YXJnMikKICAgICB7CkBAIC0xNDcwLDcgKzE0ODYsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2Ug
bWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92
aWRlcyBmb3IKICAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFSTXY3
LgogI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAotCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHBva2UoYXJn
NCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwpAQCAtMTUzNSw2ICsxNTUwLDEzIEBAIHB1YmxpYzoK
ICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGVXKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQ
UlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQUjxHUFJJbmZvOjph
cmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAg
IG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisgICAg
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMsIFRydXN0ZWRJ
bW02NCBhcmc0KQogICAgIHsKICAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNF
VCk7CkBAIC0xODk4LDYgKzE5MjAsMTMgQEAgcHVibGljOgogI2VuZGlmIC8vIE5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlMgPT0gNAogCiAjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyA+PSA1CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZVcoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgewor
ICAgICAgICBzZXR1cFR3b1N0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKICAgICB2b2lkIHNldHVwU3R1
YkFyZ3VtZW50czEzNChHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAg
IHsKICAgICAgICAgc2V0dXBUaHJlZVN0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjQ+KGFyZzEsIGFyZzMs
IGFyZzQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDAzOGY1ZDdkYmMwNmFmODEw
ZjcxYTdkNDI0MGQ3ZmYyZWJhNDBlYjQuLmJiYzg1MjNmNWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2
NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxOSw2ICsyMTksNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF9lbmQpCiAgICAgICAgIERFRklORV9PUChvcF9lbnRlcikKICAgICAgICAgREVGSU5FX09QKG9w
X2dldF9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlz
KQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxs
KQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKQEAgLTI1OSw2ICsyNjAs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAg
ICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9u
ZXdfYXJyb3dfZnVuY19leHApIAogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAg
ICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHApCiAgICAgICAgIERFRklORV9PUChvcF9ub3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4NDExYTdlZjY1YTljNmJkY2MxNmIzNjRlYjI4
ZTQxMDE2YjU4NTg2Li43NzFmZDliNDA2NWJkZDE3MjJjMGU3MmI4ODcyMDhlYzYyZjFlNDRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5OCw2ICs0OTgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9z
Y29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VxKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKQEAgLTUzOSw2ICs1NDAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZm
ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3Bfbm90KEluc3RydWN0aW9uKik7CkBAIC02NTMsNiArNjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWdu
ZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAg
ICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsK
ICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29s
IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCk7CiAgICAgICAgIHZvaWQg
ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50IHNjb3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1
cmVTbG90KTsKQEAgLTcyMyw2ICs3MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpCeSwgaW50
LCBHUFJSZWcsIEdQUlJlZywgQnlWYWxJbmZvKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzYywgR1BSUmVnKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQywg
aW50LCBHUFJSZWcsIEpTQ2VsbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgaW50LCBHUFJSZWcsIEpTQ2VsbCosIEdQ
UlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRP
cGVyYXRpb25fRUpzY1osIEdQUlJlZywgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIGludCwgR1BSUmVnLCBp
bnQzMl90KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAppbmRleCA1ZDY4NjkwMDgxYzk5NmQ3ZTMzYmYzYmQyNWRjYzU4YjAzMGY3ZDZjLi5m
YmFiMmNjMGYzOTcyNDk1NmJmNTg0OTFiM2RlNzgzYTZmY2RjMjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjcxLDYgKzI3MSwxMiBAQCBBTFdBWVNfSU5MSU5F
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
SnNjQyBvcGVyYQogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNW
YWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVy
YXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQor
eworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNl
bGwpLCBhcmcyKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOworfQorICAgIAogQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3Bl
cmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2ludGVyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU5OGQ0ZWM5OWMxZDE4ZTZjMzk2MjExOTcyMGFjZWFj
MWVlMmZhNmQuLmM4M2JjYzhjNDVkZTY2NmY3M2M5ZTkxMWY1MTQyOWYzNWViMTEzNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaCIKQEAgLTY3Myw2ICs2NzQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3Bl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QwKTsKICAgICBlbWl0
U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQorICAgIAordm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9h
cnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSks
IHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05
NjIsMjYgKzk3MSw0NSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21t
b24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4
cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG9wY29kZUlEID09
IG9wX25ld19hcnJvd19mdW5jX2V4cDsKKyAgICAKICAgICBKdW1wIG5vdFVuZGVmaW5lZFNjb3Bl
OwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5k
LCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2g2NChOb3RFcXVhbCwgcmVn
VDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKICAgICBz
dG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBBZGRy
ZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAjZWxzZQog
ICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
MCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdExvYWRQYXlsb2FkKGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAgICBub3RVbmRlZmluZWRT
Y29wZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKICAgICBlbWl0
U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICNlbmRpZgotCiAgICAgSnVtcCBkb25lID0ganVt
cCgpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlLmxpbmsodGhpcyk7Ci0KLSAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1
bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhwcik7CisgICAgICAgIAorICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVu
Y3Rpb24sIHJlZ1QxKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAgICBkb25lLmxpbmsodGhpcyk7
CiB9Ci0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihj
dXJyZW50SW5zdHJ1Y3Rpb24pOworfQorICAgIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOTFjMDBlM2ZkNDVlMDk3ZTNiYjFjMzc5ZDdjOTAz
ZjBmZDYyMDk5YS4uYjM5YWUxZDFhMzA2ODAzNDNlOWZkOWE3MjMxNDI5YjZlNTQ0MTBhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpJVElubGluZXMu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTkyMiw2ICs5MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0
b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1
bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1Qw
KTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQorCiB2b2lkIEpJVDo6ZW1pdF9v
cF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGlu
dCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYjVmOWUzNjlhN2U1N2JhZmYw
NDZkMmEzNjVkYmMwMjRjZGNkYjkzYi4uNGZmMGUzZDE1MGI0MjYwZWY5NGIyMWUzY2JhMGYyMzEy
ZmI0MzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTk0Miw2ICs5NDMsMzAgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CiB9CiAKK0VuY29k
ZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4
ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCit7CisgICAgQVNTRVJUKGZ1bmN0
aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgICAgICAK
KyAgICBKU0Fycm93RnVuY3Rpb24qIGFycm93RnVuY3Rpb24gID0gaXNJbnZhbGlkYXRlZAorICAg
ICAgICA/IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9u
V2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKQorICAgICAgICA6IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIAorICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXJyb3dGdW5jdGlvbik7Cit9CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCog
ZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0
dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cit9CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3Bl
KiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2Nv
cGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7Cit9CisKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggM2Q4M2Y1OTBkY2Y5MTgwM2EzNDQ4
YmEwODNiMmY5MmJjYmU4NGY5Yi4uYTY3Y2FhY2IzMmZiMjE1OGE5YzA1ZTZhNTA5NjIxYjNiODNl
OGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTEy
Miw2ICsxMjIsNyBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJ
VE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2bwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBTKShFeGVjU3RhdGUqLCB2b2lk
Kiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklU
T3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKc2NDKShFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKik7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQ0opKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKX0pJVE9wZXJhdGlvbl9FU1MpKEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6ZV90KTsKIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lDSSko
RXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1w
bCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
LCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAtMjg4LDYgKzI4OSw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXJXaXRoUHJvZmlsZShFeGVjU3Rh
dGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBF
bmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdP
YmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwgdm9pZCopIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYW5kbGVXYXRjaGRvZ1Rp
bWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmQ0Njc3YzY2NTU3
YmJjYzVlNGQxMDllZjliMDEzOGQ5YTgzZjFlYy4uYTJhNmIyYjExYzU2ODFlMGI2ZTk3MGM0ZmQx
MWM5NmUxOWRiOTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJWTS5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTViODFlZTBmNzhmYTdhZDlh
MjBkY2Q0NzY4MTJiNDFmNTY4NWQ3Zi4uMmNkOWY2ZWI4ZDY4Mzg2ODcwOTdjNGVjY2U3OTIxNTkx
NTEwMWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNBcnJv
d0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMTcxLDcgKzE3Miw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgICAgICBFeGVjU3RhdGUq
IF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQotCisgICAgCiBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElO
VF9CRUdJTigpOwpAQCAtMTAxMywxMiArMTAxNCwyNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmV3X2Z1bmMpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1
bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CisgICAgCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVu
Y2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5v
cGVyYW5kKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBm
dW5jdGlvbiwgc2NvcGUpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNv
ZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CiAgICAgCi0gICAgTExJTlRf
UkVUVVJOKGZ1bmMpOworICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4
ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfYXJyb3dfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVu
Y2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51
Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVSTihKU0Fycm93RnVuY3Rpb246OmNyZWF0
ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1
Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpA
QCAtMTA5Niw3ICsxMTA5LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwo
RXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGUKICAgICBKU1Njb3Bl
KiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKTsKICAgICBWTSYgdm0gPSAqc2NvcGUt
PnZtKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFi
bGUoKTsKLSAgICAKKwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rp
b24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5k
ZXggOGNjNjlhOTYwMGJiZjlkODUzMzlkNjA5NTk1ZjY3YzY4ZDA3NjcxYi4uM2YxZGFhODEyYjcw
MmUyM2M2YWFlZjlmZDdjMDY3MWVlMjAyNWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTk3LDYgKzk3LDcgQEAgTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hhcik7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
b25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zaXplX2Zy
YW1lX2Zvcl92YXJhcmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjOTEwNjE3ZWQ4MzRiNzRjOWYyZjhlZTRiMjY4
N2M4YjljZmUzYzdjLi43M2ZjNTg4NDQyZGRjNGI5Y2ZhN2I4OGYwMDRjYTg2NzNlNDk5YTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0xMTgzLDYgKzExODMsMTAgQEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCiAgICAgZGlzcGF0
Y2goNCkKIAorX2xsaW50X29wX25ld19hcnJvd19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhw
KQorICAgIGRpc3BhdGNoKDUpCiAKIF9sbGludF9vcF9jYWxsOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZTkwZWNlZGZhNzMwOTgyZmVlZjcxZWViMGNlYTY0Mzgy
MzRhNjkxYy4uN2VmNmI4N2MxNzBhZDA4M2IxZjUyOWRhODgzNmMwMGNkYTY0YjQ3OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTIzNzMsMyArMjM3MywxMiBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBl
OgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2goNikKKworX2xsaW50X29wX2xv
YWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgSlNBcnJvd0Z1bmN0aW9u
OjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQor
ICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDk0NTVmNzVjN2I2NjQyZmI4Yzg3MjNmYzE1
MmEzNzkwOTEwM2I1Yi4uZDIxNTJhMmYyNzdhZGU1ODc5NzZhMWMzZjEyMDIzNzI5YjM4YTU5YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KQEAgLTIyMjYsMyArMjIyNiwxMSBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBl
OgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2goNikKKworX2xsaW50X29wX2xv
YWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBD
YWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBKU0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3Qw
XSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggN2I1ODc3MzBh
NmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5NGE2Ny4uODA2ZGI1MjMwM2Q1YWQzYTcxODgxMjlm
ODhiZDc2NGM2YjUwZWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTM2MSwxOSArMzYxLDE5IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0
aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwg
aW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0
LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBT
b3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3Rh
cnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAg
ICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBh
cmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3Ry
dWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICB9
CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxk
ZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgeworICAgICAgICB1c2VzVGhpcygpOwogICAgICAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbklu
Zm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFy
dExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pOwotCi0gICAgICAgIEZ1bmNFeHBy
Tm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24s
ICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAg
IEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFycm93RnVu
Y0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5
LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5m
by5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwg
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3Rv
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmlu
ZGV4IGFiYjcyYTc0ZTEyODg0OGVhOGI0M2ZkODYzNjk3NGNiOTk3YzM3ZGIuLmJkYzFiZWU3Nzg0
NDg3MmFhNjI0ZDQ0M2JjYmExOTY5M2FkYmQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC04OTAsMTMgKzg5MCwxOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVu
Y0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlKQorICAgIAorICAgIGlubGluZSBCYXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVu
Y0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKICAgICB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZp
bmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKICAgICB9CiAK
KyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgIDogQmFz
ZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1fbWV0YWRhdGEsIHNvdXJjZSkKKyAgICB7
CisgICAgfQorCiAgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9tZXRhZGF0YShtX21l
dGFkYXRhKQpAQCAtOTA0LDYgKzkxMCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbV9t
ZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9u
KTsKICAgICB9CiAKKyAgICBpbmxpbmUgQXJyb3dGdW5jRXhwck5vZGU6OkFycm93RnVuY0V4cHJO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21l
dGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lO
VEFYKQogICAgIGlubGluZSBDbGFzc0RlY2xOb2RlOjpDbGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0RlY2xhcmF0aW9uKQog
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCmluZGV4IGNmNGZlNDUwYTkyNDk1MDRmMzBiYTg1YTI2NGU2N2JhYTlhNTVj
OTYuLjE4Zjg0NTUzMzA1YzRhMGMyMWM3MzM4ODM5YzI5ZjIzYzc0ZGU5MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRnVuY3Rpb25N
ZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgIFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFy
dCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBtb2RlKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0
YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikK
QEAgLTE2Myw2ICsxNjMsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0
YU5vZGUoCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJp
Y3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5k
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQorICAgICAgICAsIG1faXNB
cnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDFkNmIwM2Q3NzY2Mjk3YWUxNzU5M2Ji
YTlhZWM1NjA5MzI5MzBjMmQuLjg3MzY2OGVjMzdiNDI3YjkyMDY0OWRlMzA2ODM4MWUyY2Q4YTE1
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE2NSw2ICsxNjUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2Rl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRGVzdHJ1
Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUFycmF5KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTE4MDksNyArMTgxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUGFy
c2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1
bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSk7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJz
ZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNp
bmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwog
ICAgICAgICAKQEAgLTE4MzUsNiArMTgzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBp
bnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsg
fQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
U3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2lu
ZCk7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QXJyb3dGdW5jdGlvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGlu
ZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNl
dCkKICAgICAgICAgewpAQCAtMTg2MCw2ICsxODYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0lu
U3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDog
MjsKKyAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgIH07CiAKICAg
ICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKQEAgLTE4ODks
MTggKzE4OTIsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29s
dW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgeworICAgIGNsYXNzIEJhc2VGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNv
dXJjZUNvZGUmKTsKKyAgICAgICAgQmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKCkgeyBy
ZXR1cm4gbV9tZXRhZGF0YTsgfQogCisgICAgcHJvdGVjdGVkOgorICAgICAgICBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICB9OworCisKKyAgICBjbGFzcyBGdW5jRXhwck5v
ZGUgOiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBGdW5j
RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1
bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OwogCi0g
ICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhOworICAgIGNsYXNzIEFycm93
RnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworCisgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIH07CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhZWU3MGI2YTczMjliYzExYjVjZTcz
ZDUzNTJkMzEzZTIyYTI3YmUxLi5mNTA4MTRlN2IxNDJhYjUzMDBkODRhNGI3MDE5ZjljOTg0ZTJi
MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNTQ2LDEx
ICsxNTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9k
eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgVHJlZUJ1aWxkZXImIGNv
bnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29s
dW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50
IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
RnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBGdW5j
dGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwogICAg
IGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIHx8IGJvZHlUeXBlID09
IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAo
bWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRv
a2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFy
c2VNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1v
ZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NjIsNyArMTU2
Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxzZQogICAgICAgICBmYWlsSWZG
YWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9k
ZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJv
dyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0
b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNv
bnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2lu
ZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKIH0KIAogc3Rh
dGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9k
ZSkKQEAgLTE3MzcsNyArMTczOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9v
bCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgfQog
ICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENv
bnN0cnVjdG9yS2luZDo6Tm9uZTsKLQorICAgIAogICAgIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRD
b2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMg
ZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhl
IHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KQEAgLTE3NTYsMTEgKzE3NTcsMTMg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0
T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0IDoKICAgICAgICAgICAgIGVu
ZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9u
LmxpbmVTdGFydE9mZnNldDsKLQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24gPSBwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZTsKKyAgICAgICAgCiAgICAg
ICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAog
ICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5
U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAg
Y2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJh
bWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBj
b25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93
RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21T
b3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlv
blNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE3NzQsNyAr
MTc3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIG1fbGV4ZXItPnNldExp
bmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8u
ZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYg
KHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQorICAgICAgICBpZiAoaXNBcnJv
d0Z1bmN0aW9uKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8tPmlz
Qm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBBcnJv
d0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbkJv
ZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggMDc2MGMxOWViMTYzNmRiMjFhMTc5NjEy
YTU0OTZlMTljZmQxYmIwNy4uZGM1NjFmOWIxYTZkYTM2NDNiODI3MmZlN2IxMmUyMTVlNDRmNDJj
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAg
LTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNz
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1
cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlv
bkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5
bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1
bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9Cisg
ICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0
cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVu
Y3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlv
bkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5
bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5j
dGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsg
cmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAppbmRleCAwYWIxNjcyMTE2ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNm
YTE3Yjc5Li45ZGM2OTRmMjdhNDU4NzNiMmEyMTY3YTM2OTYzNWQzZTU5NDVhYmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjM2LDggKzIz
Niw3IEBAIFJlZlB0cjxDb2RlQmxvY2s+IFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zv
cigKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1
Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9m
aWxlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJv
ZmlsZXJPZmY7CiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2sgPQotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2Nr
Rm9yKAotICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdn
ZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2Vk
RXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQs
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1
bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNlKGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRh
YmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0YXJ0Q29sdW1uKCks
IGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewogICAgICAgICBl
eGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmNlMjQyOGNiYzEwMWRkYTZjYjEwMWQ3MGJmMDI3Zjdl
MGVhM2RmMC4uY2YyYmRlODhjNWE2ZTkxNjc2MDM2ZWUyN2Q3NDRmNzY0NTM5Y2M0YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDc0LDcgKzQ3NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0
aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2
YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJl
ck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1i
ZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTMwLDcgKzUzMCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUp
OyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYzMyw2ICs2MzMs
NyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGlu
RnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0K
KyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0Nv
bnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmll
ciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVk
TmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1
bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFjMjYwZTE2YTIwZTJiODQwOWFlYmI5YTJlNTlkYjli
M2RmNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJvd0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9w
ZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6c19pbmZvID0geyAiQXJyb3dGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBcnJvd0Z1bmN0aW9uKSB9Owor
Cit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3Rh
dGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2VsbCktPkpTQXJyb3dGdW5jdGlvbjo6fkpTQXJy
b3dGdW5jdGlvbigpOworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9uKiByZXN1bHQgPSBj
cmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICBleGVjdXRh
YmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgcmVzdWx0LCAiQWxsb2Nh
dGluZyBhbiBhcnJvdyBmdW5jdGlvbiIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQXJy
b3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgOiBCYXNl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0
aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhpcyh2bSwgdGhpcywgYm91bmRUaGlzKQor
eworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEFT
U0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5oYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7
Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Ym91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBKU0Fycm93RnVuY3Rpb246OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7CisgICAgcmV0dXJuIENvbnN0cnVj
dFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y1NmY2OGVmZWVk
ZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmluZSBKU0Fycm93RnVuY3Rpb25faAorCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOworICAgIAorY2xhc3Mg
SlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRp
dmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBm
cmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisK
KyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisgICAgCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3Qg
aW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFj
aXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTQXJyb3dGdW5j
dGlvbik7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rpb24qIGNyZWF0ZUlt
cGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3Bl
LCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICB7CisgICAgICAgIEpTQXJyb3dGdW5jdGlvbiogZnVu
Y3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Fycm93RnVuY3Rpb24+KHZtLmhl
YXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOwor
ICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7Cisg
ICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBmdW5j
dGlvbjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisKKyAgICBKU1ZhbHVlIGJvdW5kVGhpcygp
IHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9CisgICAgCisgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9u
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
aW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dGdW5jdGlvbiwgbV9ib3VuZFRoaXMpOworICAgIH0K
KyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCitwcml2YXRlOgorICAgIEpTQXJy
b3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsK
KyAgICAKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAorICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiBtX2JvdW5kVGhpczsKK307CisgICAgCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQXJyb3dGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMGI4N2Q3NWM5MTQ1MGM1YWYxYWFlZDI3
YTYxYTc0OGVmODBmMDkzZS4uOTI4MzUwZTI0NzhjNDVmN2JmN2U4YWE4NGM5ZWMzYTRlMjUyYTg2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTQx
LDYgKzE0MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0
aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIEpTRnVuY3Rpb24o
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CiAKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAppbmRl
eCBmNmM2ZDU4ZWM2ZTVjMTE2NGNiMjdmYTVlNDE2MThiNGI4MTQyZjAyLi5mMDU5NTg0Y2YwN2Q3
ZmQ2OWVhMmRjZmUyN2I2M2I2NDRhODg0NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTQ0LDYgKzQ0LDEzIEBAIGlubGlu
ZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzCiAgICAgLCBtX3JhcmVEYXRhKCkKIHsKIH0KKyAgICAKK2lubGlu
ZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNl
KHZtLCBzY29wZSwgc3RydWN0dXJlKQorICAgICwgbV9leGVjdXRhYmxlKHZtLCB0aGlzLCBleGVj
dXRhYmxlKQorICAgICwgbV9yYXJlRGF0YSgpCit7Cit9CiAKIGlubGluZSBGdW5jdGlvbkV4ZWN1
dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2VlOWJiZDk0
MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFkMDQyMy4uZGExYWMyNWFhYjAwODYyY2Q1MzczMGY5
YTVhZDEyNWEyZGMwZmYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC0yNTksNiArMjYwLDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZXhlYy0+c2V0Q2FsbGVlKG1f
Z2xvYmFsQ2FsbGVlLmdldCgpKTsKIAogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIG1fZnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFtZU9mZnNldCkpOwogICAgIG1faW50ZXJuYWxGdW5j
dGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwpAQCAtNzk1LDYgKzc5
Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9j
YWxsZWVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0
aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZ1
bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJv
d0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9u
YW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCA5OTg2YmNmNjI0NWUyY2M0NjgyMGIxMzEwMmIyMzQyOTAw
ZWMzZDdiLi5iZDEyYjI5MzA1NWU5YmFlMzBiYjczZmQ5MDE1YmMwMDM4MzYzYzY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2
ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxs
ZWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1
cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsK
ICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwpAQCAtNDYyLDYgKzQ2Myw3IEBA
IHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxlZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGVlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5k
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBQcm9wZXJ0eU9mZnNldCBm
dW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsg
fQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3Ny
ZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0
LXZhbHVlLXRkei1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWUzYTY2ZWE5MmYwMzBkYjM3NzlhNGMz
ZTQwMmU3YzExOGQxZDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1
bHQtdmFsdWUtdGR6LWVycm9yLmpzCkBAIC0wLDAgKzEsNDYgQEAKKyJ1c2Ugc3RyaWN0IjsKKwor
dmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBzaG91bGRUaHJvd1REWihmdW5jKSB7CisgICAg
dmFyIGhhc1Rocm93biA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUubmFtZS5pbmRleE9mKCJSZWZlcmVuY2VFcnJvciIp
ICE9PSAtMSkKKyAgICAgICAgICAgIGhhc1Rocm93biA9IHRydWU7CisgICAgfQorICAgIGlmICgh
aGFzVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRpZCBub3QgdGhyb3cgVERaIGVy
cm9yIik7Cit9CisKK2Z1bmN0aW9uIGJhcihmKSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAg
ICBsZXQgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gICh4KSA9PiB7IHJlc3VsdCA9IHg7IHJl
dHVybiB0ZHpQZXJwZXRyYXRvcjsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsK
KyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICAgICAgcmV0
dXJuIHRkelBlcnBldHJhdG9yOworICAgICAgICB9CisgICAgfQorICAgIGxldCB0ZHpQZXJwZXRy
YXRvcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUo
Zm9vKTsKK25vSW5saW5lKHNob3VsZFRocm93VERaKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBu
OyBpKyspIHsKKyAgICB2YXIgYm9vbCA9ICEoaSAlIDEwMCk7CisgICAgaWYgKGJvb2wpCisgICAg
ICAgIHNob3VsZFRocm93VERaKCgpPT4geyBmb28oYm9vbCk7IH0pOworICAgIGVsc2UgeworICAg
ICAgICB2YXIgcmVzdWx0ID0gZm9vKGJvb2wpOworICAgICAgICBpZiAocmVzdWx0ICE9IDApCisg
ICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5r
LW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDFiYmUxNDAyNDE0ZGIyNmM2
YjdmZDQwMWZiMGU5YzY1YTRiYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0
LWRlZmF1bHQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBAQAordmFyIG4gPSAxMDAwMDAwOworCitm
dW5jdGlvbiBiYXIoc2V0KSB7CisgICAgdmFyIHJlc3VsdCA9IHNldCgwKTsKKyAgICBpZiAocmVz
dWx0ICE9PSB2b2lkIDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgcmVz
dWx0OworfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZh
ciBpbVVuZGVmaW5lZDsKKyAgICB2YXIgYmF6OworICAgIHZhciBzZXQgPSAgKHgpID0+IHsKKyAg
ICAgICAgcmVzdWx0ID0geDsKKyAgICAgICAgaWYgKGJheiAhPT0gNTApCisgICAgICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGJhejsKKyAgICAgICAgcmV0dXJuIGltVW5kZWZp
bmVkOworICAgIH07CisgICAgYmF6ID0gNTA7CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhp
dCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5s
aW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykg
eworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAw
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
YWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmU0MzdhZjdiMmMyYWQzNDVlMjZjMjAzNzc4OTBkZjVmMzFmYWYwNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1h
Y3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCwwICsxLDI1IEBACit2YXIgbiA9IDEwMDAw
MDA7CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciBy
ZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geyByZXN1bHQgPSB4OyB9CisgICAgaWYg
KGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAg
YmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7
CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NmE3OWVjOWVhYTY1YzU0MTkzMGI5MDQ4MjZlN2EyM2ExM2ZiMmVhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgbiA9IDEwMDAwMDAw
OworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEwKTsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAg
IHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSB4ID0+IHsgcmVzdWx0ID0geDsgfQorICAg
IGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVzdWx0ICE9IDEwKQor
ICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9J
bmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVz
dWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkyMDMyMDg4YWJmMjZkYWUyYWU3MWEyYWM0YzA1ZDRmMDc3NTVlNDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tYm91bmQuanMKQEAgLTAsMCArMSwxOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24g
KGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
IHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBi
dXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIgZCA9IHsKKyAgeCA6ICJi
YXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH0KK307CisK
K25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKworZm9yICh2YXIgaT0w
OyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC55KCkuYmluZChlLCAibGV5IikoKSwgImJh
cmxleSIsICJFcnJvcjogZnVuY3Rpb24gYmluZCBzaG91bGRuJ3QgY2hhbmdlIGxleGljYWwgYmlu
ZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjg3N2UwYWQ5YzgzYWM1M2E3ZjZkMzUxOTYyMzIxNGMxZTlmYzYwZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1j
YWxsLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWws
IGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAg
dGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAn
IiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwKKyAg
eSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9Oworbm9JbmxpbmUoZC55
KTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7aSsr
KXsKKyAgICB0ZXN0Q2FzZShkLnkoKS5jYWxsKGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBj
YWxsIHNob3Vsbid0IGNoYW5nZSB0aGUgbGV4aWNhbCBiaW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5j
dGlvbiIpOworICAgIHRlc3RDYXNlKGQueSgpLmFwcGx5KGUpLCAiZm9vIiwgIkVycm9yOiBmdW5j
dGlvbiBhcHBseSBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNWJlYjU1N2Q3OTQ5YmM2YjJjNzhhYjQ2NTllYThjMmFjNjNkZTYyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNv
bnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsMjIgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rp
b24gPSAoKSA9PiB7fTsKKworbm9JbmxpbmUoc2ltcGxlQXJyb3dGdW5jdGlvbik7CisKK3ZhciBl
cnJvck9uQ3JlYXRlID0gZmFsc2U7CisKK2ZvciAoaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0cnkg
eworICAgICAgIHZhciBmYyA9IG5ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCk7CisgICB9CisgICBj
YXRjaCAoZSkgeworICAgICBlcnJvck9uQ3JlYXRlID0gdHJ1ZTsKKyAgIH0KKworICAgIHRlc3RD
YXNlKGVycm9yT25DcmVhdGUsIHRydWUsICJFcnJvcjogTm8gZXhjZXB0aW9uIGR1cmluZyBydW4g
bmV3IEFycm93RnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNmYWIyNGM5MWJjNTdjOTU4NzYzMmRmZWM5YTRjOTM3
OThlMjE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCkBAIC0wLDAgKzEsMTkg
QEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4
cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAg
fQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhp
cy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7CisgIHRoaXMuZ2V0TmFtZUhhcmQg
PSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7Cit9CisKK25vSW5saW5lKERvZykK
KworZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkrKykgeworICB2YXIgZCA9IG5ldyBEb2coIk1heCIp
OworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxl
eGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworICB0ZXN0
Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3ZGIzMDNj
ZGZlM2QxNWRhNDVjODE2NGU0OGQwM2E2N2ViOTJhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy0yLmpzCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1
YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7Cisg
ICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdh
cyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3Ig
PSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5z
dGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCit0ZXN0Q2FzZShpbnN0YW5jZS5m
dW5jKCkgPT09IGluc3RhbmNlLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCit2YXIgb2JqID0gewor
ICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4gdGhpczsKKyAgfQorfTsK
Kworbm9JbmxpbmUob2JqLm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoKSA9PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRo
aXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAj
MyIpOworfQorCit2YXIgZmFrZSA9IHtzdGVhbDogb2JqLm1ldGhvZCgpfTsKK25vSW5saW5lKGZh
a2Uuc3RlYWwpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENh
c2UoZmFrZS5zdGVhbCgpID09PSBvYmosIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNh
bGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM0Iik7Cit9CisKK3ZhciBy
ZWFsID0ge2JvcnJvdzogb2JqLm1ldGhvZH07Citub0lubGluZShyZWFsLmJvcnJvdyk7CisKK2Zv
ciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShyZWFsLmJvcnJvdygp
KCkgPT09IHJlYWwsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMTkwODZkNTg0NzljNGJkNGZl
MGY1MjdiM2E3YmI4OTM5YzA5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpA
QCAtMCwwICsxLDI4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3Rl
ZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1l
c3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1
YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsgbmFtZTonb2JqJywgbWV0aG9kOiBm
dW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFs
dWU7IH19OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmou
bWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0
cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykg
eworICB2YXIgcmVzdWx0MSA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOwor
ICB0ZXN0Q2FzZShyZXN1bHQxLCAnb2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICMxIik7Cit9CisKK29iai5uYW1lPSduZXdPYmonOworCitmb3IgKHZhciBpPTA7IGk8MTAw
MDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygp
KSwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQor
Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MiA9IG9iai5tZXRo
b2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQyLCAnbmV3T2Jq
LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5
IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtNC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1YmQzNjNlNGU0
NmIwMmQyZjE5YmJlMzg1MDJmNTI4MjMzYTlmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtNC5qcwpAQCAtMCwwICsxLDI2IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFs
LCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAg
IHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMg
JyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsKKyAgbmFtZTonb2Jq
JywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFsT2JqZWN0JywKKyAg
ICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1u
YW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9OworCitub0lubGluZShvYmouaW50ZXJuYWxPYmplY3Qu
bWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShv
YmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ2ludGVy
bmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3Qg
bGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisK
K29iai5pbnRlcm5hbE9iamVjdC5uYW1lPSduZXdJbnRlcm5hbE9iamVjdCc7CisKK2ZvciAodmFy
IGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1l
dGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICduZXdJbnRlcm5hbE9iamVjdC1uYW1lLXRl
c3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10
aGlzLTUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzU0OTRjZTZiNjZkYjBhN2Vi
NDNkY2M4M2VjMWVhY2U2Mjg3NTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMK
QEAgLTAsMCArMSw0OCBAQAordmFyIHNvcnRlZFZhbHVlczsKKwordmFyIHRlc3RDYXNlID0gZnVu
Y3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCAr
ICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7
CisgIGFycjogWzEsIDQsIDYsIDMsIDcsIDBdLAorICBidWJibGVTb3J0OiBmdW5jdGlvbiAoKSB7
CisgICAgcmV0dXJuICgpID0+IHsKKyAgICAgIHZhciB0bXA7CisgICAgICB2YXIgYXIgPSB0aGlz
LmFyci5zbGljZSgpOworICAgICAgdmFyIF9sZW5ndGggPSBhci5sZW5ndGgKKyAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgX2xlbmd0aDsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGogPSBpOyBq
ID4gMDsgai0tKSB7CisgICAgICAgICAgaWYgKChhcltqXSAtIGFyW2ogLSAxXSkgPCAwKSB7Cisg
ICAgICAgICAgICB0bXAgPSBhcltqXTsKKyAgICAgICAgICAgIGFyW2pdID0gYXJbaiAtIDFdOwor
ICAgICAgICAgICAgYXJbaiAtIDFdID0gdG1wOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgcmV0dXJuIGFyOworICAgIH0KKyAgfQorfTsKKworbm9JbmxpbmUob2JqLmJ1
YmJsZVNvcnQpOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIG9iai5hcnIg
PSBbMSwgMiwgNCwgNiwgMywgNywgMF07CisgICAgdGVzdENhc2Uob2JqLmJ1YmJsZVNvcnQoKSgp
Lmxlbmd0aCwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKworICAgIHZhciBzb3J0ZWRWYWx1ZXMgPSBvYmou
YnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzBdLCAwLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjNiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1s2XSwgNywgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzciKTsK
KworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgNSwgOCwgMjEsIDE5LCAwXTsKKworICAgIHRl
c3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgsIDksICJFcnJvcjogdGhpcyBpcyBub3Qg
bGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM4Iik7CisKKyAg
ICBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29ydGVk
VmFsdWVzWzFdLCAxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTIiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNb
OF0sIDIxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjMTMiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQxN2JjN2M4ZjE4MDUzNThiZGJhODViMmNlZjZh
NjliNWY0MWVjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCkBAIC0wLDAgKzEs
MjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAg
dGhpcy5nZXROYW1lID0gKCkgPT4gIHRoaXMubmFtZTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZ0xl
dmVsMSA9ICgpID0+ICgpID0+IHRoaXMubmFtZTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVs
MiA9ICgpID0+ICgpID0+ICgpID0+IHRoaXMubmFtZTsKK30KKwordmFyIGQgPSBuZXcgRG9nKCJN
YXgiKTsKKworbm9JbmxpbmUoZC5nZXROYW1lKCkpOworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGlu
Z0xldmVsMSgpKCkpOworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSk7CisK
K2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQu
bmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgp
KCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lTmVzdGluZ0xl
dmVsMigpKCkoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1h
Y3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWQxMGEzMWQ2NzMxYWU2OTc0ZDY2N2VkOGQyNDg3MGI1ZDUzMWY2NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAs
MCArMSwzNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRleHQgPSB7CisgIGlk
IDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZv
byhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICh4KSA9PiB7CisgICAg
ICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhp
cyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0
aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAgICByZXN1bHQgPSB4
OworICAgIH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChi
KSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9J
bmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVz
dWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAh
PSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5r
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNhNDMwNjM3Yzg1YmY5NDIxYWU5Yzk3ZTBkZDdmNmNkMTM1YzQzOTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDM4
IEBACit2YXIgbiA9IDEwMDAwMDAwOworCit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3
LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBiYXIoZikgeworICAgIGlmICh0aGlzID09IG5ld0Nv
bnRleHQpCisgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIG5lc3RpbmcgZnVuY3Rpb24n
OworICAgIGYoMTApOworfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAw
OworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAgcmVzdWx0ID0geDsKKyAgICAgIC8vIENo
ZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5l
d0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdX
cm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uJzsKKyAgICB9OworCisgICAgaWYgKGIpIHsK
KyAgICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMTApCisgICAgICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28p
OworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28u
Y2FsbChuZXdDb250ZXh0LCAhKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91
YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OWUwMjcxMzljMTY2N2UxMDY5YmFiZDI5NWE2
ZDdmYzBiOWU0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFs
bG9jYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICdu
ZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGlu
ZShjYWxsKTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUg
dGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSAo
KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0Cisg
ICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkK
KyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7Cisg
ICAgfTsKKyAgICBpZiAocCkgeworICAgICAgICBjYWxsKGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9u
IG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAgcmV0dXJuIHsgJ3gnOiAyIH07Cit9Citu
b0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAg
IHZhciBvID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54
ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlz
ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBz
aG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1
bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRy
dWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54
IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3Ny
ZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZmNiM2ZhNWIx
ZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3ZGUyOGY2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNp
bmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM2IEBACit2YXIgbmV3Q29udGV4dCA9IHsKKyAg
aWQgOiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91bGQgYmUgaW52b2NlZCBieSBjYWxsIHdp
dGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsK
KyAgICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3Rv
cmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5l
d0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVu
Y3Rpb24gIzEnOworICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkg
T1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNr
IGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0Nv
bnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9u
ZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsKKyAgICAgIHJldHVybiB4OworICAgIH07
Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7
CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgZmFsc2UpOy8vIFN1YnN0
aXR1dGUgdGhpcworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQy
KQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQor
CisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24g
dG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxv
Y2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsdHJ1ZSwgdHJ1
ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCit2YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDU3ZWEwNzYzNWE0MTMxY2QyMzExZDQ1MDczNWY1N2MxZGQ5NTg2NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSw0NSBAQAordmFyIG5l
d0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxkIGJlIGlu
dm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlv
biBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFy
cm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQg
fHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250
ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAg
ICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4
ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAg
ICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQor
ICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsKKwor
ICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0
LCB0cnVlLCB0cnVlKTsvLyB1c2UgY2FsbCB0byBzdWJzdGl0dXRlIGNvbnRleHQKKyAgICB2YXIg
cmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6
IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwg
dGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKwor
Ly8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gK
K3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQg
PSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVy
IGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNr
IHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNz
aWdubWVudAordmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Cit2YXIg
cmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBp
bm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNGNlMGM2NThkM2EyZjc5MjI5ZGY0Zjg5MmNjZGExNTEzYzk0ZTU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDE3IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlv
biAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIics
IGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBzaW1wbGVBcnJvd0Z1
bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93RnVuY3Rpb24pOworCitm
b3IgKHZhciBpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRlc3RDYXNlKE9iamVjdC5nZXRQcm90b3R5
cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSwgRnVuY3Rpb24ucHJvdG90eXBlLCAiRXJyb3I6IE5v
dCBjb3JyZWN0IGdldFByb3RvdHlwZU9mIHZhbHVlIGZvciBhcnJvdyBmdW5jdGlvbiIpOworCisg
ICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUs
ICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBpbnN0YW5jZW9mIG1ldGhvZCBmb3IgYXJy
b3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1
Y3RvciA9PSBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBOb3QgY29ycmVjdCByZXN1bHQgZm9yIGNv
bnN0cnVjdG9yIG1ldGhvZCBvZiBhcnJvdyBmdW5jdGlvICAgbiIpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0x
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1
bi0xMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YTFmMGE0OWNiMTY4NjNjNTkyMTM2MWYwYWRiMWUxNGVj
OWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5j
dGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBp
PGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRo
aXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7Cisg
ICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmou
bmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQor
ICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9y
OiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiBvbmUgdGltZSIpOwor
dGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBv
ZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVkZGNkYjNjNzBhMWIyN2MzZGJiNTIzODA5NTVmNTM1M2Q3Njc0MjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tcnVuLTEwLTIuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24g
KGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
IHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBi
dXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQp
IHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsK
KyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7
CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsK
KworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1l
ICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0K
KyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEpLCB0cnVlLCAiRXJyb3I6IGR1
cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gb25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1
bigxMCksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAx
MCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNWY2
YmM4NmJkMzE0NTFiMDFjYTI3ZDBiOTcyMGI1N2U4ZDYwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAw
LTEuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwg
ZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0
aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICci
ICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFy
IHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIg
T2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0
aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBu
ZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkg
eworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9
CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVj
dXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4t
MTAwMDAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQyNzFmNGEzMTU5MTYyNWEwYmQzZDc0NGQyNTEyNjMz
MzAyZTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
ZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IgKHZhciBp
PTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmogPSBmdW5jdGlvbiAobmFtZSkgeworICAg
ICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRo
aXMubmFtZSIpOzsKKyAgICB9OworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7
CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBm
YWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEw
MDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5j
dGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmct
bm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODYyYzYyOGUzYjJjYTMwNDQxMGIx
YWUyMjY5NDcxODA1MWRlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUu
anMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5s
aW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7
IH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBv
ZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9J
bmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2
YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIGlmIChvLnggIT0gMykKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBidXQgaXMgIiArIHJlc3VsdDsKK30KKwor
Ly8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRv
IHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2Nh
dGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitpZiAoZi54ICE9IDMp
CisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMyBidXQgaXMgIiArIHJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyN2Yz
Y2EzYmRlOGRhMzAxNDBmYTE0OTk3M2UxN2FhYThkOTEwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1v
c3JleGl0LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2
YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsg
fQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAg
ICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAi
RXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBw
b2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKwor
Ly8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBl
eGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZig0Mik7CitpZiAo
cmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsg
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYjcwYmI5
YWJjMjMxNDhmNjI3ZWZjNjE4NmJlMDU3YzNjYmIyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1wdXQu
anMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0g
eCA9PiB4OworICAgIGlmIChwKSB7IGlmIChxKSBnLmlubmVyID0gNDI7IHJldHVybiBnOyB9Cisg
ICAgcmV0dXJuIHggPT4geDsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CisgICAgdmFy
IHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9y
OiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQs
IHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRl
c3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIg
ZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJlc3VsdCA9IGYoMTIpOworaWYgKHJlc3VsdCAh
PSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIgYXMgaXQgc2hvdWxkIGJlIGVpdGhl
ciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVk
IDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hlY2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBk
aWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2YXIgZiA9IHNpbmso
dHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisg
ICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tdGR6LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0OTIzOTcxOTgzZGNkYTM0YzI2OTM5MjExN2IxNzQ4
ZTY3YjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI3IEBACit2YXIgQSA9IGNsYXNz
IEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vz
c1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAg
ICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgZXhjZXB0aW9uID0gbnVsbDsKK2Zv
ciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRyeSB7CisgICAgICAgbmV3IEIodHJ1ZSk7
CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgICBpZiAoIShlIGlu
c3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQorICAgICAgICAgIHRocm93ICJFeGNlcHRpb24gdGhy
b3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOworICB9CisKKyAgaWYgKCFleGNlcHRpb24p
CisgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJvd24gZm9yIGFuIHVuaXRpYWxpemVkIHRo
aXMgYXQgaXRlcmF0aW9uIjsKKworICB2YXIgZSA9IG5ldyBCKGZhbHNlKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBl
b2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
dHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2VjMGRkZDU1MTRmYWY0ZDBkMDNjOWUwNjU3MGEwYzgy
YmU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAgKzEsMjcgQEAKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGFm
MSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7YSArIDF9OworCitub0lubGluZShhZjEp
Oworbm9JbmxpbmUoYWYyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
IHRlc3RDYXNlKHR5cGVvZiBhZjEsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlw
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UodHlwZW9mIGFmMiwgImZ1
bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAj
MiIpOworCisvL0ZpeG1lOiBTb21lIGJ1ZyBpbiBpbmxpbmluZyB0eXBlb2Ygd2l0aCBmb2xsb3dp
bmcgcnVuIHBhcmFtZXRlcnMgZnRsLW5vLWNqaXQtbm8taW5saW5lLXZhbGlkYXRlCisvLyAtLXVz
ZUZUTEpJVFw9dHJ1ZSAtLWVuYWJsZUZ1bmN0aW9uRG90QXJndW1lbnRzXD10cnVlIC0tZW5hYmxl
Q29uY3VycmVudEpJVD1mYWxzZSAtLXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwMCAgLS12
YWxpZGF0ZUdyYXBoPXRydWUgLS1tYXhpbXVtSW5saW5pbmdEZXB0aD0xCisvLworLy8gZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSAgeworLy8gICBpZiAodHlwZW9mIChmdW5jdGlvbiAo
KSB7fSkgIT09ICdmdW5jdGlvbicpCisvLyAgICAgICB0aHJvdyAnV3JvbmcgdHlwZSc7CisvLyB9
CisvLyAgdGVzdENhc2UodHlwZW9mICgpPT57fSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29y
cmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMy0iICsgaSk7CisKKy8vICB0ZXN0Q2Fz
ZSh0eXBlb2YgKChiKSA9PiB7YiArIDF9KSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVj
dCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE5MGI4ZjNhMWQ5
NWZjNDNiZGVlYmUzNDU3Y2FhNjRkMWU2YjdhMDIuLmYxZDFiOGYxNTAwYWRjY2U4YjczYzY4ODVj
ODA1ODgzYzk2NzA1MTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0wOC0xMiAgU2thY2hr
b3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMg
ZmVhdHVyZXMuIExleGljYWwgYmluZCBvZiB0aGlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
YXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tdGR6Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24t
dHlwZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10
eXBlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNh
bGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rp
b24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qczogQWRkZWQuCisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanM6IEFkZGVkLgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qczogQWRkZWQuCisK
IDIwMTUtMDgtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2UgZmxha2luZXNzIG9mIGluc3BlY3Rvci9pbmRleGVk
ZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LWJpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYjMyNmNjYmI0ZTE0YzY4OWRkN2Q5Mzgz
Y2M1YmM5NGZmN2YwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYg
YXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2Ug
YmluZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkLnkoKS5iaW5kKGUs
ICdsZXknKSgpIGlzICdiYXJsZXknCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1iaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYjlhY2IyYmM4ZmQ1MDRjNjhmMDQ0NWE2ZWFjNGE2YTE0NTRhYmFiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwKQEAgLTAs
MCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tYmluZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
YzA3N2Y5OTc5YWNmNDVlMTZiOTk2NTcyZDFhZmRlZWRkNTkxMTI0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDExIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBv
dmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHkKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZC55KCkuY2FsbChlKSBpcyAnZm9vJworUEFTUyBkLnkoKS5hcHBs
eShlKSBpcyAnZm9vJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzFkOGE0N2UzMGI2YTg3NDllYzViN2U3ODNjNmE5ZWMzMTMyZDJkMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCkBAIC0wLDAgKzEsMTAg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NjcwNmZmZjE3YzIxMjM4NTM2NDBiYjJhNGViMTdkNjNlMWEzNzIzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBj
b25zdHJ1Y3RvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBuZXcgc2lt
cGxlQXJyb3dGdW5jdGlvbigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlz
IG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigp
JykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1s
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIwYzBiOWE5Y2RkNGQ4YmRmYTYyNDFjYjZiZWZiZjA0Y2M5NTgzMGYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjY2ZmMyODhjYWNiZDljOTM3Yzk3
MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBA
QAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBsZXhpY2FsIGJpbmQgb2YgdGhpcworCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkLmdldE5hbWUoKSBpcyBkLm5hbWUK
K1BBU1MgZC5nZXROYW1lSGFyZCgpIGlzIGQubmFtZQorUEFTUyBkLmdldE5hbWVOZXN0aW5nKCko
KSgpIGlzIGQubmFtZQorUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnb2JqQ29kZS1u
YW1lLWNvcnJlY3QnCitQQVNTIG9iai5tZXRob2QoKSgnY29ycmVjdCcpIGlzICduZXdPYmpDb2Rl
LW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29y
cmVjdCcpIGlzICdpbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50
ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3SW50ZXJuYWxPYmplY3QtbmFt
ZS1jb3JyZWN0JworUEFTUyBpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlIGlzIHRydWUKK1BB
U1Mgb3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJPYmogaXMgdHJ1ZQorUEFTUyBmYWtlLnN0
ZWFsKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1MgcmVhbC5ib3Jyb3coKSgpID09PSByZWFs
IGlzIHRydWUKK1BBU1MgYXJyb3dGdW5jdGlvbignLXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BB
U1MgaG9zdE9iai5mdW5jKCctdGhpcycpIGlzICJyaWdodC10aGlzIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWVh
MjJhNzZmZGY4YmZmNWU3MmU1MWI3Nzk0YjNlMzQ3ZDE2NDJhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xOTE1MmU1ZTM3YzY5MTVmMzgyM2UyOWIyMGE5NGRmNTNkMDhjMDAx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rp
b24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9ycworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlv
bikgaXMgRnVuY3Rpb24ucHJvdG90eXBlCitQQVNTIHNpbXBsZUFycm93RnVuY3Rpb24gaW5zdGFu
Y2VvZiBGdW5jdGlvbiBpcyB0cnVlCitQQVNTIHNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0
b3IgPT0gRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlmNjdmOGIwMGU0NjA1NWVlNmZhZTVjMWU4Mjg5ZWZlZTFmMTEwOTAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTdhZjZjZDg2MDBlODg0MTI3N2M0OTRhOTg5MDIyNDUyZWE2YWI1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6CisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWwgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZWYxNzFjYjgy
MGJlYjNjYjRhN2QzZmM0OGU1YzUzZmMxMTkyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJmYjJjZTk2NGJkMDMzMjFi
ODMyY2I4N2JiYWUwY2E1MzQ5YzFiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1BBU1Mg
dHlwZW9mIGFmMSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNTIHR5cGVvZiBhZjIgPT09ICdm
dW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbicgaXMg
dHJ1ZQorUEFTUyB0eXBlb2YgKChiKSA9PiB7YiArIDF9KT09PSdmdW5jdGlvbicgaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYWNhYWExYTRl
NGQwZTRjYjNkMDc2NWUzNzNmZWRiNzQzODBlMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5
cGVvZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmViNTUyZjgwZjY2MWRlM2JhYjUyMDljNzJkZGNmNTAyMTAwMzQ1ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2Q4
NDU0YmZmNjE4MmU2MWNiZWIwYjllZTEzM2ZlODczMTEyYmZhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApAQCAtMCwwICsx
LDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
YWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjRjODQyNzZlNzEwODc3ODZjNTk0MGE4MjJiY2M2Zjk3
YzA2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBAQAordmFyIGFmID0gKGEs
IGIpID0+IGEgKyBiOworCitub0lubGluZShhZik7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7Cisg
ICAgcmV0dXJuIGFmKGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAg
aWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9mdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTczYzNiNWUwY2E3OTE3OTRmMjUxNjlhOTFj
YjRhN2RjOWIyOGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE1IEBACit2YXIgZmUgPSBm
dW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7fQorCitub0lubGluZShmZSk7CisKK2Z1bmN0
aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZlKGEsIGIpOworfQorCitub0lubGluZShiYXIp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQg
PSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTNmMDhlOTY2Yzc5NGNi
YWY5YWQ0YTNhZGI0ZTk5NzljMDJhYzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpAQCAtMCwwICsxLDEyIEBACitk
ZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUg
b3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kJyk7CisKK3ZhciBkID0geworICB4IDogImJh
ciIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHogPT4gdGhpcy54ICsgejsgfQorfTsKKwor
dmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitzaG91bGRCZSgiZC55KCkuYmluZChlLCAnbGV5Jyko
KSIsICInYmFybGV5JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVjODg4ZjkxMWJmMWM0NGQzODlkMGEzZDIxODQ2ODM0ODRiNmY5NmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxs
LmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1
bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBw
bHknKTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gKCkgPT4gdGhpcy54OyB9Cit9OworCit2YXIgZSA9IHsgeCA6ICJiYXIiIH07CisKK3Nob3Vs
ZEJlKCdkLnkoKS5jYWxsKGUpJywgIidmb28nIik7CitzaG91bGRCZSgnZC55KCkuYXBwbHkoZSkn
LCAiJ2ZvbyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5q
cyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFlZmFkMDc2ODQ3YmZmNDkyOWY3ODA3NzY1Zjk5MGI3MzczY2RmNmQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBm
b3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVjdG9yJyk7CisKK3ZhciBzaW1wbGVBcnJv
d0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZFRocm93KCduZXcgc2ltcGxlQXJyb3dGdW5j
dGlvbigpJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTU2YTE1NTMwZjM0Y2MzMDhhY2U2YjBmYWE0Y2Zl
N2MxZTk3OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAorZGVz
Y3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRo
aXMnKTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhp
cy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7CisgIHRoaXMuZ2V0TmFtZUhhcmQg
PSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7CisgIHRoaXMuZ2V0TmFtZU5lc3Rp
bmcgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBkID0gbmV3IERvZygi
TWF4Iik7CitzaG91bGRCZSgnZC5nZXROYW1lKCknLCAnZC5uYW1lJyk7CitzaG91bGRCZSgnZC5n
ZXROYW1lSGFyZCgpJywgJ2QubmFtZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZU5lc3RpbmcoKSgp
KCknLCAnZC5uYW1lJyk7CisKK3ZhciBvYmogPSB7CisgIG5hbWUgICA6ICdvYmpDb2RlJywKKyAg
bWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSAr
ICItbmFtZS0iICsgdmFsdWU7CisgIH0KK307CisKK3Nob3VsZEJlKCJvYmoubWV0aG9kKCkoJ2Nv
cnJlY3QnKSIsICInb2JqQ29kZS1uYW1lLWNvcnJlY3QnIik7CitvYmoubmFtZT0nbmV3T2JqQ29k
ZSc7CitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld09iakNvZGUtbmFt
ZS1jb3JyZWN0JyIpOworCit2YXIgZGVlcE9iaiA9IHsKKyAgbmFtZSA6ICd3cm9uZ09iakNvZGUn
LAorICBpbnRlcm5hbE9iamVjdDogeworICAgIG5hbWUgIDonaW50ZXJuYWxPYmplY3QnLAorICAg
IG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5h
bWUtIiArIHZhbHVlOyB9CisgIH0KK307CitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVj
dC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidpbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7
CisKK2RlZXBPYmouaW50ZXJuYWxPYmplY3QubmFtZSA9ICduZXdJbnRlcm5hbE9iamVjdCc7CisK
K3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAi
J25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCciKTsKKwordmFyIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9OworCit2
YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCitzaG91bGRCZSgiaW5z
dGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSIsICJ0cnVlIik7CisKK3ZhciBvd25lck9iaiA9IHsK
KyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB0aGlzOworICB9Cit9
OworCitzaG91bGRCZSgib3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIp
OworCit2YXIgZmFrZSA9IHsgc3RlYWwgOiBvd25lck9iai5tZXRob2QoKSB9Oworc2hvdWxkQmUo
ImZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgcmVhbCA9IHsgYm9y
cm93IDogb3duZXJPYmoubWV0aG9kIH07CitzaG91bGRCZSgicmVhbC5ib3Jyb3coKSgpID09PSBy
ZWFsIiwgInRydWUiKTsKKwordmFyIGFycm93RnVuY3Rpb24gPSB7IHggOiAicmlnaHQiLCBnZXRB
cnJvd0Z1bmN0aW9uIDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH19Lmdl
dEFycm93RnVuY3Rpb24oKTsKK3ZhciBob3N0T2JqID0geyB4IDogIndyb25nIiwgZnVuYyA6IGFy
cm93RnVuY3Rpb24gfTsKKworc2hvdWxkQmUoImFycm93RnVuY3Rpb24oJy10aGlzJykiLCAnInJp
Z2h0LXRoaXMiJyk7CitzaG91bGRCZSgiaG9zdE9iai5mdW5jKCctdGhpcycpIiwgJyJyaWdodC10
aGlzIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNzk5MzFjM2RlYmNiNTAyN2FkMTRmZDE1NDdlNWFiYTAzOGI0YjExCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpz
CkBAIC0wLDAgKzEsMTAgQEAKKy8vIEluc3BpcmVkIGJ5IG1vemlsbGEgdGVzdHMKK2Rlc2NyaXB0
aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBv
cGVyYXRvcnMnKTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworc2hv
dWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSIsICJGdW5j
dGlvbi5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNl
b2YgRnVuY3Rpb24iLCAidHJ1ZSIpOworc2hvdWxkQmUoInNpbXBsZUFycm93RnVuY3Rpb24uY29u
c3RydWN0b3IgPT0gRnVuY3Rpb24iLCAidHJ1ZSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXRkei5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY1OGZjNjUxM2VkYWJkZTFkZDY1MDc0OTZhZTg2NGI2MTFm
ZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3Ig
RVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6Jyk7CisKK3ZhciBBID0gY2xhc3MgQSB7IH07Cit2
YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9y
ZVN1cGVyKSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgICAgdmFyIGYg
PSAoKSA9PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgc3VwZXIo
KTsKKyAgICB9CisgIH0KK307CisKK3ZhciBpc1JlZmVyZW5jZUVycm9yID0gZmFsc2U7Cit0cnkg
eworICAgICBuZXcgQih0cnVlKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBpc1JlZmVyZW5jZUVycm9y
ID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOworfQorCitzaG91bGRCZSgnaXNSZWZlcmVu
Y2VFcnJvcicsICd0cnVlJyk7CisKK3ZhciBlID0gbmV3IEIoZmFsc2UpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmFhMjY5MGZkYTgyYzZhMzI4
ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAgKzEsMTIgQEAKK3Zh
ciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKworc2hvdWxkQmUo
InR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9m
IGFmMiA9PT0gJ2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0eXBlb2YgKCgpPT57
fSkgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9mICgoYikgPT4g
e2IgKyAxfSk9PT0nZnVuY3Rpb24nIiwgInRydWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259149</attachid>
            <date>2015-08-17 08:14:59 -0700</date>
            <delta_ts>2015-08-17 08:47:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817181453.patch</filename>
            <type>text/plain</type>
            <size>178837</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uYTkwN2Y2ZDg4ZDE5NTQ0MjU2ZjNkNzc0NGRhMDQ5
OWVjZmE1ZjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBVTlVT
RURfUEFSQU0oYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZVcoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBv
cGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2
ICsxNjI0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVn
IHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1Q
dHIodWlkKSk7CkBAIC0yMTg4LDYgKzIyMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxl
R2V0U2NvcGUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29t
cGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzNCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQ
UlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9p
ZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVy
ZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNp
emVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZf
dCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9u
KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZh
ZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMzY4Niw3ICszNjg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rp
b25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBj
b21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgICAgIAorCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVu
Y3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIAorCiAgICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZi
YTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcy
OSw3ICszNzI5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwotICAgICAgICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVu
Y3Rpb25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAg
ICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQz
NDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93
RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4
MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2
YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAg
ICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgorICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0
IGFsbG9jYXRlIGdldCB0byBzZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMg
d2Uga25vdwogICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qg
b2JqZWN0IGluIHRoZSBoZWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2
ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQw
MjY1NDFmOTYyZGEwNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdB
cnJvd0Z1bmN0aW9uOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9u
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlv
blN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApp
bmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4
MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52
aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1Njb3BlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4
MzkyMWNmMjRkMzUyNGJjODU3MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3
ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUs
IFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3Ry
dWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5
bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFj
cm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAor
ICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkg
XAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQ
KG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3Vt
ZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3
ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThk
MTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lw
U2NvcGU6CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoK
ICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExv
YWRBcnJvd0Z1bmN0aW9uVGhpczoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFy
Z3VtZW50Q291bnQ6CiAgICAgY2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2
ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0
NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGlu
dDY0LCBpbnRQdHIsIGludDY0LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25f
RUpKLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGlu
dFB0ciwgaW50UHRyKSkgXAorICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rp
b25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhK
X0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwg
aW50MzIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19K
SVRPcGVyYXRpb25fRVosIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4
IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1Mjdk
ZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
RlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0
ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJP
cGVyYW5kc0lubGluZXMuaCIKQEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAg
ICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6
CisgICAgICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tp
cFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAg
ICBBU1NFUlQobV9ub2RlLT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBO
ZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gbV9ub2RlLT5vcCgpID09IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBM
VmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUg
dGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6
IG51bGxwdHI7CisgICAgICAgIAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBtX25vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAg
IGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewot
ICAgICAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3Bl
LCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3Vs
dCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFr
UG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxs
KG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29w
ZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxs
UmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVj
dHVyZSgpCisgICAgICAgICAgICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBz
bG93IHBhdGgiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUo
c2xvd1BhdGgpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0
ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5j
dGlvbgorICAgICAgICAgICAgPyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRl
T2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgp
OworICAgICAgICAKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJh
cnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAg
ICAgICAgLy8gbXVzdCBiZSB5b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZh
c3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3Jl
UHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rp
b25fZXhlY3V0YWJsZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8s
IGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0
LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpT
QXJyb3dGdW5jdGlvbl9zY29wZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAg
IG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fy
cm93RnVuY3Rpb24gPyAgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVh
cHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93
RnVuY3Rpb24pCisgICAgICAgICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmpl
Y3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9v
dXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9u
ID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9u
X3JhcmVEYXRhKTsKICAgICAgICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQg
PSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51
YXRpb24pOwotICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAg
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQpLAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFr
UG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3Vs
dCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZy
YW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3
OCwxMSBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQog
ICAgIAorICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNv
bXBpbGVTa2lwU2NvcGUoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRy
KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAx
NmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZh
NjIwMDEyZDY5MTk2MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSog
YWN0aXZhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+
cHJvcGVydGllcygpW2ldOwogICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0g
UHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAg
ICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1Zh
bHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRp
b24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9j
KSkKICAgICAgICAgICAgICAgICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVl
OjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24o
KSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExv
YykpIHsKKyAgICAgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJvdW5kVGhpcyA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0
aXZhdGlvbik7CiAKLSAgICAgICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwg
YWN0aXZhdGlvbik7CisgICAgICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fy
cm93RnVuY3Rpb24KKyAgICAgICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9u
LCBib3VuZFRoaXMpCisgICAgICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwog
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2Jk
NmM5MTAwYjQwNGZmMWVkNWUxOWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZj
ODAyYjljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
aW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUz
MzYyZTc5ODViNGJlMDRjN2VmNTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZp
bmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJy
b3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7CiAgICAgY2xhc3MgVk07CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNz
IEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
aW5kZXggNWZhNmI1MzYyZGU5ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uMTY0OTc2ZWQx
ZTdlZjlkZTYwNzhmNmRlYTcyZTg1YWEwYWRjZjNiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVu
Y3RvcihHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdH
UFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVz
ZWQgdG8gc29ydCBhcmd1bWVudHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8g
T24gWDg2IHdlIHVzZSBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBh
cmd1bWVudHMgb24gdGhlCiAgICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2Ug
bWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMgaW50byB0aGUKQEAgLTIwOSw2ICsyMDgsMTQgQEAgcHVi
bGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgfQogCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVnIGFyZzEsIFRy
dXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCiAgICAgewogICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTk1NSw2ICs5NjIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAg
CiAjZWxpZiBDUFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICsxMDA2LDcgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CiAgICAgfQotCisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiwgRlBSUmVn
IGFyZzQpCiAgICAgewogICAgICAgICBtb3ZlRG91YmxlKGFyZzQsIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CkBAIC0xMDA3LDYgKzEwMTUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjZWxzZQorCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQogICAgIHsK
ICAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgYXJnMSk7CkBAIC0xMTI4LDcgKzExMzcsNyBAQCBwdWJsaWM6CiAjZWxz
ZQogI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgot
CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcx
KQogICAgIHsKICAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpAQCAt
MTIyNyw2ICsxMjM2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlVyhHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0
ciBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tNjQg
YXJnMikKICAgICB7CkBAIC0xNDcwLDcgKzE0ODYsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2Ug
bWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92
aWRlcyBmb3IKICAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFSTXY3
LgogI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAotCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHBva2UoYXJn
NCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IDAzOGY1ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3ZmYyZWJhNDBlYjQuLmJiYzg1MjNmNWJiMjNh
MzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
QEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9lbmQpCiAgICAgICAgIERFRklORV9PUChvcF9lbnRlcikKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2xvYWRf
YXJyb3dmdW5jdGlvbl90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERF
RklORV9PUChvcF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGlu
ZToKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVf
T1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAg
ICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAgICBERUZJTkVfT1Ao
b3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHApCiAgICAgICAg
IERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4NDExYTdlZjY1
YTljNmJkY2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2Li43NzFmZDliNDA2NWJkZDE3MjJjMGU3MmI4
ODcyMDhlYzYyZjFlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5OCw2ICs0OTgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24q
KTsKQEAgLTUzOSw2ICs1NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19l
eHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19mdW5jX2V4
cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CkBAIC02NTMsNiArNjU1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rp
b24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nh
c2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBp
c1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRz
dCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0
aCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50IHNjb3BlLCBT
dHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAgLTcyMyw2ICs3MjYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQUlJlZywgQnlWYWxJbmZvKik7CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzYywg
R1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSnNjQywgaW50LCBHUFJSZWcsIEpTQ2VsbCopOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgaW50LCBH
UFJSZWcsIEpTQ2VsbCosIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIEdQUlJlZywgaW50MzJfdCk7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpz
Y1osIGludCwgR1BSUmVnLCBpbnQzMl90KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ZDY4NjkwMDgxYzk5NmQ3ZTMzYmYzYmQy
NWRjYzU4YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcyNDk1NmJmNTg0OTFiM2RlNzgzYTZmY2RjMjM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjcxLDYgKzI3MSwx
MiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYQogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAKK0FMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNl
bGwsIEdQUlJlZyBhcmcyKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOworfQorICAgIAog
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2ludGVyKQogewogICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU5OGQ0ZWM5OWMxZDE4
ZTZjMzk2MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4M2JjYzhjNDVkZTY2NmY3M2M5ZTkxMWY1MTQy
OWYzNWViMTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTY3Myw2ICs2NzQsMTQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSks
IHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQorICAgIAordm9pZCBK
SVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUs
IHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zm
c2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDAp
OworfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CkBAIC05NjIsMjYgKzk3MSw0NSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
ZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBl
bWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKK3ZvaWQg
SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cDsKKyAgICAKICAgICBKdW1w
IG5vdFVuZGVmaW5lZFNjb3BlOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJy
b3dGdW5jdGlvbikKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFu
Y2g2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSkpKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIp
ICogZHN0KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAg
ZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJlZ1QxKTsK
ICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpKTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICNlbmRpZgotCiAg
ICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlLmxpbmsodGhpcyk7
Ci0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2RlQmxvY2stPmZ1bmN0
aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhwcik7CisgICAgICAg
IAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+ZnVuY3Rp
b25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIGlmIChpc0Fycm93
RnVuY3Rpb24pCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlv
biwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAg
ICBkb25lLmxpbmsodGhpcyk7CiB9Ci0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXRO
ZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorICAgIAogdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOTFjMDBlM2ZkNDVl
MDk3ZTNiYjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4uYjM5YWUxZDFhMzA2ODAzNDNlOWZkOWE3MjMx
NDI5YjZlNTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2lu
Y2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNB
cnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9u
bWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTkyMiw2ICs5MjMsMTQg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1Qw
KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZU
aGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXgg
YjVmOWUzNjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMwMjRjZGNkYjkzYi4uNGZmMGUzZDE1MGI0MjYw
ZWY5NGIyMWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTk0Miw2ICs5NDMsMzAg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJ
bnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0s
IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNj
b3BlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNv
bW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCit7
CisgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRh
YmxlOjppbmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOworICAgICAgICAKKyAgICBKU0Fycm93RnVuY3Rpb24qIGFycm93RnVuY3Rpb24gID0g
aXNJbnZhbGlkYXRlZAorICAgICAgICA/IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKQorICAgICAgICA6IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyb3dGdW5jdGlvbik7Cit9CisgICAgCitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29w
ZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNj
b3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cit9CisgICAgCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rp
b25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxz
ZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggM2Q4
M2Y1OTBkY2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJjYmU4NGY5Yi4uYTY3Y2FhY2IzMmZiMjE1OGE5
YzA1ZTZhNTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2bwog
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBT
KShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9u
X0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7Cit0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQ0opKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU1MpKEV4ZWNTdGF0ZSosIHNpemVf
dCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklU
T3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwq
LCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAtMjg4LDYgKzI4OSw4
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXJX
aXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhl
Y1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25IYW5kbGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
aW5kZXggMmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDllZjliMDEzOGQ5YTgzZjFlYy4uYTJhNmIyYjEx
YzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJWTS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXgg
NTViODFlZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJiNDFmNTY4NWQ3Zi4uMmNkOWY2ZWI4ZDY4Mzg2
ODcwOTdjNGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgi
CisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgpAQCAtMTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewog
ICAgICAgICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQot
CisgICAgCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5k
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3Bl
cmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTAxMywxMiArMTAxNCwyNCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CisgICAgCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3Bl
KiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2Nv
cGUoKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5j
dGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7
CiAgICAgCi0gICAgTExJTlRfUkVUVVJOKGZ1bmMpOworICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3Bl
KiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2Nv
cGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1
bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVSTihKU0Fy
cm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRoaXNWYWx1ZSkpOwog
fQogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQpAQCAtMTA5Niw3ICsxMTA5LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0
dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMs
IENvZGUKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKTsKICAg
ICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUg
PSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAKKwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0
YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgKaW5kZXggOGNjNjlhOTYwMGJiZjlkODUzMzlkNjA5NTk1ZjY3YzY4ZDA3
NjcxYi4uM2YxZGFhODEyYjcwMmUyM2M2YWFlZjlmZDdjMDY3MWVlMjAyNWMwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTk3LDYgKzk3LDcg
QEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hhcik7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjOTEwNjE3ZWQ4
MzRiNzRjOWYyZjhlZTRiMjY4N2M4YjljZmUzYzdjLi43M2ZjNTg4NDQyZGRjNGI5Y2ZhN2I4OGYw
MDRjYTg2NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTgzLDYgKzExODMsMTAgQEAgX2xsaW50X29w
X25ld19mdW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVu
Y19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19hcnJvd19mdW5jX2V4cDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bmV3X2Fycm93X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDUpCiAKIF9sbGludF9vcF9jYWxsOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZTkwZWNlZGZhNzMwOTgy
ZmVlZjcxZWViMGNlYTY0MzgyMzRhNjkxYy4uN2VmNmI4N2MxNzBhZDA4M2IxZjUyOWRhODgzNmMw
MGNkYTY0YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIzNzMsMyArMjM3MywxMiBAQCBfbGxp
bnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2go
NikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9h
ZGkgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRj
aCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDk0NTVmNzVj
N2I2NjQyZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1Yi4uZDIxNTJhMmYyNzdhZGU1ODc5NzZhMWMz
ZjEyMDIzNzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyMjYsMyArMjIyNiwxMSBAQCBfbGxp
bnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2go
NikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBKU0Fycm93RnVuY3Rp
b246Om1fYm91bmRUaGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEp
CisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKaW5kZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5NGE2Ny4uODA2ZGI1
MjMwM2Q1YWQzYTcxODgxMjlmODhiZDc2NGM2YjUwZWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOSArMzYxLDE5IEBAIHB1YmxpYzoKICAg
ICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29u
dGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICAgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBh
cnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAgICB7CiAgICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAg
bV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBl
bmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBj
b25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAgICAgICAgIGluU3Ry
aWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJv
d0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5j
dGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgeworICAgICAgICB1c2Vz
VGhpcygpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQs
IGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pOwot
Ci0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5j
RXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZvLmJvZHks
IHNvdXJjZSk7CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFy
c2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUs
IGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+
c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2Nh
dGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0ZTEyODg0OGVhOGI0M2ZkODYzNjk3NGNiOTk3
YzM3ZGIuLmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0M2JjYmExOTY5M2FkYmQxNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC04OTAs
MTMgKzg5MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRh
ZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIAorICAgIGlubGluZSBCYXNlRnVu
Y0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRh
ZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKICAgICB7CiAgICAg
ICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25FeHBy
ZXNzaW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCisgICAgICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1fbWV0YWRh
dGEsIHNvdXJjZSkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVu
Y0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9tZXRhZGF0YShtX21ldGFkYXRhKQpAQCAtOTA0LDYgKzkxMCwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlkZW50LCBG
dW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgQXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9j
YXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwogI2lmIEVO
QUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIGlubGluZSBDbGFzc0RlY2xOb2RlOjpDbGFzc0Rl
Y2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBj
bGFzc0RlY2xhcmF0aW9uKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGNmNGZlNDUwYTkyNDk1MDRmMzBi
YTg1YTI2NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUzMzA1YzRhMGMyMWM3MzM4ODM5YzI5ZjIzYzc0
ZGU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyAr
MTUxLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAg
IFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAg
ICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlKQorICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlv
bikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5k
Q29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw2ICsxNjMsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAg
ICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAs
IG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQp
KQorICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDFkNmIw
M2Q3NzY2Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQuLjg3MzY2OGVjMzdiNDI3YjkyMDY0
OWRlMzA2ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
QEAgLTE2NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29s
IGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hTm9kZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUFycmF5KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDksNyArMTgxMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAog
ICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKTsKIAogICAgICAg
ICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzUsNiArMTgzNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5k
PihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9j
KHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwg
aW50IGxpbmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2MCw2ICsxODYyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAg
ICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1f
Y29uc3RydWN0b3JLaW5kIDogMjsKKyAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24g
OiAxOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKQEAgLTE4ODksMTggKzE4OTIsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jRXhwck5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJhc2VGdW5jRXhwck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgQmFzZUZ1bmNFeHByTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCisgICAgcHJvdGVjdGVkOgor
ICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICB9OworCisKKyAg
ICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9kZSB7CisgICAgcHVi
bGljOgorICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB9OwogCi0gICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRh
OworICAgIGNsYXNzIEFycm93RnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUg
eworICAgIHB1YmxpYzoKKyAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3Qg
U291cmNlQ29kZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNT
X1NZTlRBWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhZWU3
MGI2YTczMjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxLi5mNTA4MTRlN2IxNDJhYjUzMDBk
ODRhNGI3MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAg
ICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2Nh
dGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2Nr
ICE9IGJvZHlUeXBlOwogICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJs
b2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAgICAgICAgbmV4
dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwg
c3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFt
ZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTE1NjIsNyArMTU2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxz
ZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIs
IENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5Qmxv
Y2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9k
ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1
bmN0aW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShT
b3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE3MzcsNyArMTczOCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8o
VHJlZUJ1aWxkCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gY29u
c3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLQorICAgIAogICAgIGZ1bmN0
aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAvLyBJZiB3
ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVk
IGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KQEAg
LTE3NTYsMTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAg
IGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0
IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0g
bV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLQorICAgICAgICAKKyAgICAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlw
ZTsKKyAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24s
IGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAg
ICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5k
LCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBjYWNoZWRJ
bmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNv
dW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25T
Y29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAg
ICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJ
bmZvKTsKQEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
Ym9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAg
ICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAg
ICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZz
ZXQ7CiAKLSAgICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQor
ICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlw
ZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggMDc2MGMx
OWViMTYzNmRiMjFhMTc5NjEyYTU0OTZlMTljZmQxYmIwNy4uZGM1NjFmOWIxYTZkYTM2NDNiODI3
MmZlN2IxMmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHBy
ZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFBy
b3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9
Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSkgeyByZXR1cm4gRnVuY3Rp
b25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGlu
dCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwg
Ym9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9
CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNy
ZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCAwYWIxNjcyMTE2ODE5NGMx
YTYwMjg5ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2OTRmMjdhNDU4NzNiMmEyMTY3YTM2OTYzNWQz
ZTU5NDVhYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcApAQCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0cjxDb2RlQmxvY2s+IFNjcmlwdEV4ZWN1dGFi
bGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gZ2xv
YmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAg
IFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc1Byb2ZpbGVyKCkg
PyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2sgPQotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhl
Y3V0YWJsZS0+Y29kZUJsb2NrRm9yKAotICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3Nv
dXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBleGVj
dXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgZXhlY3V0YWJs
ZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgZXhl
Y3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNlKGV4ZWN1dGFibGUt
Pm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5tX3VubGlua2Vk
RXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVC
bG9jaykgewogICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmNlMjQyOGNiYzEwMWRk
YTZjYjEwMWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2YyYmRlODhjNWE2ZTkxNjc2MDM2ZWUyN2Q3NDRm
NzY0NTM5Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aApAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxl
cygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQog
ICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRF
dmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTMwLDcgKzUzMCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0
aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2
YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJs
ZTsKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9u
TW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQog
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29u
c3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25z
dHJ1Y3RBYmlsaXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wg
aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50
aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAg
ICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFjMjYwZTE2YTIwZTJi
ODQwOWFlYmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKKworI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6c19pbmZvID0geyAi
QXJyb3dGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNB
cnJvd0Z1bmN0aW9uKSB9OworCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2VsbCktPkpTQXJy
b3dGdW5jdGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOworfQorCitKU0Fycm93RnVuY3Rpb24qIEpT
QXJyb3dGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgSlNBcnJvd0Z1
bmN0aW9uKiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRU
aGlzKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2
bSwgcmVzdWx0LCAiQWxsb2NhdGluZyBhbiBhcnJvdyBmdW5jdGlvbiIpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3Vu
ZFRoaXMpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9i
amVjdCgpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhpcyh2bSwg
dGhpcywgYm91bmRUaGlzKQoreworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlv
bjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91
bmRUaGlzKQoreworICAgIEFTU0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5o
YXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUsIGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBcnJvd0Z1
bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBKU0Fycm93
RnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7Cisg
ICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIyMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5o
CkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmluZSBKU0Fy
cm93RnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZz
ZXRzOworICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24gewor
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNs
YXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGls
ZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U0Z1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGUoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpT
QXJyb3dGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKworICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgCisgICAgc3RhdGljIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4g
c2l6ZW9mKEpTQXJyb3dGdW5jdGlvbik7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU0Fycm93
RnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICB7CisgICAgICAgIEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Fy
cm93RnVuY3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNj
b3BlLCBib3VuZFRoaXMpOworICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5n
bG9iYWxPYmplY3QoKSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisKKyAgICBK
U1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9CisgICAgCisg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dGdW5jdGlvbiwgbV9i
b3VuZFRoaXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVkOgorICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCitw
cml2YXRlOgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
U2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgIAorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2JvdW5kVGhpczsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQXJyb3dGdW5jdGlvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMGI4N2Q3
NWM5MTQ1MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBmMDkzZS4uOTI4MzUwZTI0NzhjNDVmN2JmN2U4
YWE4NGM5ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaApAQCAtMTQxLDYgKzE0MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSop
OworICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3Ry
dWN0dXJlKik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJs
ZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFzZTo6Zmlu
aXNoQ3JlYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2ZTVjMTE2NGNiMjdmYTVlNDE2MThiNGI4MTQy
ZjAyLi5mMDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUyN2I2M2I2NDRhODg0NDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTQ0
LDYgKzQ0LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzCiAgICAgLCBtX3JhcmVEYXRhKCkK
IHsKIH0KKyAgICAKK2lubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQorICAgICwgbV9leGVjdXRh
YmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQorICAgICwgbV9yYXJlRGF0YSgpCit7Cit9CiAKIGlu
bGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFkMDQyMy4uZGExYWMy
NWFhYjAwODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMwZmYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTksNiArNTksNyBAQAog
I2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBA
IC0yNTksNiArMjYwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAg
ZXhlYy0+c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsKIAogICAgIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2Fycm93RnVuY3Rpb25TdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1bmN0aW9u
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24o
dm0sIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFtZU9mZnNldCkpOwog
ICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSkpOwpAQCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA5OTg2YmNmNjI0NWUyY2M0
NjgyMGIxMzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEyYjI5MzA1NWU5YmFlMzBiYjczZmQ5MDE1YmMw
MDM4MzYzYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Jv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJv
d0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRG
dW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNl
dDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwpA
QCAtNDYyLDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxlZVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1
cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fycm93RnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1h
Y3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNp
bmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWUzYTY2
ZWE5MmYwMzBkYjM3NzlhNGMzZTQwMmU3YzExOGQxZDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24t
c2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpzCkBAIC0wLDAgKzEsNDYgQEAK
KyJ1c2Ugc3RyaWN0IjsKKwordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBzaG91bGRUaHJv
d1REWihmdW5jKSB7CisgICAgdmFyIGhhc1Rocm93biA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUubmFtZS5pbmRleE9m
KCJSZWZlcmVuY2VFcnJvciIpICE9PSAtMSkKKyAgICAgICAgICAgIGhhc1Rocm93biA9IHRydWU7
CisgICAgfQorICAgIGlmICghaGFzVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRp
ZCBub3QgdGhyb3cgVERaIGVycm9yIik7Cit9CisKK2Z1bmN0aW9uIGJhcihmKSB7IH0KKworZnVu
Y3Rpb24gZm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gICh4KSA9
PiB7IHJlc3VsdCA9IHg7IHJldHVybiB0ZHpQZXJwZXRyYXRvcjsgfQorICAgIGlmIChiKSB7Cisg
ICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQp
OworICAgICAgICAgICAgcmV0dXJuIHRkelBlcnBldHJhdG9yOworICAgICAgICB9CisgICAgfQor
ICAgIGxldCB0ZHpQZXJwZXRyYXRvcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGlu
ZShiYXIpOworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKHNob3VsZFRocm93VERaKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgYm9vbCA9ICEoaSAlIDEwMCk7Cisg
ICAgaWYgKGJvb2wpCisgICAgICAgIHNob3VsZFRocm93VERaKCgpPT4geyBmb28oYm9vbCk7IH0p
OworICAgIGVsc2UgeworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKGJvb2wpOworICAgICAgICBp
ZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQt
dmFsdWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDFiYmUxNDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5YzY1YTRiYTc3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2
YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBAQAordmFy
IG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoc2V0KSB7CisgICAgdmFyIHJlc3VsdCA9IHNl
dCgwKTsKKyAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHZhbHVlOiAiICsgcmVzdWx0OworfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciBy
ZXN1bHQgPSAwOworICAgIHZhciBpbVVuZGVmaW5lZDsKKyAgICB2YXIgYmF6OworICAgIHZhciBz
ZXQgPSAgKHgpID0+IHsKKyAgICAgICAgcmVzdWx0ID0geDsKKyAgICAgICAgaWYgKGJheiAhPT0g
NTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGJhejsKKyAgICAg
ICAgcmV0dXJuIGltVW5kZWZpbmVkOworICAgIH07CisgICAgYmF6ID0gNTA7CisgICAgaWYgKGIp
IHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFy
KHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7Cisg
ICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9z
cmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdiMmMyYWQzNDVlMjZjMjAzNzc4OTBkZjVmMzFm
YWYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCwwICsxLDI1
IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5jdGlvbiBm
b28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geyByZXN1
bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAo
YikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGlu
ZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQg
PSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2
YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3OWVjOWVhYTY1YzU0MTkzMGI5MDQ4MjZlN2Ey
M2ExM2ZiMmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDI0IEBA
Cit2YXIgbiA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEwKTsgfQorCitmdW5j
dGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSB4ID0+IHsg
cmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBp
ZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1
bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitu
b0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBp
KyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQg
IT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWJvdW5kLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDMyMDg4YWJmMjZkYWUyYWU3MWEyYWM0YzA1
ZDRmMDc3NTVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKQEAgLTAsMCArMSwxOCBAQAordmFyIHRl
c3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIg
KyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2
YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRo
aXMueCArIHo7IH0KK307CisKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJheiIg
fTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC55KCkuYmlu
ZChlLCAibGV5IikoKSwgImJhcmxleSIsICJFcnJvcjogZnVuY3Rpb24gYmluZCBzaG91bGRuJ3Qg
Y2hhbmdlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1j
YWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5YzgzYWM1M2E3ZjZkMzUxOTYyMzIxNGMxZTlm
YzYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2FzZSA9
IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0
ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGQgPSB7
CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9
Cit9Oworbm9JbmxpbmUoZC55KTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitmb3IgKHZh
ciBpPTA7IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0Q2FzZShkLnkoKS5jYWxsKGUpLCAiZm9vIiwg
IkVycm9yOiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0IGNoYW5nZSB0aGUgbGV4aWNhbCBiaW5kaW5n
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIpOworICAgIHRlc3RDYXNlKGQueSgpLmFwcGx5KGUpLCAi
Zm9vIiwgIkVycm9yOiBmdW5jdGlvbiBhcHBseSBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwg
YmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3OTQ5YmM2YjJjNzhhYjQ2NTllYThjMmFjNjNk
ZTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsMjIgQEAKK3ZhciB0ZXN0
Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsg
ZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFy
IHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworbm9JbmxpbmUoc2ltcGxlQXJyb3dG
dW5jdGlvbik7CisKK3ZhciBlcnJvck9uQ3JlYXRlID0gZmFsc2U7CisKK2ZvciAoaT0wO2k8MTAw
MDA7aSsrKSB7CisgICB0cnkgeworICAgICAgIHZhciBmYyA9IG5ldyBzaW1wbGVBcnJvd0Z1bmN0
aW9uKCk7CisgICB9CisgICBjYXRjaCAoZSkgeworICAgICBlcnJvck9uQ3JlYXRlID0gdHJ1ZTsK
KyAgIH0KKworICAgIHRlc3RDYXNlKGVycm9yT25DcmVhdGUsIHRydWUsICJFcnJvcjogTm8gZXhj
ZXB0aW9uIGR1cmluZyBydW4gbmV3IEFycm93RnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNmYWIyNGM5MWJjNTdj
OTU4NzYzMmRmZWM5YTRjOTM3OThlMjE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0x
LmpzCkBAIC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4
cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhy
b3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiAr
IGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5u
YW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7Cisg
IHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7Cit9
CisKK25vSW5saW5lKERvZykKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkrKykgeworICB2YXIg
ZCA9IG5ldyBEb2coIk1heCIpOworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1lLCAiRXJy
b3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5j
dGlvbiAjMSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFtZSwgIkVycm9yOiB0
aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24g
IzIiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVjODE2NGU0OGQwM2E2N2ViOTJhNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGZ1
bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRo
aXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCit0
ZXN0Q2FzZShpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlLCB0cnVlLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIp
OworCit2YXIgb2JqID0geworICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkg
PT4gdGhpczsKKyAgfQorfTsKKworbm9JbmxpbmUob2JqLm1ldGhvZCk7CisKK2ZvciAodmFyIGk9
MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoKSA9PT0gb2Jq
LCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQorCit2YXIgZmFrZSA9IHtzdGVhbDogb2JqLm1ldGhv
ZCgpfTsKK25vSW5saW5lKGZha2Uuc3RlYWwpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsg
aSsrKSB7CisgICAgdGVzdENhc2UoZmFrZS5zdGVhbCgpID09PSBvYmosIHRydWUsICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICM0Iik7Cit9CisKK3ZhciByZWFsID0ge2JvcnJvdzogb2JqLm1ldGhvZH07Citub0lubGluZShy
ZWFsLmJvcnJvdyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0
Q2FzZShyZWFsLmJvcnJvdygpKCkgPT09IHJlYWwsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3Qg
bGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEw
MTkwODZkNTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4OTM5YzA5MmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlv
biAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIics
IGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsgbmFt
ZTonb2JqJywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFt
ZSArICItbmFtZS0iICsgdmFsdWU7IH19OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykg
eworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ29iai1u
YW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitmb3IgKHZhciBp
PTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MSA9IG9iai5tZXRob2QoKSgndGVzdCcg
KyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQxLCAnb2JqLW5hbWUtdGVzdCcgKyBp
LnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUg
b2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5uYW1lPSduZXdPYmonOworCitm
b3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rl
c3QnICsgaS50b1N0cmluZygpKSwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjNSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIg
cmVzdWx0MiA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2Fz
ZShyZXN1bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhp
cyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1
Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg1YmQzNjNlNGU0NmIwMmQyZjE5YmJlMzg1MDJmNTI4MjMzYTlmMTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAtMCwwICsxLDI2IEBACit2YXIgdGVzdENhc2Ug
PSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVj
dGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9i
aiA9IHsKKyAgbmFtZTonb2JqJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2lu
dGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkg
PT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9OworCitub0lubGluZShv
YmouaW50ZXJuYWxPYmplY3QubWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKysp
IHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3QnICsgaS50
b1N0cmluZygpKSwgJ2ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJF
cnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICMxIik7Cit9CisKK29iai5pbnRlcm5hbE9iamVjdC5uYW1lPSduZXdJbnRlcm5hbE9i
amVjdCc7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2Jq
LmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICduZXdJbnRl
cm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NzU0OTRjZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVhY2U2Mjg3NTQ2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC10aGlzLTUuanMKQEAgLTAsMCArMSw0OCBAQAordmFyIHNvcnRlZFZhbHVlczsKKwor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCisKK3ZhciBvYmogPSB7CisgIGFycjogWzEsIDQsIDYsIDMsIDcsIDBdLAorICBidWJibGVT
b3J0OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHsKKyAgICAgIHZhciB0bXA7Cisg
ICAgICB2YXIgYXIgPSB0aGlzLmFyci5zbGljZSgpOworICAgICAgdmFyIF9sZW5ndGggPSBhci5s
ZW5ndGgKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbmd0aDsgaSsrKSB7CisgICAgICAg
IGZvciAodmFyIGogPSBpOyBqID4gMDsgai0tKSB7CisgICAgICAgICAgaWYgKChhcltqXSAtIGFy
W2ogLSAxXSkgPCAwKSB7CisgICAgICAgICAgICB0bXAgPSBhcltqXTsKKyAgICAgICAgICAgIGFy
W2pdID0gYXJbaiAtIDFdOworICAgICAgICAgICAgYXJbaiAtIDFdID0gdG1wOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGFyOworICAgIH0KKyAgfQorfTsK
Kworbm9JbmxpbmUob2JqLmJ1YmJsZVNvcnQpOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkr
KykgeworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgMywgNywgMF07CisgICAgdGVzdENhc2Uo
b2JqLmJ1YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKworICAgIHZhciBz
b3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFs
dWVzWzBdLCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9m
IHRoZSBhcnJvdyBmdW5jdGlvbiAjNiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1s2XSwg
NywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzciKTsKKworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgNSwgOCwgMjEs
IDE5LCAwXTsKKworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgsIDksICJF
cnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7Cisg
ICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzFdLCAxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTIiKTsKKyAgICB0ZXN0
Q2FzZShzb3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTMiKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQxN2JjN2M4ZjE4
MDUzNThiZGJhODViMmNlZjZhNjliNWY0MWVjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy02LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWws
IGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAg
dGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAn
IiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhp
cy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gIHRoaXMubmFtZTsKKyAgdGhp
cy5nZXROYW1lTmVzdGluZ0xldmVsMSA9ICgpID0+ICgpID0+IHRoaXMubmFtZTsKKyAgdGhpcy5n
ZXROYW1lTmVzdGluZ0xldmVsMiA9ICgpID0+ICgpID0+ICgpID0+IHRoaXMubmFtZTsKK30KKwor
dmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKworbm9JbmxpbmUoZC5nZXROYW1lKCkpOworbm9Jbmxp
bmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCkpOworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGlu
Z0xldmVsMigpKCkoKSk7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENh
c2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmlu
ZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXRO
YW1lTmVzdGluZ0xldmVsMSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKyAgdGVzdENhc2Uo
ZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxMGEzMWQ2NzMxYWU2OTc0ZDY2N2Vk
OGQyNDg3MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5r
LW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5l
d0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKCkg
eyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNl
dCA9ICh4KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250
ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4
dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7
CisgICAgICByZXN1bHQgPSB4OworICAgIH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JFeGl0
KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitu
b0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBp
KyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7
CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRo
aXMtYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDMwNjM3Yzg1YmY5NDIxYWU5Yzk3
ZTBkZDdmNmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2lu
ay5qcwpAQCAtMCwwICsxLDM4IEBACit2YXIgbiA9IDEwMDAwMDAwOworCit2YXIgbmV3Q29udGV4
dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBiYXIoZikgeworICAg
IGlmICh0aGlzID09IG5ld0NvbnRleHQpCisgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9m
IG5lc3RpbmcgZnVuY3Rpb24nOworICAgIGYoMTApOworfQorCitmdW5jdGlvbiBmb28oYikgewor
ICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAgcmVzdWx0
ID0geDsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAg
ICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQor
ICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uJzsKKyAgICB9
OworCisgICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChyZXN1bHQg
IT0gMTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJh
cik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAg
IHZhciByZXN1bHQgPSBmb28uY2FsbChuZXdDb250ZXh0LCAhKGkgJSAxMDApKTsKKyAgICBpZiAo
cmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OWUwMjcxMzlj
MTY2N2UxMDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNp
bmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuZXdDb250
ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGNhbGwobykgeyBv
LnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2Fs
bCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBx
KSB7CisgICAgdmFyIGYgPSAoKSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlv
biBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQg
IT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJv
dyBmdW5jdGlvbiAjMSc7CisgICAgfTsKKyAgICBpZiAocCkgeworICAgICAgICBjYWxsKGYpOyAv
LyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAgICAgICAgIE9T
UkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAgcmV0dXJu
IHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZh
bHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQg
by54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRo
ZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8v
IENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhp
dAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJF
cnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3ZGUyOGY2MGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM2IEBACit2YXIg
bmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91bGQgYmUg
aW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQKK2Z1bmN0
aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hlY2sgaWYg
YXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4
dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNv
bnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAg
ICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+
IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAg
IGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAg
ICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsKKyAgICAg
IHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1
ZSwgZmFsc2UpOy8vIFN1YnN0aXR1dGUgdGhpcworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAg
ICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdv
dCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxk
IGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlv
biBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luay5jYWxsKG5l
d0NvbnRleHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCit2YXIgcmVzdWx0ID0gZig0
Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0
IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMt
c2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3ZWEwNzYzNWE0MTMxY2QyMzExZDQ1MDczNWY1
N2MxZGQ5NTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMKQEAgLTAs
MCArMSw0NSBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsK
KworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBu
ZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAg
ICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0
aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAg
IHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKworICAgICAgcmV0
dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyByZXR1cm4g
ZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9u
IHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAh
PSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93
IGZ1bmN0aW9uICMyJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5saW5lKHNp
bmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNp
bmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsvLyB1c2UgY2FsbCB0byBzdWJzdGl0dXRl
IGNvbnRleHQKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikK
KyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKwor
Ly8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBk
b3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0aGUgaW1wbGljaXQg
aW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZh
bHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhp
cyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21w
bGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyBy
ZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9u
ZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwg
dHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisg
ICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNlMGM2NThkM2EyZjc5MjI5ZGY0Zjg5MmNj
ZGExNTEzYzk0ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDE3IEBACit2YXIg
dGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAn
IiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisK
K3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFy
cm93RnVuY3Rpb24pOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRlc3RDYXNl
KE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSwgRnVuY3Rpb24ucHJv
dG90eXBlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdldFByb3RvdHlwZU9mIHZhbHVlIGZvciBhcnJv
dyBmdW5jdGlvbiIpOworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNl
b2YgRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBpbnN0YW5j
ZW9mIG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJy
b3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBOb3QgY29y
cmVjdCByZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1ldGhvZCBvZiBhcnJvdyBmdW5jdGlvICAgbiIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YTFmMGE0OWNiMTY4NjNj
NTkyMTM2MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKQEAgLTAsMCAr
MSwyNCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsg
Ii4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIici
OworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7
CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24g
KG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAo
KSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiAr
IGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0
ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1
bigxKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5j
dGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjog
ZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0x
MC0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXJ1bi0xMC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNkYjNjNzBhMWIyN2MzZGJiNTIzODA5NTVmNTM1
M2Q3Njc0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIHRl
c3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIg
KyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitm
dW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0w
OyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAg
IHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFsKCJ0aGlz
Lm5hbWUiKTs7CisgICAgfTsKKworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7
CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBm
YWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEp
LCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gb25lIHRp
bWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBv
ZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFiMDFjYTI3ZDBiOTcyMGI1N2U4ZDYwNTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RDYXNlID0g
ZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3Rl
ZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBy
dW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50
OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFt
ZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsK
KworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAh
PT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9Cisg
IHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjog
RXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1ydW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQyNzFmNGEzMTU5MTYy
NWEwYmQzZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzCkBAIC0w
LDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2Fn
ZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCAr
ICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0
cnVlOworICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmogPSBmdW5j
dGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMuZ2V0TmFt
ZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisgICAgdmFyIG9iaiA9IG5l
dyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7
CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30K
KwordGVzdENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1
dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91
YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODYy
YzYyOGUzYjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1MWRlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1u
by1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gY2FsbChvKSB7
IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBxKSB7Cisg
ICAgdmFyIGYgPSAoKSA9PiB7IH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8g
Rm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JF
eGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7
ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIGlmIChvLngg
IT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBidXQgaXMg
IiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBi
ZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24g
aXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1
ZSk7CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUg
MyBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAxNDBmYTE0OTk3M2UxN2FhYThkOTEwNWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNp
bmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NS
RXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5r
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5r
KHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAh
PSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsK
K30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBk
b3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkg
YWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVz
dWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0
ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3ZWZjNjE4NmJlMDU3YzNjYmIyNzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2luayAocCwg
cSkgeworICAgIHZhciBnID0geCA9PiB4OworICAgIGlmIChwKSB7IGlmIChxKSBnLmlubmVyID0g
NDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geDsKK30KK25vSW5saW5lKHNpbmspOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1
ZSwgdHJ1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIp
CisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisK
Ky8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0
byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVy
IGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJlc3VsdCA9IGYo
MTIpOworaWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIgYXMg
aXQgc2hvdWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0aHJv
dyAiRXJyb3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hlY2sgdGhh
dCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25t
ZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lm
IChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0
IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0OTIzOTcxOTgzZGNk
YTM0YzI2OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI3
IEBACit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7Cisg
IGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlz
QmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgZXhj
ZXB0aW9uID0gbnVsbDsKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRyeSB7Cisg
ICAgICAgbmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4Y2VwdGlvbiA9IGU7
CisgICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQorICAgICAgICAgIHRo
cm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOworICB9CisK
KyAgaWYgKCFleGNlcHRpb24pCisgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJvd24gZm9y
IGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKKworICB2YXIgZSA9IG5ldyBCKGZh
bHNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2VjMGRkZDU1MTRmYWY0
ZDBkMDNjOWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAgKzEs
MjcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7YSArIDF9
OworCitub0lubGluZShhZjEpOworbm9JbmxpbmUoYWYyKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjEsICJmdW5jdGlvbiIsICJFcnJv
cjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENh
c2UodHlwZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCisvL0ZpeG1lOiBTb21lIGJ1ZyBpbiBpbmxpbmluZyB0
eXBlb2Ygd2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFtZXRlcnMgZnRsLW5vLWNqaXQtbm8taW5saW5l
LXZhbGlkYXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1ZSAtLWVuYWJsZUZ1bmN0aW9uRG90QXJndW1l
bnRzXD10cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXRocmVzaG9sZEZvckpJVEFm
dGVyV2FybVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBoPXRydWUgLS1tYXhpbXVtSW5saW5pbmdEZXB0
aD0xCisvLworLy8gZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSAgeworLy8gICBpZiAo
dHlwZW9mIChmdW5jdGlvbiAoKSB7fSkgIT09ICdmdW5jdGlvbicpCisvLyAgICAgICB0aHJvdyAn
V3JvbmcgdHlwZSc7CisvLyB9CisvLyAgdGVzdENhc2UodHlwZW9mICgpPT57fSwgImZ1bmN0aW9u
IiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMy0iICsg
aSk7CisKKy8vICB0ZXN0Q2FzZSh0eXBlb2YgKChiKSA9PiB7YiArIDF9KSwgImZ1bmN0aW9uIiwg
IkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUzNDU3Y2FhNjRkMWU2YjdhMDIuLmYxZDFiOGYx
NTAwYWRjY2U4YjczYzY4ODVjODA1ODgzYzk2NzA1MTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAor
MjAxNS0wOC0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cg
ZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCBvZiB0aGlzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rp
b24tYmluZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24t
YmluZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVz
cy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAq
IGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3Ro
ZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10
ZHouanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5
cGVvZi5qczogQWRkZWQuCisKIDIwMTUtMDgtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2UgZmxha2luZXNzIG9m
IGluc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYjMyNmNj
YmI0ZTE0YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2YwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0
dGVuIGR1cmluZyBpbnZva2UgYmluZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBkLnkoKS5iaW5kKGUsICdsZXknKSgpIGlzICdiYXJsZXknCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWJpbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlhY2IyYmM4ZmQ1MDRjNjhmMDQ0NWE2ZWFjNGE2
YTE0NTRhYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1iaW5kLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNmNDVlMTZiOTk2NTcyZDFhZmRlZWRkNTkxMTI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
LCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHkKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCkuY2FsbChlKSBpcyAnZm9v
JworUEFTUyBkLnkoKS5hcHBseShlKSBpcyAnZm9vJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2YTg3NDllYzViN2U3ODNjNmE5ZWMzMTMyZDJk
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjcwNmZmZjE3YzIxMjM4NTM2NDBiYjJhNGViMTdkNjNl
MWEzNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBh
cnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2lt
cGxlQXJyb3dGdW5jdGlvbigpJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5Y2RkNGQ4YmRmYTYyNDFjYjZiZWZiZjA0Y2M5
NTgzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNv
bnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjY2
ZmMyODhjYWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBsZXhpY2Fs
IGJpbmQgb2YgdGhpcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkLmdl
dE5hbWUoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lSGFyZCgpIGlzIGQubmFtZQorUEFTUyBk
LmdldE5hbWVOZXN0aW5nKCkoKSgpIGlzIGQubmFtZQorUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJl
Y3QnKSBpcyAnb2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIG9iai5tZXRob2QoKSgnY29ycmVj
dCcpIGlzICduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRlcm5hbE9i
amVjdC5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdpbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3Qn
CitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3
SW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBpbnN0YW5jZS5mdW5jKCkgPT09IGlu
c3RhbmNlIGlzIHRydWUKK1BBU1Mgb3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJPYmogaXMg
dHJ1ZQorUEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1MgcmVhbC5i
b3Jyb3coKSgpID09PSByZWFsIGlzIHRydWUKK1BBU1MgYXJyb3dGdW5jdGlvbignLXRoaXMnKSBp
cyAicmlnaHQtdGhpcyIKK1BBU1MgaG9zdE9iai5mdW5jKCctdGhpcycpIGlzICJyaWdodC10aGlz
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMu
aHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MWVhMjJhNzZmZGY4YmZmNWU3MmU1MWI3Nzk0YjNlMzQ3ZDE2NDJhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTE1MmU1ZTM3YzY5MTVmMzgyM2Uy
OWIyMGE5NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZv
ciBFUzYgYXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9ycworCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
c2ltcGxlQXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rpb24ucHJvdG90eXBlCitQQVNTIHNpbXBsZUFy
cm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVlCitQQVNTIHNpbXBsZUFycm93
RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLW90aGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNjdmOGIwMGU0NjA1NWVlNmZhZTVjMWU4
Mjg5ZWZlZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLW90aGVycy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLXRkei1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZjZDg2MDBlODg0MTI3N2M0OTRhOTg5MDIyNDUy
ZWE2YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
dGR6LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1
bmN0aW9uIHRlc3QgdGR6CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlz
UmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdGR6Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2QzZmM0OGU1YzUzZmMxMTkyNmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjJmYjJjZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUwY2E1MzQ5YzFiYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNT
IHR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKCgpPT57fSkg
PT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKChiKSA9PiB7YiArIDF9KT09PSdm
dW5jdGlvbicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlw
ZW9mLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2NWUzNzNmZWRiNzQzODBlMDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2MWRlM2JhYjUyMDljNzJkZGNmNTAyMTAwMzQ1
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlv
bi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyb3dmdW5j
dGlvbi1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2MWNiZWIwYjllZTEzM2ZlODczMTEyYmZhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNh
bGwuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjRjODQyNzZlNzEwODc3
ODZjNTk0MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwx
NSBAQAordmFyIGFmID0gKGEsIGIpID0+IGEgKyBiOworCitub0lubGluZShhZik7CisKK2Z1bmN0
aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGFmKGEsIGIpOworfQorCitub0lubGluZShiYXIp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQg
PSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTczYzNiNWUw
Y2E3OTE3OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsx
LDE1IEBACit2YXIgZmUgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7fQorCitub0lu
bGluZShmZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZlKGEsIGIpOwor
fQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkg
eworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNTNmMDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0ZTk5NzljMDJhYzJhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpA
QCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlv
biwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kJyk7CisKK3Zh
ciBkID0geworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHogPT4gdGhp
cy54ICsgejsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitzaG91bGRCZSgiZC55
KCkuYmluZChlLCAnbGV5JykoKSIsICInYmFybGV5JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4ZjkxMWJmMWM0NGQzODlkMGEzZDIxODQ2ODM0
ODRiNmY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0
cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJp
bmcgaW52b2tlIGNhbGwmYXBwbHknKTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6
IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9OworCit2YXIgZSA9IHsgeCA6
ICJiYXIiIH07CisKK3Nob3VsZEJlKCdkLnkoKS5jYWxsKGUpJywgIidmb28nIik7CitzaG91bGRC
ZSgnZC55KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmFkMDc2ODQ3YmZmNDkyOWY3ODA3
NzY1Zjk5MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDcgQEAKK2Rl
c2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVjdG9yJyk7
CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZFRocm93KCdu
ZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTU2YTE1NTMwZjM0
Y2MzMDhhY2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKQEAg
LTAsMCArMSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24g
bGV4aWNhbCBiaW5kIG9mIHRoaXMnKTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5u
YW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7Cisg
IHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7Cisg
IHRoaXMuZ2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisK
K3ZhciBkID0gbmV3IERvZygiTWF4Iik7CitzaG91bGRCZSgnZC5nZXROYW1lKCknLCAnZC5uYW1l
Jyk7CitzaG91bGRCZSgnZC5nZXROYW1lSGFyZCgpJywgJ2QubmFtZScpOworc2hvdWxkQmUoJ2Qu
Z2V0TmFtZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1lJyk7CisKK3ZhciBvYmogPSB7CisgIG5hbWUg
ICA6ICdvYmpDb2RlJywKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAodmFs
dWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7CisgIH0KK307CisKK3Nob3VsZEJl
KCJvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInb2JqQ29kZS1uYW1lLWNvcnJlY3QnIik7Citv
YmoubmFtZT0nbmV3T2JqQ29kZSc7CitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0Jyki
LCAiJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworCit2YXIgZGVlcE9iaiA9IHsKKyAgbmFt
ZSA6ICd3cm9uZ09iakNvZGUnLAorICBpbnRlcm5hbE9iamVjdDogeworICAgIG5hbWUgIDonaW50
ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9
PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9CisgIH0KK307CitzaG91bGRCZSgiZGVl
cE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidpbnRlcm5hbE9iamVj
dC1uYW1lLWNvcnJlY3QnIik7CisKK2RlZXBPYmouaW50ZXJuYWxPYmplY3QubmFtZSA9ICduZXdJ
bnRlcm5hbE9iamVjdCc7CisKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhv
ZCgpKCdjb3JyZWN0JykiLCAiJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCciKTsKKwor
dmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgp
ID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3Rvcigp
OworCitzaG91bGRCZSgiaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSIsICJ0cnVlIik7CisK
K3ZhciBvd25lck9iaiA9IHsKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAo
KSA9PiB0aGlzOworICB9Cit9OworCitzaG91bGRCZSgib3duZXJPYmoubWV0aG9kKCkoKSA9PT0g
b3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgZmFrZSA9IHsgc3RlYWwgOiBvd25lck9iai5tZXRo
b2QoKSB9Oworc2hvdWxkQmUoImZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOwor
Cit2YXIgcmVhbCA9IHsgYm9ycm93IDogb3duZXJPYmoubWV0aG9kIH07CitzaG91bGRCZSgicmVh
bC5ib3Jyb3coKSgpID09PSByZWFsIiwgInRydWUiKTsKKwordmFyIGFycm93RnVuY3Rpb24gPSB7
IHggOiAicmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9uIDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+
IHRoaXMueCArIHo7IH19LmdldEFycm93RnVuY3Rpb24oKTsKK3ZhciBob3N0T2JqID0geyB4IDog
Indyb25nIiwgZnVuYyA6IGFycm93RnVuY3Rpb24gfTsKKworc2hvdWxkQmUoImFycm93RnVuY3Rp
b24oJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CitzaG91bGRCZSgiaG9zdE9iai5mdW5jKCct
dGhpcycpIiwgJyJyaWdodC10aGlzIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90
aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNzk5MzFjM2RlYmNiNTAyN2FkMTRmZDE1NDdlNWFiYTAzOGI0
YjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIEluc3BpcmVkIGJ5IG1vemls
bGEgdGVzdHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3Rh
bmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24g
PSAoKSA9PiB7fTsKKworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJv
d0Z1bmN0aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJv
d0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24iLCAidHJ1ZSIpOworc2hvdWxkQmUoInNpbXBs
ZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24iLCAidHJ1ZSIpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY1OGZjNjUxM2VkYWJkZTFk
ZDY1MDc0OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2Ny
aXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6Jyk7CisKK3ZhciBB
ID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0
b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBl
cikgeworICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAgICB9IGVs
c2UgeworICAgICAgc3VwZXIoKTsKKyAgICB9CisgIH0KK307CisKK3ZhciBpc1JlZmVyZW5jZUVy
cm9yID0gZmFsc2U7Cit0cnkgeworICAgICBuZXcgQih0cnVlKTsKK30gY2F0Y2ggKGUpIHsKKyAg
ICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOworfQorCitz
aG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7CisKK3ZhciBlID0gbmV3IEIoZmFs
c2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MmFhMjY5MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBA
IC0wLDAgKzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2Eg
KyAxfTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOwor
CitzaG91bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3Nob3Vs
ZEJlKCJ0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRC
ZSgidHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIiwgInRydWUiKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259150</attachid>
            <date>2015-08-17 08:30:12 -0700</date>
            <delta_ts>2015-08-17 08:47:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817183006.patch</filename>
            <type>text/plain</type>
            <size>178578</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uYTkwN2Y2ZDg4ZDE5NTQ0MjU2ZjNkNzc0NGRhMDQ5
OWVjZmE1ZjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBVTlVT
RURfUEFSQU0oYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZVcoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBv
cGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2
ICsxNjI0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVn
IHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1Q
dHIodWlkKSk7CkBAIC0yMTg4LDYgKzIyMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxl
R2V0U2NvcGUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29t
cGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzNCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQ
UlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9p
ZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVy
ZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNp
emVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZf
dCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9u
KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZh
ZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMzY4Niw3ICszNjg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rp
b25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBj
b21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgICAgIAorCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVu
Y3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIAorCiAgICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZi
YTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcy
OSw3ICszNzI5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwotICAgICAgICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVu
Y3Rpb25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAg
ICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQz
NDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93
RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4
MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2
YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAg
ICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgorICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0
IGFsbG9jYXRlIGdldCB0byBzZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMg
d2Uga25vdwogICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qg
b2JqZWN0IGluIHRoZSBoZWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2
ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQw
MjY1NDFmOTYyZGEwNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdB
cnJvd0Z1bmN0aW9uOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9u
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlv
blN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApp
bmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4
MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52
aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1Njb3BlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4
MzkyMWNmMjRkMzUyNGJjODU3MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3
ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUs
IFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3Ry
dWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5
bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFj
cm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAor
ICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJv
d0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkg
XAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQ
KG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3Vt
ZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3
ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThk
MTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lw
U2NvcGU6CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoK
ICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExv
YWRBcnJvd0Z1bmN0aW9uVGhpczoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFy
Z3VtZW50Q291bnQ6CiAgICAgY2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2
ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0
NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRy
aW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGlu
dDY0LCBpbnRQdHIsIGludDY0LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25f
RUpKLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGlu
dFB0ciwgaW50UHRyKSkgXAorICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rp
b25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhK
X0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwg
aW50MzIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludFB0ciwgaW50UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19K
SVRPcGVyYXRpb25fRVosIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4
IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1Mjdk
ZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
RlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0
ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJP
cGVyYW5kc0lubGluZXMuaCIKQEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAg
ICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6
CisgICAgICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tp
cFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAg
ICBBU1NFUlQobV9ub2RlLT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBO
ZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gbV9ub2RlLT5vcCgpID09IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBM
VmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUg
dGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6
IG51bGxwdHI7CisgICAgICAgIAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBtX25vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAg
IGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewot
ICAgICAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3Bl
LCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3Vs
dCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFr
UG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxs
KG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29w
ZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxs
UmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVj
dHVyZSgpCisgICAgICAgICAgICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBz
bG93IHBhdGgiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUo
c2xvd1BhdGgpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0
ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5j
dGlvbgorICAgICAgICAgICAgPyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRl
T2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgp
OworICAgICAgICAKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJh
cnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAg
ICAgICAgLy8gbXVzdCBiZSB5b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZh
c3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3Jl
UHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rp
b25fZXhlY3V0YWJsZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8s
IGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0
LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpT
QXJyb3dGdW5jdGlvbl9zY29wZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAg
IG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fy
cm93RnVuY3Rpb24gPyAgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVh
cHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93
RnVuY3Rpb24pCisgICAgICAgICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmpl
Y3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9v
dXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9u
ID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9u
X3JhcmVEYXRhKTsKICAgICAgICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQg
PSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51
YXRpb24pOwotICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAg
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQpLAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFr
UG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3Vs
dCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZy
YW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3
OCwxMSBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQog
ICAgIAorICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNv
bXBpbGVTa2lwU2NvcGUoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRy
KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAx
NmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZh
NjIwMDEyZDY5MTk2MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSog
YWN0aXZhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+
cHJvcGVydGllcygpW2ldOwogICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0g
UHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAg
ICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1Zh
bHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRp
b24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9j
KSkKICAgICAgICAgICAgICAgICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVl
OjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24o
KSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExv
YykpIHsKKyAgICAgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJvdW5kVGhpcyA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0
aXZhdGlvbik7CiAKLSAgICAgICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwg
YWN0aXZhdGlvbik7CisgICAgICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fy
cm93RnVuY3Rpb24KKyAgICAgICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9u
LCBib3VuZFRoaXMpCisgICAgICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwog
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2Jk
NmM5MTAwYjQwNGZmMWVkNWUxOWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZj
ODAyYjljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
aW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUz
MzYyZTc5ODViNGJlMDRjN2VmNTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZp
bmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJy
b3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7CiAgICAgY2xhc3MgVk07CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNz
IEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
aW5kZXggNWZhNmI1MzYyZGU5ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uZTEwMTc0YzU0
MWFhMDQ4NTg0MDcxNTljY2NmZjhjMmRhY2RkMGRkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVu
Y3RvcihHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdH
UFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVz
ZWQgdG8gc29ydCBhcmd1bWVudHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8g
T24gWDg2IHdlIHVzZSBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBh
cmd1bWVudHMgb24gdGhlCiAgICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2Ug
bWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMgaW50byB0aGUKQEAgLTIwOSw2ICsyMDgsMTQgQEAgcHVi
bGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgfQogCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVnIGFyZzEsIFRy
dXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCiAgICAgewogICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTk1NSw2ICs5NjIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAg
CiAjZWxpZiBDUFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICsxMDA2LDcgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CiAgICAgfQotCisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiwgRlBSUmVn
IGFyZzQpCiAgICAgewogICAgICAgICBtb3ZlRG91YmxlKGFyZzQsIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CkBAIC0xMDA3LDYgKzEwMTUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjZWxzZQorCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQogICAgIHsK
ICAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgYXJnMSk7CkBAIC0xMTI4LDcgKzExMzcsNyBAQCBwdWJsaWM6CiAjZWxz
ZQogI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgot
CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcx
KQogICAgIHsKICAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpAQCAt
MTIyNyw2ICsxMjM2LDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TTY0KQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIFRydXN0ZWRJbW02NCBhcmcyKQogICAgIHsKQEAgLTE0NzAsNyArMTQ4MCw2
IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55IGNh
bGxpbmcgY29udmVudGlvbiB0aGF0IHByb3ZpZGVzIGZvcgogICAgIC8vIGV4YWN0bHkgNCBhcmd1
bWVudCByZWdpc3RlcnMsIGUuZy4gQVJNdjcuCiAjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUyA9PSA0Ci0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0
KQogICAgIHsKICAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDM4ZjVkN2RiYzA2YWY4MTBmNzFhN2Q0MjQwZDdm
ZjJlYmE0MGViNC4uYmJjODUyM2Y1YmIyM2EzOTMwYzA5NGVkNDg2MjE3NDY0ZDg2YzU1MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE5LDYgKzIxOSw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2VuZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2VudGVyKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Njb3BlKQor
ICAgICAgICBERUZJTkVfT1Aob3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMpCiAgICAgICAgIERF
RklORV9PUChvcF9lcSkKICAgICAgICAgREVGSU5FX09QKG9wX2VxX251bGwpCiAgICAgICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgpAQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJh
eV9idWZmZXIpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuYykKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19mdW5jX2V4cCkKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJvd19mdW5j
X2V4cCkgCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVf
T1Aob3BfbmV3X3JlZ2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25vdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCmluZGV4IDg0MTFhN2VmNjVhOWM2YmRjYzE2YjM2NGViMjhlNDEwMTZiNTg1ODYu
Ljc3MWZkOWI0MDY1YmRkMTcyMmMwZTcyYjg4NzIwOGVjNjJmMWU0NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaApAQCAtNDk4LDYgKzQ5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRfb3BfZW5kKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRl
cihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXEoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiopOwpAQCAtNTM5LDYgKzU0MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZlcihJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfcmVnZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoSW5zdHJ1
Y3Rpb24qKTsKQEAgLTY1Myw2ICs2NTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0UmlnaHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAg
IHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFZhcklu
amVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOwogICAgICAgICB2b2lk
IGVtaXRSZXNvbHZlQ2xvc3VyZShpbnQgZHN0LCBpbnQgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRoKTsKICAgICAgICAgdm9pZCBlbWl0TG9hZFdpdGhT
dHJ1Y3R1cmVDaGVjayhpbnQgc2NvcGUsIFN0cnVjdHVyZSoqIHN0cnVjdHVyZVNsb3QpOwpAQCAt
NzIzLDYgKzcyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkJ5LCBpbnQsIEdQUlJlZywgR1BS
UmVnLCBCeVZhbEluZm8qKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDLCBpbnQsIEdQUlJlZywg
SlNDZWxsKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpzY0NKLCBpbnQsIEdQUlJlZywgSlNDZWxsKiwgR1BSUmVnKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNj
WiwgR1BSUmVnLCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiwgaW50LCBHUFJSZWcsIGludDMyX3QpOwogI2lm
IFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4
IDVkNjg2OTAwODFjOTk2ZDdlMzNiZjNiZDI1ZGNjNThiMDMwZjdkNmMuLmZiYWIyY2MwZjM5NzI0
OTU2YmY1ODQ5MWIzZGU3ODNhNmZjZGMyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCkBAIC0yNzEsNiArMjcxLDEyIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhCiAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9w
ZXJhdGlvbiwgZHN0KTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBK
SVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgaW50IGRz
dCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCit7CisgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOwor
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChv
cGVyYXRpb24sIGRzdCk7Cit9CisgICAgCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIGludCBk
c3QsIHZvaWQqIHBvaW50ZXIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIocG9pbnRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggNTk4ZDRlYzk5YzFkMThlNmMzOTYyMTE5NzIwYWNlYWMxZWUyZmE2ZC4uYzgz
YmNjOGM0NWRlNjY2ZjczYzllOTExZjUxNDI5ZjM1ZWIxMTM0NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGVh
cC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5j
bHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpAQCAt
NjczLDYgKzY3NCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rp
b246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgcmVnVDApOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0
LCByZWdUMCk7CiB9CisgICAgCit2b2lkIEpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25f
dGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSwgcmVnVDApOworICAg
IGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7Cit9CiAKIHZvaWQgSklUOjplbWl0X29wX3RvX3Ro
aXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTk2MiwyNiArOTcxLDQ1
IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogeworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5z
dHJ1Y3Rpb24pOworfQorICAgIAordm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIE9wY29kZUlEIG9wY29kZUlEID0g
bV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNv
ZGUpOworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gb3Bjb2RlSUQgPT0gb3BfbmV3X2Fycm93
X2Z1bmNfZXhwOworICAgIAogICAgIEp1bXAgbm90VW5kZWZpbmVkU2NvcGU7CiAgICAgaW50IGRz
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQsIHJlZ1QwKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAg
ICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOwogICAgIHN0b3JlNjQoVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIEFkZHJlc3MoY2FsbEZyYW1l
UmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBkc3QpKTsKICNlbHNlCiAgICAgZW1pdExvYWRQ
YXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBpZiAo
aXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJhbmNo
MzIoTm90RXF1YWwsIHRhZ0ZvcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOwogICAgIGVtaXRTdG9yZShkc3QsIGpz
VW5kZWZpbmVkKCkpOwogI2VuZGlmCi0KICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgbm90
VW5kZWZpbmVkU2NvcGUubGluayh0aGlzKTsKLQotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y0V4cHIgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwg
cmVnVDAsIGZ1bmNFeHByKTsKKyAgICAgICAgCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbiA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDEp
OworICAgIGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwg
ZHN0LCByZWdUMCwgZnVuY3Rpb24pOwogICAgIGRvbmUubGluayh0aGlzKTsKIH0KLQorICAgIAor
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVj
dGlvbik7Cit9CisgICAgCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAppbmRleCA5MWMwMGUzZmQ0NWUwOTdlM2JiMWMzNzlkN2M5MDNmMGZkNjIwOTlhLi5i
MzlhZTFkMWEzMDY4MDM0M2U5ZmQ5YTcyMzE0MjliNmU1NDQxMGE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgpAQCAtOTIyLDYgKzkyMywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwg
cmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSwgcmVnVDApOworICAgIGVtaXRT
dG9yZUNlbGwoZHN0LCByZWdUMCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGNhbGxlZSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiNWY5ZTM2OWE3ZTU3YmFmZjA0NmQyYTM2NWRiYzAy
NGNkY2RiOTNiLi40ZmYwZTNkMTUwYjQyNjBlZjk0YjIxZTNjYmEwZjIzMTJmYjQzOGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9u
bWVudC5oIgpAQCAtOTQyLDYgKzk0MywzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0YwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgc3Rh
dGljIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSog
c2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKK3sKKyAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxl
LT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1
bmN0aW9uRXhlY3V0YWJsZSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgICAgIAorICAgIEpTQXJyb3dG
dW5jdGlvbiogYXJyb3dGdW5jdGlvbiAgPSBpc0ludmFsaWRhdGVkCisgICAgICAgID8gSlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZt
LCBleGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpCisgICAgICAg
IDogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShh
cnJvd0Z1bmN0aW9uKTsKK30KKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1Zh
bHVlLCB0cnVlKTsKK30KKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0Nl
bGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAg
IHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCAzZDgzZjU5MGRjZjkxODAzYTM0NDhiYTA4M2IyZjkyYmNi
ZTg0ZjliLi5hNjdjYWFjYjMyZmIyMTU4YTljMDVlNmE1MDk2MjFiM2I4M2U4ZTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTIyLDYgKzEyMiw3IEBA
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQ
UCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwog
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBj
KShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VKc2NDSikoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0
aW9uX0VTUykoRXhlY1N0YXRlKiwgc2l6ZV90LCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUNJKShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU3NpSkkpKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJp
bmdJbXBsKik7CkBAIC0yODgsNiArMjg5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcldpdGhQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmEKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFBy
b2ZpbGUoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEVuY29kZWRKU1ZhbHVl
IHNpemUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRsZVdhdGNoZG9nVGltZXIoRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAyZDQ2NzdjNjY1NTdiYmNjNWU0ZDEwOWVm
OWIwMTM4ZDlhODNmMWVjLi5hMmE2YjJiMTFjNTY4MWUwYjZlOTcwYzRmZDExYzk2ZTE5ZGI5M2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAi
SlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIlZNLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1NWI4MWVlMGY3OGZhN2FkOWEyMGRjZDQ3NjgxMmI0
MWY1Njg1ZDdmLi4yY2Q5ZjZlYjhkNjgzODY4NzA5N2M0ZWNjZTc5MjE1OTE1MTAxZjAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNzEsNyArMTcyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgICAgIEV4ZWNTdGF0ZSogX19yY2ZfZXhlYyA9
IChleGVjQ2FsbGVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5U
X1JFVFVSTl9UV08ocGMsIF9fcmNmX2V4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCi0KKyAgICAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBA
IC0xMDEzLDEyICsxMDE0LDI0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
ZnVuYykKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1sy
XS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwotICAg
IEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBzY29w
ZSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5j
dGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKICAgICAKLSAgICBMTElOVF9SRVRVUk4oZnVuYyk7
CisgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5j
X2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBM
TElOVF9PUF9DKDQpLmpzVmFsdWUoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1sy
XS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOKEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgdGhpc1ZhbHVlKSk7CiB9CiAKIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUg
aGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpT
VmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMDk2LDcgKzEx
MDksNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZQogICAgIEpTU2NvcGUqIHNjb3BlID0gY2Fs
bGVlLT5zY29wZVVuY2hlY2tlZCgpOwogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKICAgICBF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwotICAgIAor
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSAwOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA4Y2M2OWE5NjAw
YmJmOWQ4NTMzOWQ2MDk1OTVmNjdjNjhkMDc2NzFiLi4zZjFkYWE4MTJiNzAyZTIzYzZhYWVmOWZk
N2MwNjcxZWUyMDI1YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaApAQCAtOTcsNiArOTcsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3N3aXRjaF9jaGFyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfc3dpdGNoX3N0cmluZyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX25ld19mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3
X2Z1bmNfZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fy
cm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2Fs
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFy
Z3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IGM5MTA2MTdlZDgzNGI3NGM5ZjJmOGVlNGIyNjg3YzhiOWNmZTNjN2Mu
LjczZmM1ODg0NDJkZGM0YjljZmE3Yjg4ZjAwNGNhODY3M2U0OTlhNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEx
ODMsNiArMTE4MywxMCBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxp
bnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCisgICAgZGlzcGF0
Y2goNSkKIAogX2xsaW50X29wX2NhbGw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQppbmRleCBlOTBlY2VkZmE3MzA5ODJmZWVmNzFlZWIwY2VhNjQzODIzNGE2OTFjLi43ZWY2
Yjg3YzE3MGFkMDgzYjFmNTI5ZGE4ODM2YzAwY2RhNjRiNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpA
QCAtMjM3MywzICsyMzczLDEyIEBAIF9sbGludF9vcF9wcm9maWxlX3R5cGU6CiAKIC5vcFByb2Zp
bGVUeXBlRG9uZToKICAgICBkaXNwYXRjaCg2KQorCitfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIENhbGxlZSArIFBheWxv
YWRPZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBKU0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlz
W3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQppbmRleCBkOTQ1NWY3NWM3YjY2NDJmYjhjODcyM2ZjMTUyYTM3OTA5MTAzYjVi
Li5kMjE1MmEyZjI3N2FkZTU4Nzk3NmExYzNmMTIwMjM3MjliMzhhNTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpA
QCAtMjIyNiwzICsyMjI2LDExIEBAIF9sbGludF9vcF9wcm9maWxlX3R5cGU6CiAKIC5vcFByb2Zp
bGVUeXBlRG9uZToKICAgICBkaXNwYXRjaCg2KQorCitfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0
MAorICAgIGxvYWRwIEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQor
ICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA3YjU4NzczMGE2ZjAzNTQ0MGRiOTBk
OWM0MjY4MGFkNTc4Yjk0YTY3Li44MDZkYjUyMzAzZDVhZDNhNzE4ODEyOWY4OGJkNzY0YzZiNTBl
ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzYx
LDE5ICszNjEsMTkgQEAgcHVibGljOgogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAg
ICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZSBtb2RlKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBl
bmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAg
ICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQs
IG1vZGUpOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBh
cmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgIH0KIAogICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9u
SW5mbykKICAgICB7CisgICAgICAgIHVzZXNUaGlzKCk7CiAgICAgICAgIFNvdXJjZUNvZGUgc291
cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNl
dCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rp
b25JbmZvLmJvZHlTdGFydENvbHVtbik7Ci0KLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5m
by5uYW1lLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKKyAgICAgICAgQXJyb3dGdW5jRXhw
ck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXJyb3dGdW5jRXhwck5vZGUobG9j
YXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CiAg
ICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwg
ZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5l
U3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggYWJiNzJhNzRl
MTI4ODQ4ZWE4YjQzZmQ4NjM2OTc0Y2I5OTdjMzdkYi4uYmRjMWJlZTc3ODQ0ODcyYWE2MjRkNDQz
YmNiYTE5NjkzYWRiZDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmgKQEAgLTg5MCwxMyArODkwLDE5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Up
CisgICAgCisgICAgaW5saW5lIEJhc2VGdW5jRXhwck5vZGU6OkJhc2VGdW5jRXhwck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Up
CiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9tZXRhZGF0
YShtX21ldGFkYXRhKQogICAgIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhz
b3VyY2UsIGlkZW50LCBGdW5jdGlvbkV4cHJlc3Npb24pOwogICAgIH0KIAorICAgIGlubGluZSBG
dW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRh
dGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVuY0V4cHJOb2Rl
KGxvY2F0aW9uLCBpZGVudCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAgICB9CisKICAg
ICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCkBAIC05
MDQsNiArOTEwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtX21ldGFkYXRhLT5maW5p
c2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRGVjbGFyYXRpb24pOwogICAgIH0KIAor
ICAgIGlubGluZSBBcnJvd0Z1bmNFeHByTm9kZTo6QXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAg
ICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1fbWV0YWRhdGEsIHNvdXJj
ZSkKKyAgICB7CisgICAgfQorCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCiAgICAgaW5s
aW5lIENsYXNzRGVjbE5vZGU6OkNsYXNzRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNsYXNzRGVjbGFyYXRpb24pCiAgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsb2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAK
aW5kZXggY2Y0ZmU0NTBhOTI0OTUwNGYzMGJhODVhMjY0ZTY3YmFhOWE1NWM5Ni4uMThmODQ1NTMz
MDVjNGEwYzIxYzczMzg4MzljMjlmMjNjNzRkZTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6
RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9j
YXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGlu
dCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2Rl
IG1vZGUpCisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikK
ICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3Rh
cnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYzLDYgKzE2
Myw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAg
ICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJ
blN0cmljdENvbnRleHQpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCisgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24o
aXNBcnJvd0Z1bmN0aW9uKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKaW5kZXggMWQ2YjAzZDc3NjYyOTdhZTE3NTkzYmJhOWFlYzU2MDkzMjkz
MGMyZC4uODczNjY4ZWMzN2I0MjdiOTIwNjQ5ZGUzMDY4MzgxZTJjZDhhMTU3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTY1LDYgKzE2NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHBy
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fy
cm93RnVuY0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzQ29tbWFOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzU2ltcGxlQXJyYXkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTgwOSw3
ICsxODEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAK
ICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGlu
dCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAg
ICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKKyAgICAg
ICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3Vy
Y2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAt
MTgzNSw2ICsxODM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBzdGFydFN0YXJ0
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJv
b2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0
OyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9u
OyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBs
YXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICB7
CkBAIC0xODYwLDYgKzE4NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU291cmNlUGFy
c2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0
IDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgICAgICB1
bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmN0
aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBTY29wZU5vZGUgewpAQCAtMTg4OSwxOCArMTg5MiwzNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsK
IAotICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAg
Y2xhc3MgQmFzZUZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwor
ICAgICAgICBCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAog
ICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEoKSB7IHJldHVybiBtX21ldGFk
YXRhOyB9CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBt
X21ldGFkYXRhOworICAgIH07CisKKworICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBC
YXNlRnVuY0V4cHJOb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEZ1bmNFeHByTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH07CiAKLSAgICAgICAgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7CisgICAgY2xhc3MgQXJyb3dGdW5jRXhwck5vZGUg
OiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBBcnJvd0Z1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisKKyAgICAgICAgdmlydHVhbCBib29sIGlz
QXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
fTsKIAogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IGFlZTcwYjZhNzMyOWJjMTFiNWNlNzNkNTM1MmQzMTNlMjJh
MjdiZTEuLmY1MDgxNGU3YjE0MmFiNTMwMGQ4NGE0YjcwMTlmOWM5ODRlMmIxODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE1NDYsMTEgKzE1NDYsMTIgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uQm8KICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlU
eXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSkKIHsKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6
OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgaWYgKGJvZHlUeXBl
ID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgfHwgYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlv
bkJvZHlCbG9jaykgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJS
QUNFKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsK
LSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0
TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1
bmN0aW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTU2Miw3ICsxNTYzLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uQm8KICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291
cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUg
PT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlz
IGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7
CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24o
KSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5k
LCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hh
ciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTczNyw3
ICsxNzM4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICB9CiAgICAgCiAgICAgYm9v
bCBpc0NsYXNzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lOwotCisgICAgCiAgICAgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0
Q29sdW1uOwogICAgIAogICAgIC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBmdW5jdGlvbiBhbHJl
YWR5LCB3ZSBjYW4gdXNlIHRoZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUgcGFyc2VyIHRvIHRo
ZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgpAQCAtMTc1NiwxMSArMTc1NywxMyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25J
bmZvKFRyZWVCdWlsZAogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBtX3Rv
a2VuLm1fZGF0YS5saW5lU3RhcnRPZmZzZXQgOgogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3Rh
cnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVk
IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zm
c2V0OwotCisgICAgICAgIAorICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IHBhcnNlVHlw
ZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlOworICAgICAgICAKICAgICAgICAgZnVuY3Rpb25J
bmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBz
dGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwg
Ym9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rp
b25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5z
dHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBt
b2RlKTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2lu
ZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAg
ICAgICAgIAogICAgICAgICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVy
Q2FjaGUoY2FjaGVkSW5mbyk7CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVC
dWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwpAQCAtMTc3NCw3ICsxNzc3LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1
bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihtX3Rv
a2VuLm1fbG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBj
YWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAotICAgICAgICBpZiAocGFyc2VUeXBlID09
IEFycm93RnVuY3Rpb25QYXJzZVR5cGUpCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCiAg
ICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHBy
ZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5
QmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFu
ZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaAppbmRleCAwNzYwYzE5ZWIxNjM2ZGIyMWExNzk2MTJhNTQ5NmUxOWNmZDFi
YjA3Li5kYzU2MWY5YjFhNmRhMzY0M2I4MjcyZmU3YjEyZTIxNWU0NGY0MmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTg2LDcgKzE4Niw3
IEBAIHB1YmxpYzoKICAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVz
c2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7
IH0KICNlbmRpZgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4m
KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNl
UGFyc2VNb2RlKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRl
RnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1
bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1
bHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4m
KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0
KGludCwgaW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1l
bnRzUmVzdWx0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCmluZGV4IDBhYjE2NzIxMTY4MTk0YzFhNjAyODllYjg1NmU5OGMwY2ZhMTdiNzkuLjlkYzY5
NGYyN2E0NTg3M2IyYTIxNjdhMzY5NjM1ZDNlNTk0NWFiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yMzYsOCArMjM2LDcgQEAgUmVmUHRy
PENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkgPyBEZWJ1
Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGds
b2JhbE9iamVjdC0+aGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9mZjsKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9Ci0gICAgICAg
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3IoCi0gICAgICAg
ICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2Zp
bGVyTW9kZSwgZXJyb3IpOworICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5j
b2RlQmxvY2tGb3IoKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2Rl
LCBwcm9maWxlck1vZGUsIGVycm9yLCBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CiAg
ICAgcmVjb3JkUGFyc2UoZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVz
KCksIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxl
cygpLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgc3RhcnRDb2x1bW4oKSwgZW5kQ29sdW1uKCkp
OyAKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IHZt
LT50aHJvd0V4Y2VwdGlvbigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAppbmRleCBiY2UyNDI4Y2JjMTAxZGRhNmNiMTAxZDcwYmYwMjdmN2UwZWEzZGYwLi5jZjJi
ZGU4OGM1YTZlOTE2NzYwMzZlZTI3ZDc0NGY3NjQ1MzljYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQog
CiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25E
ZWNscygpOyB9CkBAIC01MzAsNyArNTMwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNv
ZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1
cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0
TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7IH0KKyAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjMzLDYgKzYzMyw3IEBAIHB1YmxpYzoK
ICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9
CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQorICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJy
b3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5j
dGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5h
bWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk1MWMyNjBlMTZhMjBlMmI4NDA5YWViYjlhMmU1OWRiOWIzZGY0ODYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rp
b24uY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3Nh
bmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgor
I2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNB
cnJvd0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Fycm93RnVuY3Rpb24pIH07CisKK3ZvaWQgSlNBcnJv
d0Z1bmN0aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0Fy
cm93RnVuY3Rpb24qPihjZWxsKS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7
Cit9CisKK0pTQXJyb3dGdW5jdGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJv
dW5kVGhpcykKK3sKKyAgICBKU0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0s
IGV4ZWN1dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRv
bkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCByZXN1bHQsICJBbGxvY2F0aW5nIGFuIGFycm93
IGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNBcnJvd0Z1bmN0aW9uOjpK
U0Fycm93RnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
U2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUo
KSkKKyAgICAsIG1fYm91bmRUaGlzKHZtLCB0aGlzLCBib3VuZFRoaXMpCit7Cit9CisKK0pTQXJy
b3dGdW5jdGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgQVNTRVJUKGV4ZWN1dGFi
bGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPmhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICByZXR1
cm4gY3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKK30KKwordm9pZCBK
U0Fycm93RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0Fycm93RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNB
cnJvd0Z1bmN0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZFRoaXMpOwor
fQorCitDb25zdHJ1Y3RUeXBlIEpTQXJyb3dGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJikKK3sKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Fycm93RnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjU2ZjY4ZWZlZWRkODIzMWEzNWIyZmMy
NDlmZDgxYWM5N2Y1YjIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQXJy
b3dGdW5jdGlvbl9oCisjZGVmaW5lIEpTQXJyb3dGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisgICAgCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKK2NsYXNzIExMSW50RGVzaXJlZE9mZnNldHM7CisgICAgCitjbGFzcyBKU0Fycm93RnVuY3Rp
b24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBm
cmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBW
TTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBK
U0Fycm93RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUq
LCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSosIEpTVmFsdWUpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAg
ICAKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0
eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVD
YXBhY2l0eSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNBcnJvd0Z1bmN0aW9uKTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91
bmRUaGlzKQorICAgIHsKKyAgICAgICAgSlNBcnJvd0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyb3dGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXJyb3dG
dW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7CisgICAgICAgIEFTU0VS
VChmdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgZnVuY3Rp
b24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmKTsKKworICAgIEpTVmFsdWUgYm91bmRUaGlzKCkgeyByZXR1cm4gbV9i
b3VuZFRoaXMuZ2V0KCk7IH0KKyAgICAKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworICAgIAor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlm
Zl90IG9mZnNldE9mVGhpc1ZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNBcnJvd0Z1bmN0aW9uLCBtX2JvdW5kVGhpcyk7CisgICAgfQorICAgIAorICAgIGNv
bnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OworCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworICAgICAgICAKK3ByaXZhdGU6CisgICAgSlNBcnJvd0Z1bmN0aW9uKFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgIAorICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCisgICAgV3JpdGVCYXJyaWVy
PFVua25vd24+IG1fYm91bmRUaGlzOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gSlNBcnJvd0Z1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAppbmRleCAwYjg3ZDc1YzkxNDUwYzVhZjFhYWVkMjdhNjFhNzQ4ZWY4MGYw
OTNlLi45MjgzNTBlMjQ3OGM0NWY3YmY3ZThhYTg0YzllYzNhNGUyNTJhODZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNDEsNiArMTQxLDcgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKICAgICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGY2YzZkNThlYzZl
NWMxMTY0Y2IyN2ZhNWU0MTYxOGI0YjgxNDJmMDIuLmYwNTk1ODRjZjA3ZDdmZDY5ZWEyZGNmZTI3
YjYzYjY0NGE4ODQ0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaApAQCAtNDQsNiArNDQsMTMgQEAgaW5saW5lIEpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHMKICAgICAsIG1fcmFyZURhdGEoKQogewogfQorICAgIAoraW5saW5lIEpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHNjb3BlLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX2V4ZWN1dGFibGUodm0sIHRoaXMsIGV4ZWN1dGFibGUpCisgICAg
LCBtX3JhcmVEYXRhKCkKK3sKK30KIAogaW5saW5lIEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNGdW5j
dGlvbjo6anNFeGVjdXRhYmxlKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjZWU5YmJkOTQwNDQ5MTI4OTQzODI3
MWQwMDQ0MTdjMjI5YWQwNDIzLi5kYTFhYzI1YWFiMDA4NjJjZDUzNzMwZjlhNWFkMTI1YTJkYzBm
ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBleGVjLT5zZXRDYWxsZWUobV9nbG9iYWxDYWxsZWUu
Z2V0KCkpOwogCiAgICAgbV9mdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rp
b246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkp
OworICAgIG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQXJyb3dGdW5j
dGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSk7CiAgICAgbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNCb3VuZEZ1
bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpKTsKICAgICBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0s
IG1fZnVuY3Rpb25OYW1lT2Zmc2V0KSk7CiAgICAgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CkBAIC03OTUsNiArNzk3LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxlZVN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25TdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Fycm93RnVuY3Rpb25TdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25T
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVj
dFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3Ry
dWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDk5ODZiY2Y2MjQ1ZTJjYzQ2ODIwYjEzMTAyYjIzNDI5MDBlYzNkN2IuLmJkMTJi
MjkzMDU1ZTliYWUzMGJiNzNmZDkwMTViYzAwMzgzNjNjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjMyLDYgKzIzMiw3IEBAIHBy
b3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxlZVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKKyAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFByb3BlcnR5
T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CkBAIC00NjIsNiArNDYzLDcgQEAgcHVibGljOgogICAg
IFN0cnVjdHVyZSogY2FsbGVlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWVTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYm91
bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0cnVj
dHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogYXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogbmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGdW5j
dGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAgICAgU3RydWN0
dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVj
dFN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQt
dmFsdWUtdGR6LWVycm9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVy
cm9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMxZTNhNjZlYTkyZjAzMGRiMzc3OWE0YzNlNDAyZTdjMTE4ZDFk
ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHot
ZXJyb3IuanMKQEAgLTAsMCArMSw0NiBAQAorInVzZSBzdHJpY3QiOworCit2YXIgbiA9IDEwMDAw
MDA7CisKK2Z1bmN0aW9uIHNob3VsZFRocm93VERaKGZ1bmMpIHsKKyAgICB2YXIgaGFzVGhyb3du
ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICBpZiAoZS5uYW1lLmluZGV4T2YoIlJlZmVyZW5jZUVycm9yIikgIT09IC0xKQorICAg
ICAgICAgICAgaGFzVGhyb3duID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFoYXNUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRGlkIG5vdCB0aHJvdyBURFogZXJyb3IiKTsKK30KKwor
ZnVuY3Rpb24gYmFyKGYpIHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIGxldCByZXN1bHQg
PSAwOworICAgIHZhciBzZXQgPSAgKHgpID0+IHsgcmVzdWx0ID0geDsgcmV0dXJuIHRkelBlcnBl
dHJhdG9yOyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAo
YikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgICAgICByZXR1cm4gdGR6UGVycGV0
cmF0b3I7CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IHRkelBlcnBldHJhdG9yOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworbm9Jbmxp
bmUoc2hvdWxkVGhyb3dURFopOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAg
IHZhciBib29sID0gIShpICUgMTAwKTsKKyAgICBpZiAoYm9vbCkKKyAgICAgICAgc2hvdWxkVGhy
b3dURFooKCk9PiB7IGZvbyhib29sKTsgfSk7CisgICAgZWxzZSB7CisgICAgICAgIHZhciByZXN1
bHQgPSBmb28oYm9vbCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICB9Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZh
dWx0LXZhbHVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0MWJiZTE0MDI0MTRkYjI2YzZiN2ZkNDAxZmIwZTlj
NjVhNGJhNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1
ZS5qcwpAQCAtMCwwICsxLDM3IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcihz
ZXQpIHsKKyAgICB2YXIgcmVzdWx0ID0gc2V0KDApOworICAgIGlmIChyZXN1bHQgIT09IHZvaWQg
MCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyByZXN1bHQ7Cit9CisKK2Z1
bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIGltVW5kZWZpbmVk
OworICAgIHZhciBiYXo7CisgICAgdmFyIHNldCA9ICAoeCkgPT4geworICAgICAgICByZXN1bHQg
PSB4OworICAgICAgICBpZiAoYmF6ICE9PSA1MCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHZhbHVlOiAiICsgYmF6OworICAgICAgICByZXR1cm4gaW1VbmRlZmluZWQ7CisgICAgfTsK
KyAgICBiYXogPSA1MDsKKyAgICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAg
IGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25v
SW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJl
c3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNp
bmstb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTQzN2FmN2Iy
YzJhZDM0NWUyNmMyMDM3Nzg5MGRmNWYzMWZhZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2lu
ay1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rp
b24gYmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7Cisg
ICAgdmFyIHNldCA9ICh4KSA9PiB7IHJlc3VsdCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAg
ICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
bjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVz
dWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YTc5
ZWM5ZWFhNjVjNTQxOTMwYjkwNDgyNmU3YTIzYTEzZmIyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlv
bi1zaW5rLmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK2Z1bmN0aW9u
IGJhcihmKSB7IGYoMTApOyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9
IDA7CisgICAgdmFyIHNldCA9IHggPT4geyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAg
ICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMTApCisgICAgICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShp
ICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIw
MzIwODhhYmYyNmRhZTJhZTcxYTJhYzRjMDVkNGYwNzc1NWU0MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ib3VuZC5q
cwpAQCAtMCwwICsxLDE4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBl
Y3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93
IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBh
Y3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBkID0geworICB4IDogImJhciIsCisgIHkgOiBm
dW5jdGlvbigpIHsgcmV0dXJuIHogPT4gdGhpcy54ICsgejsgfQorfTsKKworbm9JbmxpbmUoZC55
KTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkr
KykgeworICB0ZXN0Q2FzZShkLnkoKS5iaW5kKGUsICJsZXkiKSgpLCAiYmFybGV5IiwgIkVycm9y
OiBmdW5jdGlvbiBiaW5kIHNob3VsZG4ndCBjaGFuZ2UgbGV4aWNhbCBiaW5kaW5nIG9mIHRoZSBh
cnJvdyBmdW5jdGlvbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc3ZTBhZDlj
ODNhYzUzYTdmNmQzNTE5NjIzMjE0YzFlOWZjNjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAs
MCArMSwxOCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdl
ICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsg
IiciOworICB9Cit9OworCit2YXIgZCA9IHsKKyAgeCA6ICJmb28iLAorICB5IDogZnVuY3Rpb24o
KSB7IHJldHVybiAoKSA9PiB0aGlzLng7IH0KK307Citub0lubGluZShkLnkpOworCit2YXIgZSA9
IHsgeCA6ICJiYXIiIH07CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDtpKyspeworICAgIHRlc3RD
YXNlKGQueSgpLmNhbGwoZSksICJmb28iLCAiRXJyb3I6IGZ1bmN0aW9uIGNhbGwgc2hvdWxuJ3Qg
Y2hhbmdlIHRoZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7CisgICAg
dGVzdENhc2UoZC55KCkuYXBwbHkoZSksICJmb28iLCAiRXJyb3I6IGZ1bmN0aW9uIGFwcGx5IHNo
b3Vsbid0IGNoYW5nZSB0aGUgbGV4aWNhbCBiaW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1YmViNTU3ZDc5
NDliYzZiMmM3OGFiNDY1OWVhOGMyYWM2M2RlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMK
QEAgLTAsMCArMSwyMiBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBt
ZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0
dWFsICsgIiciOworICB9Cit9OworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9
OworCitub0lubGluZShzaW1wbGVBcnJvd0Z1bmN0aW9uKTsKKwordmFyIGVycm9yT25DcmVhdGUg
PSBmYWxzZTsKKworZm9yIChpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRyeSB7CisgICAgICAgdmFy
IGZjID0gbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKTsKKyAgIH0KKyAgIGNhdGNoIChlKSB7Cisg
ICAgIGVycm9yT25DcmVhdGUgPSB0cnVlOworICAgfQorCisgICAgdGVzdENhc2UoZXJyb3JPbkNy
ZWF0ZSwgdHJ1ZSwgIkVycm9yOiBObyBleGNlcHRpb24gZHVyaW5nIHJ1biBuZXcgQXJyb3dGdW5j
dGlvbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40Y2ZhYjI0YzkxYmM1N2M5NTg3NjMyZGZlYzlhNGM5Mzc5OGUyMTVjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMKQEAgLTAsMCArMSwxOSBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5j
dGlvbiBEb2cobmFtZSkgeworICB0aGlzLm5hbWUgPSBuYW1lOworICB0aGlzLmdldE5hbWUgPSAo
KSA9PiBldmFsKCJ0aGlzLm5hbWUiKTsKKyAgdGhpcy5nZXROYW1lSGFyZCA9ICgpID0+IGV2YWwo
IigoKSA9PiB0aGlzLm5hbWUpKCkiKTsKK30KKworbm9JbmxpbmUoRG9nKQorCitmb3IgKHZhciBp
PTA7aTwxMDAwMDsgaSsrKSB7CisgIHZhciBkID0gbmV3IERvZygiTWF4Iik7CisgIHRlc3RDYXNl
KGQuZ2V0TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRl
ZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFt
ZUhhcmQoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5z
aWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTdkYjMwM2NkZmUzZDE1ZGE0NWM4
MTY0ZTQ4ZDAzYTY3ZWI5MmE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIuanMKQEAg
LTAsMCArMSwzOSBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQs
IG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNz
YWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFs
ICsgIiciOworICB9Cit9OworCit2YXIgZnVuY3Rpb25Db25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgp
IHsKKyAgdGhpcy5mdW5jID0gKCkgPT4gdGhpczsKK307CisKK3ZhciBpbnN0YW5jZSA9IG5ldyBm
dW5jdGlvbkNvbnN0cnVjdG9yKCk7CisKK3Rlc3RDYXNlKGluc3RhbmNlLmZ1bmMoKSA9PT0gaW5z
dGFuY2UsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUg
b2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisKK3ZhciBvYmogPSB7CisgIG1ldGhvZDogZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB0aGlzOworICB9Cit9OworCitub0lubGluZShv
YmoubWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykgeworICAgIHRlc3RD
YXNlKG9iai5tZXRob2QoKSgpID09PSBvYmosIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4
aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMzIik7Cit9CisKK3Zh
ciBmYWtlID0ge3N0ZWFsOiBvYmoubWV0aG9kKCl9Oworbm9JbmxpbmUoZmFrZS5zdGVhbCk7CisK
K2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShmYWtlLnN0ZWFs
KCkgPT09IG9iaiwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGlu
c2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzQiKTsKK30KKwordmFyIHJlYWwgPSB7Ym9ycm93
OiBvYmoubWV0aG9kfTsKK25vSW5saW5lKHJlYWwuYm9ycm93KTsKKworZm9yICh2YXIgaT0wOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKHJlYWwuYm9ycm93KCkoKSA9PT0gcmVhbCwg
dHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLTMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAxOTA4NmQ1ODQ3OWM0YmQ0ZmUwZjUyN2IzYTdiYjg5
MzljMDkyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCkBAIC0wLDAgKzEsMjgg
QEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4
cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAg
fQorfTsKKworCit2YXIgb2JqID0geyBuYW1lOidvYmonLCBtZXRob2Q6IGZ1bmN0aW9uICgpIHsg
cmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfX07CisKK2Zv
ciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKG9iai5tZXRob2QoKSgndGVz
dCcgKyBpLnRvU3RyaW5nKCkpLCAnb2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICMxIik7Cit9CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHZhciByZXN1
bHQxID0gb2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSk7CisgIHRlc3RDYXNlKHJl
c3VsdDEsICdvYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5v
dCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30K
Kworb2JqLm5hbWU9J25ld09iaic7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7Cisg
IHRlc3RDYXNlKG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnbmV3T2JqLW5h
bWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CisKK2ZvciAodmFyIGk9
MDsgaTwxMDAwMDsgaSsrKSB7CisgIHZhciByZXN1bHQyID0gb2JqLm1ldGhvZCgpKCd0ZXN0JyAr
IGkudG9TdHJpbmcoKSk7CisgIHRlc3RDYXNlKHJlc3VsdDIsICduZXdPYmotbmFtZS10ZXN0JyAr
IGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lk
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODViZDM2M2U0ZTQ2YjAyZDJmMTliYmUz
ODUwMmY1MjgyMzNhOWYxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzCkBAIC0w
LDAgKzEsMjYgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2Fn
ZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCAr
ICInIjsKKyAgfQorfTsKKworCit2YXIgb2JqID0geworICBuYW1lOidvYmonLAorICBpbnRlcm5h
bE9iamVjdDogeworICAgIG5hbWUgIDonaW50ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVu
Y3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVl
OyB9CisgIH0KK307CisKK25vSW5saW5lKG9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QpOworCitm
b3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKG9iai5pbnRlcm5hbE9i
amVjdC5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnaW50ZXJuYWxPYmplY3QtbmFt
ZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmlu
ZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworb2JqLmludGVybmFs
T2JqZWN0Lm5hbWU9J25ld0ludGVybmFsT2JqZWN0JzsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAw
OyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3Qn
ICsgaS50b1N0cmluZygpKSwgJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3Ry
aW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy01LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3NTQ5NGNlNmI2NmRiMGE3ZWI0M2RjYzgzZWMxZWFj
ZTYyODc1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpAQCAtMCwwICsxLDQ4
IEBACit2YXIgc29ydGVkVmFsdWVzOworCit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFs
LCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAg
IHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMg
JyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsKKyAgYXJyOiBbMSwg
NCwgNiwgMywgNywgMF0sCisgIGJ1YmJsZVNvcnQ6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
KCkgPT4geworICAgICAgdmFyIHRtcDsKKyAgICAgIHZhciBhciA9IHRoaXMuYXJyLnNsaWNlKCk7
CisgICAgICB2YXIgX2xlbmd0aCA9IGFyLmxlbmd0aAorICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBfbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPiAwOyBqLS0pIHsK
KyAgICAgICAgICBpZiAoKGFyW2pdIC0gYXJbaiAtIDFdKSA8IDApIHsKKyAgICAgICAgICAgIHRt
cCA9IGFyW2pdOworICAgICAgICAgICAgYXJbal0gPSBhcltqIC0gMV07CisgICAgICAgICAgICBh
cltqIC0gMV0gPSB0bXA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBy
ZXR1cm4gYXI7CisgICAgfQorICB9Cit9OworCitub0lubGluZShvYmouYnViYmxlU29ydCk7CisK
K2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgb2JqLmFyciA9IFsxLCAyLCA0LCA2
LCAzLCA3LCAwXTsKKyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCkubGVuZ3RoLCA3LCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjMSIpOworCisgICAgdmFyIHNvcnRlZFZhbHVlcyA9IG9iai5idWJibGVTb3J0KCko
KTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbMF0sIDAsICJFcnJvcjogdGhpcyBpcyBub3Qg
bGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM2Iik7CisgICAg
dGVzdENhc2Uoc29ydGVkVmFsdWVzWzZdLCA3LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxs
eSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNyIpOworCisgICAgb2JqLmFy
ciA9IFsxLCAyLCA0LCA2LCA1LCA4LCAyMSwgMTksIDBdOworCisgICAgdGVzdENhc2Uob2JqLmJ1
YmJsZVNvcnQoKSgpLmxlbmd0aCwgOSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmlu
ZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzgiKTsKKworICAgIHNvcnRlZFZhbHVl
cyA9IG9iai5idWJibGVTb3J0KCkoKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbMV0sIDEs
ICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93
IGZ1bmN0aW9uICMxMiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1s4XSwgMjEsICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICMxMyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDE3YmM3YzhmMTgwNTM1OGJkYmE4NWIyY2VmNmE2OWI1ZjQxZWNhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIHRl
c3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIg
KyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitm
dW5jdGlvbiBEb2cobmFtZSkgeworICB0aGlzLm5hbWUgPSBuYW1lOworICB0aGlzLmdldE5hbWUg
PSAoKSA9PiAgdGhpcy5uYW1lOworICB0aGlzLmdldE5hbWVOZXN0aW5nTGV2ZWwxID0gKCkgPT4g
KCkgPT4gdGhpcy5uYW1lOworICB0aGlzLmdldE5hbWVOZXN0aW5nTGV2ZWwyID0gKCkgPT4gKCkg
PT4gKCkgPT4gdGhpcy5uYW1lOworfQorCit2YXIgZCA9IG5ldyBEb2coIk1heCIpOworCitub0lu
bGluZShkLmdldE5hbWUoKSk7Citub0lubGluZShkLmdldE5hbWVOZXN0aW5nTGV2ZWwxKCkoKSk7
Citub0lubGluZShkLmdldE5hbWVOZXN0aW5nTGV2ZWwyKCkoKSgpKTsKKworZm9yICh2YXIgaT0w
O2k8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1lLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVOZXN0aW5nTGV2ZWwxKCkoKSwgZC5uYW1lLCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjMiIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVOZXN0aW5nTGV2ZWwyKCkoKSgpLCBk
Lm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICMzIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2lu
ay1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZDEwYTMxZDY3MzFhZTY5NzRkNjY3ZWQ4ZDI0ODcwYjVkNTMxZjY1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM0IEBACit2
YXIgbiA9IDEwMDAwMDAwOworCit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRl
eHQnCit9OworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2
YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsKKyAgICAgIC8vIENoZWNrIGlm
IGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRl
eHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBj
b250ZXh0IG9mIGFycm93IGZ1bmN0aW9uJzsKKyAgICAgIHJlc3VsdCA9IHg7CisgICAgfQorICAg
IGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAg
ICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28uY2Fs
bChuZXdDb250ZXh0LCAhKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRo
aXMtYWN0aXZhdGlvbi1zaW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2E0MzA2MzdjODViZjk0MjFhZTljOTdlMGRkN2Y2Y2QxMzVjNDM5OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLmpzCkBAIC0wLDAgKzEsMzggQEAKK3ZhciBuID0g
MTAwMDAwMDA7CisKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307
CisKK2Z1bmN0aW9uIGJhcihmKSB7CisgICAgaWYgKHRoaXMgPT0gbmV3Q29udGV4dCkKKyAgICAg
ICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgbmVzdGluZyBmdW5jdGlvbic7CisgICAgZigxMCk7
Cit9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNl
dCA9ICh4KSA9PiB7CisgICAgICByZXN1bHQgPSB4OworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cg
ZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0
aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQg
b2YgYXJyb3cgZnVuY3Rpb24nOworICAgIH07CisKKyAgICBpZiAoYikgeworICAgICAgICBiYXIo
c2V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJv
cjogYmFkOiAiICsgcmVzdWx0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRl
eHQsICEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5n
LW5vLWRvdWJsZS1hbGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODY5ZTAyNzEzOWMxNjY3ZTEwNjliYWJkMjk1YTZkN2ZjMGI5ZTQxNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAg
LTAsMCArMSwzNyBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0Jwor
fTsKKworZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCisv
LyBTaG91bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0Nv
bnRleHQKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZiA9ICgpID0+IHsKKyAgICAg
IC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlz
ICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRo
cm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKyAgICB9OworICAgIGlm
IChwKSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9jYXRpb24gb2YgZgorICAgICAg
ICBpZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsKK30KK25vSW5saW5lKHNpbmsp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBzaW5r
LmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgZmFsc2UpOworICAgIGlmIChvLnggIT0gMykKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBidXQgaXMgIiArIHJlc3VsdDsK
K30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJv
cGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Citp
ZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMyBidXQg
aXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhp
cy1zaW5raW5nLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZmY2IzZmE1YjFlNzdmYjYyODYxODBi
MzMyYTNiZTdkZTI4ZjYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0
LmpzCkBAIC0wLDAgKzEsMzYgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29u
dGV4dCcKK307CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRl
IHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0g
eCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0Cisg
ICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkK
KyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7Cisg
ICAgICByZXR1cm4geDsKKyAgICB9OworICAgIGlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJl
dHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVu
Y3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlz
LmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2Yg
YXJyb3cgZnVuY3Rpb24gIzInOworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5saW5l
KHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9
IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCisg
ICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cg
IkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMg
cG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisK
Ky8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1Ig
ZXhpdAordmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCx0cnVlLCB0cnVlKTsvLyBTdWJzdGl0
dXRlIHRoaXMKK3ZhciByZXN1bHQgPSBmKDQyKTsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLXNpbmtpbmctcHV0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTdl
YTA3NjM1YTQxMzFjZDIzMTFkNDUwNzM1ZjU3YzFkZDk1ODY1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
dGhpcy1zaW5raW5nLXB1dC5qcwpAQCAtMCwwICsxLDQ1IEBACit2YXIgbmV3Q29udGV4dCA9IHsK
KyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91bGQgYmUgaW52b2NlZCBieSBjYWxs
IHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQKK2Z1bmN0aW9uIHNpbmsgKHAsIHEp
IHsKKyAgICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24g
c3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9
IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cg
ZnVuY3Rpb24gIzEnOworCisgICAgICByZXR1cm4geDsKKyAgICB9OworICAgIGlmIChwKSB7IGlm
IChxKSBnLmlubmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geworICAgICAg
Ly8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMg
IT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhy
b3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzInOworCisgICAgICByZXR1cm4g
eDsKKyAgICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIHRydWUp
Oy8vIHVzZSBjYWxsIHRvIHN1YnN0aXR1dGUgY29udGV4dAorICAgIHZhciByZXN1bHQgPSBmKDQy
KTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIg
YnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgYXJyb3cgZnVu
Y3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBUZXN0IHRoZSBh
bGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNlIGJyYW5jaAordmFyIGYgPSBzaW5r
LmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgZmFsc2UpOwordmFyIHJlc3VsdCA9IGYoMTIpOworaWYg
KHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIgYXMgaXQgc2hvdWxk
IGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0aHJvdyAiRXJyb3I6
IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hlY2sgdGhhdCB0aGUgYWxs
b2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2YXIg
ZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsKK3ZhciByZXN1bHQgPSBmLmlu
bmVyOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGlubmVyIHNob3VsZCBi
ZSA0MiBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0
Y2UwYzY1OGQzYTJmNzkyMjlkZjRmODkyY2NkYTE1MTNjOTRlNTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tb3RoZXJz
LmpzCkBAIC0wLDAgKzEsMTcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4
cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhy
b3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiAr
IGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9
PiB7fTsKKworbm9JbmxpbmUoc2ltcGxlQXJyb3dGdW5jdGlvbik7CisKK2ZvciAodmFyIGk9MDtp
PDEwMDAwO2krKykgeworICAgdGVzdENhc2UoT2JqZWN0LmdldFByb3RvdHlwZU9mKHNpbXBsZUFy
cm93RnVuY3Rpb24pLCBGdW5jdGlvbi5wcm90b3R5cGUsICJFcnJvcjogTm90IGNvcnJlY3QgZ2V0
UHJvdG90eXBlT2YgdmFsdWUgZm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RDYXNlKHNp
bXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBOb3Qg
Y29ycmVjdCByZXN1bHQgZm9yIGluc3RhbmNlb2YgbWV0aG9kIGZvciBhcnJvdyBmdW5jdGlvbiIp
OworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0
aW9uLCB0cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3VsdCBmb3IgY29uc3RydWN0b3IgbWV0
aG9kIG9mIGFycm93IGZ1bmN0aW8gICBuIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDdhMWYwYTQ5Y2IxNjg2M2M1OTIxMzYxZjBhZGIxZTE0ZWM5YjY1YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1ydW4tMTAtMS5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlv
biAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIics
IGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3Vu
dCkgeworICB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgZm9yKHZhciBpPTA7IGk8Y291bnQ7IGkrKykg
eworICAgIHZhciBPYmogPSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFt
ZTsKKyAgICAgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IHRoaXMubmFtZTsKKyAgICB9OworCisgICAg
dmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmou
Z2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJu
IHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEpLCB0cnVlLCAiRXJyb3I6IEVycm9yOiBkdXJp
bmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIG9uZSB0aW1lIik7Cit0ZXN0Q2FzZShydW4o
MTApLCB0cnVlLCAiRXJyb3I6IEVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0
aW9uIDEwIHRpbWVzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkY2Ri
M2M3MGExYjI3YzNkYmI1MjM4MDk1NWY1MzUzZDc2NzQyNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5q
cwpAQCAtMCwwICsxLDI1IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBl
Y3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93
IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBh
Y3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVz
dWx0ID0gdHJ1ZTsKKyAgZm9yKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmog
PSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMu
Z2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisKKyAgICB2YXIg
b2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXRO
YW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVz
dWx0OworfQorCit0ZXN0Q2FzZShydW4oMSksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1dGlv
biBvZiBhcnJvdyBmdW5jdGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwg
IkVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwIHRpbWVzIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tcnVuLTEwMDAwLTEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU1ZjZiYzg2YmQzMTQ1MWIw
MWNhMjdkMGI5NzIwYjU3ZThkNjA1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcwpAQCAtMCww
ICsxLDIzIEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVz
c2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2Ug
KyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAi
JyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0ID0gdHJ1
ZTsKKyAgZm9yKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmogPSBmdW5jdGlv
biAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMuZ2V0TmFtZSA9
ICgpID0+IHRoaXMubmFtZTsKKyAgICB9OworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0i
ICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1
bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2Uo
cnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJv
dyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjNDI3MWY0YTMxNTkxNjI1YTBiZDNkNzQ0ZDI1MTI2MzMzMDJlNDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tcnVuLTEwMDAwLTIuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RDYXNlID0gZnVu
Y3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCAr
ICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4o
Y291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvciAodmFyIGk9MDsgaTxjb3VudDsg
aSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUg
PSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7Owor
ICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2Jq
Lm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0K
KyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0cnVlLCAi
RXJyb3I6IEVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwMDAwIHRp
bWVzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1uby1kb3VibGUtYWxs
b2NhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI4NjJjNjI4ZTNiMmNhMzA0NDEwYjFhZTIyNjk0NzE4MDUx
ZGVjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsx
LDI4IEBACitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0gMzsgfQorbm9JbmxpbmUoY2FsbCk7CisK
K2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZiA9ICgpID0+IHsgfTsKKyAgICBpZiAo
cCkgeworICAgICAgICBjYWxsKGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAg
aWYgKHEpIHsKKyAgICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZjsKKyAgICB9CisgICAgcmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luayh0
cnVlLCBmYWxzZSk7CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGV4
cGVjdGVkIG8ueCB0byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBv
aW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisv
LyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4
aXQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJvdyAi
RXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtp
bmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI3ZjNjYTNiZGU4ZGEzMDE0
MGZhMTQ5OTczZTE3YWFhOGQ5MTA1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMKQEAg
LTAsMCArMSwyMSBAQAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB4
OworICAgIGlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJldHVybiBnOyB9CisgICAgcmV0dXJu
IHggPT4geDsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIHZhciByZXN1bHQg
PSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0
ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVu
Y3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0
IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0g
c2luayh0cnVlLCB0cnVlKTsKK3ZhciByZXN1bHQgPSBmKDQyKTsKK2lmIChyZXN1bHQgIT0gNDIp
CisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
c2lua2luZy1wdXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRiNzBiYjlhYmMyMzE0OGY2Mjdl
ZmM2MTg2YmUwNTdjM2NiYjI3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcwpAQCAtMCwwICsx
LDI4IEBACitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAg
aWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9
PiB4OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgeworICAgIHZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0
Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQy
IGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9u
IHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2Nh
dGlvbiBvbiB0aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luayh0cnVl
LCBmYWxzZSk7Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8v
IFRoaXMgc2hvdWxkbid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3Ig
Y29tcGxldGVseSBjcmFzaAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAi
ICsgcmVzdWx0OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBi
ZXlvbmQgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsK
K3ZhciByZXN1bHQgPSBmLmlubmVyOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJy
b3I6IGlubmVyIHNob3VsZCBiZSA0MiBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4NzQ5MjM5NzE5ODNkY2RhMzRjMjY5MzkyMTE3YjE3NDhlNjdiNGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEsMjcgQEAKK3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIg
QiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1
cGVyKSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgICAgdmFyIGYgPSAo
KSA9PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsK
KyAgICB9CisgIH0KK307CisKK3ZhciBleGNlcHRpb24gPSBudWxsOworZm9yICh2YXIgaT0wOyBp
PDEwMDAwOyBpKyspIHsKKyAgdHJ5IHsKKyAgICAgICBuZXcgQih0cnVlKTsKKyAgfSBjYXRjaCAo
ZSkgeworICAgICAgZXhjZXB0aW9uID0gZTsKKyAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZl
cmVuY2VFcnJvcikpCisgICAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiB0aHJvd24gd2FzIG5vdCBh
IHJlZmVyZW5jZSBlcnJvciI7CisgIH0KKworICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgIHRocm93
ICJFeGNlcHRpb24gbm90IHRocm93biBmb3IgYW4gdW5pdGlhbGl6ZWQgdGhpcyBhdCBpdGVyYXRp
b24iOworCisgIHZhciBlID0gbmV3IEIoZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzUzZWMwZGRkNTUxNGZhZjRkMGQwM2M5ZTA2NTcwYTBjODJiZTY0ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi10eXBlb2YuanMKQEAgLTAsMCArMSwyNyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24g
KGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
IHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBi
dXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIgYWYxID0gKCkgPT4ge307
Cit2YXIgYWYyID0gKGEpID0+IHthICsgMX07CisKK25vSW5saW5lKGFmMSk7Citub0lubGluZShh
ZjIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgdGVzdENhc2UodHlw
ZW9mIGFmMSwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZSh0eXBlb2YgYWYyLCAiZnVuY3Rpb24iLCAiRXJy
b3I6IE5vdCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisKKy8vRml4
bWU6IFNvbWUgYnVnIGluIGlubGluaW5nIHR5cGVvZiB3aXRoIGZvbGxvd2luZyBydW4gcGFyYW1l
dGVycyBmdGwtbm8tY2ppdC1uby1pbmxpbmUtdmFsaWRhdGUKKy8vIC0tdXNlRlRMSklUXD10cnVl
IC0tZW5hYmxlRnVuY3Rpb25Eb3RBcmd1bWVudHNcPXRydWUgLS1lbmFibGVDb25jdXJyZW50SklU
PWZhbHNlIC0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAwICAtLXZhbGlkYXRlR3JhcGg9
dHJ1ZSAtLW1heGltdW1JbmxpbmluZ0RlcHRoPTEKKy8vCisvLyBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyArK2kpICB7CisvLyAgIGlmICh0eXBlb2YgKGZ1bmN0aW9uICgpIHt9KSAhPT0gJ2Z1
bmN0aW9uJykKKy8vICAgICAgIHRocm93ICdXcm9uZyB0eXBlJzsKKy8vIH0KKy8vICB0ZXN0Q2Fz
ZSh0eXBlb2YgKCk9Pnt9LCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHR5cGUgb2Yg
dGhlIGFycm93IGZ1bmN0aW9uICMzLSIgKyBpKTsKKworLy8gIHRlc3RDYXNlKHR5cGVvZiAoKGIp
ID0+IHtiICsgMX0pLCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHR5cGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICM0Iik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTkwYjhmM2ExZDk1ZmM0M2JkZWViZTM0
NTdjYWE2NGQxZTZiN2EwMi4uZjFkMWI4ZjE1MDBhZGNjZThiNzNjNjg4NWM4MDU4ODNjOTY3MDUx
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA4LTEyICBTa2FjaGtvdiBPbGVrc2FuZHIg
IDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBFUzYgYXJy
b3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4
aWNhbCBiaW5kIG9mIHRoaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NDk1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpz
L2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9u
LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tb3RoZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rp
b24tdGR6LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10
ZHouaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rp
b24tY2FsbC5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tYmluZC5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tY2FsbC5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qczogQWRkZWQuCisgICAgICAgICoganMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzOiBBZGRlZC4KKwogMjAxNS0wOC0xMyAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlZHVjZSBmbGFraW5lc3Mgb2YgaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0
YWJhc2VOYW1lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5k
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjJiMzI2Y2NiYjRlMTRjNjg5ZGQ3ZDkzODNjYzViYzk0ZmY3ZjAx
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlv
biwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmJpbmQoZSwgJ2xleScpKCkgaXMg
J2JhcmxleScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbCBi
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOWFj
YjJiYzhmZDUwNGM2OGYwNDQ1YTZlYWM0YTZhMTQ1NGFiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1iaW5kLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMDc3Zjk5NzlhY2Y0
NWUxNmI5OTY1NzJkMWFmZGVlZGQ1OTExMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1
cmluZyBpbnZva2UgY2FsbCZhcHBseQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBkLnkoKS5jYWxsKGUpIGlzICdmb28nCitQQVNTIGQueSgpLmFwcGx5KGUpIGlzICdmb28n
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWQ4YTQ3ZTMwYjZh
ODc0OWVjNWI3ZTc4M2M2YTllYzMxMzJkMmQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NzA2ZmZm
MTdjMjEyMzg1MzY0MGJiMmE0ZWIxN2Q2M2UxYTM3MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVjdG9yCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5ldyBzaW1wbGVBcnJvd0Z1bmN0
aW9uKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3Ry
dWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCknKS4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBjMGI5YTlj
ZGQ0ZDhiZGZhNjI0MWNiNmJlZmJmMDRjYzk1ODMwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNjZmYzI4OGNhY2JkOWM5MzdjOTcxYzJiZDZiNjhlNjY0
YTk0ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0cyBmb3Ig
RVM2IGFycm93IGZ1bmN0aW9uIGxleGljYWwgYmluZCBvZiB0aGlzCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGQuZ2V0TmFtZSgpIGlzIGQubmFtZQorUEFTUyBkLmdldE5h
bWVIYXJkKCkgaXMgZC5uYW1lCitQQVNTIGQuZ2V0TmFtZU5lc3RpbmcoKSgpKCkgaXMgZC5uYW1l
CitQQVNTIG9iai5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdvYmpDb2RlLW5hbWUtY29ycmVjdCcK
K1BBU1Mgb2JqLm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0
JworUEFTUyBkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ2lu
dGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRlcm5hbE9iamVjdC5t
ZXRob2QoKSgnY29ycmVjdCcpIGlzICduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnCitQ
QVNTIGluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2UgaXMgdHJ1ZQorUEFTUyBvd25lck9iai5t
ZXRob2QoKSgpID09PSBvd25lck9iaiBpcyB0cnVlCitQQVNTIGZha2Uuc3RlYWwoKSA9PT0gb3du
ZXJPYmogaXMgdHJ1ZQorUEFTUyByZWFsLmJvcnJvdygpKCkgPT09IHJlYWwgaXMgdHJ1ZQorUEFT
UyBhcnJvd0Z1bmN0aW9uKCctdGhpcycpIGlzICJyaWdodC10aGlzIgorUEFTUyBob3N0T2JqLmZ1
bmMoJy10aGlzJykgaXMgInJpZ2h0LXRoaXMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZWEyMmE3NmZkZjhiZmY1
ZTcyZTUxYjc3OTRiM2UzNDdkMTY0MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE5MTUyZTVlMzdjNjkxNWYzODIzZTI5YjIwYTk0ZGY1M2QwOGMwMDEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBpbnN0YW5jZW9m
IGFuZCB0eXBlb2Ygb3BlcmF0b3JzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSBpcyBGdW5jdGlv
bi5wcm90b3R5cGUKK1BBU1Mgc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9u
IGlzIHRydWUKK1BBU1Mgc2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlv
biBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRt
bCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWY2N2Y4YjAwZTQ2MDU1ZWU2ZmFlNWMxZTgyODllZmVlMWYxMTA5MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwKQEAgLTAsMCArMSwx
MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2FmNmNk
ODYwMGU4ODQxMjc3YzQ5NGE5ODkwMjI0NTJlYTZhYjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gdGVzdCB0ZHoKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgaXNSZWZlcmVuY2VFcnJvciBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tdGR6Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhlZjE3MWNiODIwYmViM2NiNGE3ZDNm
YzQ4ZTVjNTNmYzExOTI2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tdGR6Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
dHlwZW9mLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9m
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmZiMmNlOTY0YmQwMzMyMWI4MzJjYjg3YmJhZTBj
YTUzNDljMWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi10eXBlb2YtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorUEFTUyB0eXBlb2YgYWYxID09
PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyBpcyB0
cnVlCitQQVNTIHR5cGVvZiAoKCk9Pnt9KSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNTIHR5
cGVvZiAoKGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tdHlwZW9mLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBhY2FhYTFhNGU0ZDBlNGNiM2QwNzY1
ZTM3M2ZlZGI3NDM4MGUwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tdHlwZW9mLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
YXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
YXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWI1NTJmODBmNjYx
ZGUzYmFiNTIwOWM3MmRkY2Y1MDIxMDAzNDVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK0pTUmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZDg0NTRiZmY2MTgyZTYx
Y2JlYjBiOWVlMTMzZmU4NzMxMTJiZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3Mt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODkyNGM4NDI3NmU3MTA4Nzc4NmM1OTQwYTgyMmJjYzZmOTdjMDZkNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE1IEBACit2YXIgYWYgPSAoYSwgYikgPT4gYSArIGI7
CisKK25vSW5saW5lKGFmKTsKKworZnVuY3Rpb24gYmFyKGEsIGIpIHsKKyAgICByZXR1cm4gYWYo
YSwgYik7Cit9CisKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAw
MDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGJhcigxLCAyKTsKKyAgICBpZiAocmVzdWx0ICE9
IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNh
bGwuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE1NzNjM2I1ZTBjYTc5MTc5NGYyNTE2OWE5MWNiNGE3ZGM5YjI4Y2UK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9m
dW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTUgQEAKK3ZhciBmZSA9IGZ1bmN0aW9uIChhLCBi
KSB7IHJldHVybiBhICsgYjt9CisKK25vSW5saW5lKGZlKTsKKworZnVuY3Rpb24gYmFyKGEsIGIp
IHsKKyAgICByZXR1cm4gZmUoYSwgYik7Cit9CisKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGJhcigxLCAyKTsK
KyAgICBpZiAocmVzdWx0ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLWJpbmQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1iaW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1M2YwOGU5NjZjNzk0Y2JhZjlhZDRhM2FkYjRl
OTk3OWMwMmFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Rlc2NyaXB0aW9uKCdU
ZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBk
dXJpbmcgaW52b2tlIGJpbmQnKTsKKwordmFyIGQgPSB7CisgIHggOiAiYmFyIiwKKyAgeSA6IGZ1
bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLnggKyB6OyB9Cit9OworCit2YXIgZSA9IHsgeCA6
ICJiYXoiIH07CisKK3Nob3VsZEJlKCJkLnkoKS5iaW5kKGUsICdsZXknKSgpIiwgIidiYXJsZXkn
Iik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM4ODhm
OTExYmYxYzQ0ZDM4OWQwYTNkMjE4NDY4MzQ4NGI2Zjk2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCAr
MSwxMyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMg
c2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgY2FsbCZhcHBseScpOworCit2YXIg
ZCA9IHsKKyAgeCA6ICJmb28iLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiAoKSA9PiB0aGlz
Lng7IH0KK307CisKK3ZhciBlID0geyB4IDogImJhciIgfTsKKworc2hvdWxkQmUoJ2QueSgpLmNh
bGwoZSknLCAiJ2ZvbyciKTsKK3Nob3VsZEJlKCdkLnkoKS5hcHBseShlKScsICInZm9vJyIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWVmYWQwNzY4NDdiZmY0OTI5Zjc4MDc3NjVmOTkwYjczNzNjZGY2ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVj
dG9yLmpzCkBAIC0wLDAgKzEsNyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cg
ZnVuY3Rpb24gbm8gY29uc3RydWN0b3InKTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAo
KSA9PiB7fTsKKworc2hvdWxkVGhyb3coJ25ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCknKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJlNTZhMTU1MzBmMzRjYzMwOGFjZTZiMGZhYTRjZmU3YzFlOTc4YzQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpAQCAtMCwwICsxLDY3IEBACitkZXNjcmlwdGlvbignVGVz
dHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBsZXhpY2FsIGJpbmQgb2YgdGhpcycpOworCitmdW5j
dGlvbiBEb2cobmFtZSkgeworICB0aGlzLm5hbWUgPSBuYW1lOworICB0aGlzLmdldE5hbWUgPSAo
KSA9PiBldmFsKCJ0aGlzLm5hbWUiKTsKKyAgdGhpcy5nZXROYW1lSGFyZCA9ICgpID0+IGV2YWwo
IigoKSA9PiB0aGlzLm5hbWUpKCkiKTsKKyAgdGhpcy5nZXROYW1lTmVzdGluZyA9ICgpID0+ICgp
ID0+ICgpID0+IHRoaXMubmFtZTsKK30KKwordmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKK3Nob3Vs
ZEJlKCdkLmdldE5hbWUoKScsICdkLm5hbWUnKTsKK3Nob3VsZEJlKCdkLmdldE5hbWVIYXJkKCkn
LCAnZC5uYW1lJyk7CitzaG91bGRCZSgnZC5nZXROYW1lTmVzdGluZygpKCkoKScsICdkLm5hbWUn
KTsKKwordmFyIG9iaiA9IHsKKyAgbmFtZSAgIDogJ29iakNvZGUnLAorICBtZXRob2QgOiBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2
YWx1ZTsKKyAgfQorfTsKKworc2hvdWxkQmUoIm9iai5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidv
YmpDb2RlLW5hbWUtY29ycmVjdCciKTsKK29iai5uYW1lPSduZXdPYmpDb2RlJzsKK3Nob3VsZEJl
KCJvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInbmV3T2JqQ29kZS1uYW1lLWNvcnJlY3QnIik7
CisKK3ZhciBkZWVwT2JqID0geworICBuYW1lIDogJ3dyb25nT2JqQ29kZScsCisgIGludGVybmFs
T2JqZWN0OiB7CisgICAgbmFtZSAgOidpbnRlcm5hbE9iamVjdCcsCisgICAgbWV0aG9kOiBmdW5j
dGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7
IH0KKyAgfQorfTsKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdj
b3JyZWN0JykiLCAiJ2ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCciKTsKKworZGVlcE9iai5p
bnRlcm5hbE9iamVjdC5uYW1lID0gJ25ld0ludGVybmFsT2JqZWN0JzsKKworc2hvdWxkQmUoImRl
ZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInbmV3SW50ZXJuYWxP
YmplY3QtbmFtZS1jb3JyZWN0JyIpOworCit2YXIgZnVuY3Rpb25Db25zdHJ1Y3RvciA9IGZ1bmN0
aW9uICgpIHsKKyAgdGhpcy5mdW5jID0gKCkgPT4gdGhpczsKK307CisKK3ZhciBpbnN0YW5jZSA9
IG5ldyBmdW5jdGlvbkNvbnN0cnVjdG9yKCk7CisKK3Nob3VsZEJlKCJpbnN0YW5jZS5mdW5jKCkg
PT09IGluc3RhbmNlIiwgInRydWUiKTsKKwordmFyIG93bmVyT2JqID0geworICBtZXRob2QgOiBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHRoaXM7CisgIH0KK307CisKK3Nob3VsZEJl
KCJvd25lck9iai5tZXRob2QoKSgpID09PSBvd25lck9iaiIsICJ0cnVlIik7CisKK3ZhciBmYWtl
ID0geyBzdGVhbCA6IG93bmVyT2JqLm1ldGhvZCgpIH07CitzaG91bGRCZSgiZmFrZS5zdGVhbCgp
ID09PSBvd25lck9iaiIsICJ0cnVlIik7CisKK3ZhciByZWFsID0geyBib3Jyb3cgOiBvd25lck9i
ai5tZXRob2QgfTsKK3Nob3VsZEJlKCJyZWFsLmJvcnJvdygpKCkgPT09IHJlYWwiLCAidHJ1ZSIp
OworCit2YXIgYXJyb3dGdW5jdGlvbiA9IHsgeCA6ICJyaWdodCIsIGdldEFycm93RnVuY3Rpb24g
OiBmdW5jdGlvbigpIHsgcmV0dXJuIHogPT4gdGhpcy54ICsgejsgfX0uZ2V0QXJyb3dGdW5jdGlv
bigpOwordmFyIGhvc3RPYmogPSB7IHggOiAid3JvbmciLCBmdW5jIDogYXJyb3dGdW5jdGlvbiB9
OworCitzaG91bGRCZSgiYXJyb3dGdW5jdGlvbignLXRoaXMnKSIsICcicmlnaHQtdGhpcyInKTsK
K3Nob3VsZEJlKCJob3N0T2JqLmZ1bmMoJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3OTkzMWMzZGVi
Y2I1MDI3YWQxNGZkMTU0N2U1YWJhMDM4YjRiMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCArMSwx
MCBAQAorLy8gSW5zcGlyZWQgYnkgbW96aWxsYSB0ZXN0cworZGVzY3JpcHRpb24oJ1Rlc3RzIGZv
ciBFUzYgYXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9ycycpOwor
Cit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitzaG91bGRCZSgiT2JqZWN0
LmdldFByb3RvdHlwZU9mKHNpbXBsZUFycm93RnVuY3Rpb24pIiwgIkZ1bmN0aW9uLnByb3RvdHlw
ZSIpOworc2hvdWxkQmUoInNpbXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiIs
ICJ0cnVlIik7CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBG
dW5jdGlvbiIsICJ0cnVlIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFhZjU4ZmM2NTEzZWRhYmRlMWRkNjUwNzQ5NmFlODY0YjYxMWZmZjkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHou
anMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVu
Y3Rpb24gdGVzdCB0ZHonKTsKKwordmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3Mg
QiBleHRlbmRzIEEgeworICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAg
ICBpZiAoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7
CisgICAgICBzdXBlcigpOworICAgIH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAg
fQorfTsKKwordmFyIGlzUmVmZXJlbmNlRXJyb3IgPSBmYWxzZTsKK3RyeSB7CisgICAgIG5ldyBC
KHRydWUpOworfSBjYXRjaCAoZSkgeworICAgIGlzUmVmZXJlbmNlRXJyb3IgPSBlIGluc3RhbmNl
b2YgUmVmZXJlbmNlRXJyb3I7Cit9CisKK3Nob3VsZEJlKCdpc1JlZmVyZW5jZUVycm9yJywgJ3Ry
dWUnKTsKKwordmFyIGUgPSBuZXcgQihmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tdHlwZW9mLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYWEyNjkwZmRhODJjNmEzMjhlYTBhYmMzNTVkMmQ4
YmUzZDQ4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi10eXBlb2YuanMKQEAgLTAsMCArMSwxMiBAQAordmFyIGFmMSA9ICgpID0+
IHt9OwordmFyIGFmMiA9IChhKSA9PiB7YSArIDF9OworCitzaG91bGRCZSgidHlwZW9mIGFmMSA9
PT0gJ2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0eXBlb2YgYWYyID09PSAnZnVu
Y3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5cGVvZiAoKCk9Pnt9KSA9PT0gJ2Z1bmN0
aW9uJyIsICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0eXBlb2YgKChiKSA9PiB7YiArIDF9KT09PSdm
dW5jdGlvbiciLCAidHJ1ZSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259151</attachid>
            <date>2015-08-17 08:42:41 -0700</date>
            <delta_ts>2015-08-17 11:00:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817184236.patch</filename>
            <type>text/plain</type>
            <size>178945</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uMDAwNzc2MjEyNWNlNTI0MWY1MzQ5Yzk0ZTQzZGEz
OGRmYzBiZDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBVTlVT
RURfUEFSQU0oYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZVcoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VXcyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAt
MTYxNyw2ICsxNjI0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywg
R1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBh
cmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJl
c3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNv
bnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0
ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4LDYgKzIyMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBj
b21waWxlR2V0U2NvcGUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZv
aWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKQEAgLTIyMjEsNiArMjIzNCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJh
c2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNv
bXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAg
ICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQ
UlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0
cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0
cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3Rp
dmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDgwMGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0
YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtMzY4Niw3ICszNjg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2Nv
cGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgTG9hZEFycm93
RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAg
ICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEg
KzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fy
cm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUp
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUzZGFmMzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAx
MmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtMzcyOSw3ICszNzI5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7
CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKyAgICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgog
ICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzMzYs
MTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5l
d0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5v
ZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjli
NjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEzYi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBi
ZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAg
ICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2Ug
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9u
OgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb2Rl
cyB0aGF0IGFsbG9jYXRlIGdldCB0byBzZXQgdGhlaXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ug
bm9kZXMgd2Uga25vdwogICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBu
ZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzky
NzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUwM2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2
ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcg
KzEzNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAg
ICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2Fz
ZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1
bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0
cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5m
dW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUzYjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4
NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3Njhi
OWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3MTguLjcxMmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBl
MjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90
b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1
cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1h
Y3JvKFN5bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisg
ICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUo
KSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlvbl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rp
b246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Nj
b3BlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8o
SlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURh
dGEoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246
Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFD
VF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVj
dEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJi
MWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4
YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTA1LDYgKzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2Fz
ZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJy
b3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZh
cjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CkBAIC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1
dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBj
YXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNl
IEdldEFyZ3VtZW50Q291bnQ6CiAgICAgY2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3
ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhiNC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdj
NTliMjg0NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25U
eXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVy
YXRpb25fRUpKLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50NjQsIGludDY0KSkgXAog
ICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQ
dHIsIGludFB0ciwgaW50UHRyKSkgXAorICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwg
ZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBt
YWNybyhKX0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGlu
dFB0ciwgaW50MzIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlv
blR5cGUoaW50NjQsIGludFB0ciwgaW50UHRyLCBpbnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3Jv
KEpzc19KSVRPcGVyYXRpb25fRVosIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIp
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CmluZGV4IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3
Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRM
V2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJPcGVyYW5kc0lubGluZXMuaCIKQEAgLTU5Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246
CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNj
b3BlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlv
blRoaXM6CisgICAgICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21w
aWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbigpCiAgICAgewor
ICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3Ao
KSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0Fycm93RnVuY3Rpb247CisgICAgICAgIAogICAg
ICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBM
VmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxk
MigpKSA6IG51bGxwdHI7CisgICAgICAgIAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAg
ICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQo
KSkgewotICAgICAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAg
ICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUs
IHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgICAgICBMVmFsdWUgY2Fs
bFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3Bl
LCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDog
dm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1l
LCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1
ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlv
blN0cnVjdHVyZSgpCisgICAgICAgICAgICA6IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAg
ICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5j
dGlvbiBzbG93IHBhdGgiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZU
TF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rpb24gY29udGludWF0aW9uIikpOwogICAgICAg
ICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NC
ZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBh
bGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAgICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQu
aW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJy
b3dGdW5jdGlvbgorICAgICAgICAgICAgPyBhbGxvY2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpCisgICAgICAgICAgICA6IGFs
bG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xv
d1BhdGgpOworICAgICAgICAKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVt
b3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28g
aXQKICAgICAgICAgLy8gbXVzdCBiZSB5b3VuZy4KLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2Nv
cGUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0
LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpT
RnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0
clplcm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAg
IG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hl
YXBzLkpTQXJyb3dGdW5jdGlvbl9zY29wZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0
LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6
IG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChp
c0Fycm93RnVuY3Rpb24pCisgICAgICAgICAgICBtX291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZh
c3RPYmplY3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3RoaXMpOworICAgICAgICAKKyAgICAg
ICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1
bmN0aW9uID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1
bmN0aW9uX3JhcmVEYXRhKTsKICAgICAgICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RS
ZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBj
b250aW51YXRpb24pOwotICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAg
ICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpLAotICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3Bl
LCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY2Fs
bFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1f
Y2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOworICAgICAgICAKICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0
KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYs
NiArNDA3OCwxMSBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIo
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAg
eworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fdGhpcykpOworICAgIH0KKyAgICAKICAgICB2
b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5s
b2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2Ri
YzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMzZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFm
MWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8v
IEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNT
Y29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOwor
ICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXph
dGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9u
KCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykp
CiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHku
bG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRp
b25QTG9jKSkKICAgICAgICAgICAgICAgICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihK
U1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9j
YXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRU
aGlzUExvYykpIHsKKyAgICAgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJvdW5kVGhpcyA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUg
JiYgYWN0aXZhdGlvbik7CiAKLSAgICAgICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlv
bjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0
YWJsZSwgYWN0aXZhdGlvbik7CisgICAgICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQg
PSBpc0Fycm93RnVuY3Rpb24KKyAgICAgICAgICAgID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVX
aXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3Rp
dmF0aW9uLCBib3VuZFRoaXMpCisgICAgICAgICAgICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJ
bnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRp
b24pOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYy
ZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUxOWY4My4uMGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRj
ZjdlNDZjODAyYjljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXku
aCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3
ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2VmNTViMTIyZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUg
IkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07CisgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAg
IGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5ODdjMzAzYjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uNGM0
OWFkYWU5ZGRkYTI0ZjgzOTkzMTViNWQ0MGUxZmRkYjlmMzZkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAg
ICAgZnVuY3RvcihHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpu
b25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZv
OjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRo
b2RzIHVzZWQgdG8gc29ydCBhcmd1bWVudHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAg
ICAgLy8gT24gWDg2IHdlIHVzZSBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNz
IGFsbCBhcmd1bWVudHMgb24gdGhlCiAgICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVy
ZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMgaW50byB0aGUKQEAgLTIwOSw2ICsyMDgsMTUg
QEAgcHVibGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgfQogCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZVcoR1BSUmVnIGFy
ZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAg
ICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCiAgICAgewogICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKQEAgLTk1NSw2ICs5NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNl
dHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisgICAgCiAjZWxp
ZiBDUFUoQVJNKQogI2lmIENQVShBUk1fSEFSREZQKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKQEAgLTk5OCw3ICsxMDA3LDcgQEAgcHVibGljOgog
ICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAg
fQotCisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiwgRlBSUmVnIGFyZzQp
CiAgICAgewogICAgICAgICBtb3ZlRG91YmxlKGFyZzQsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7
CkBAIC0xMDA3LDYgKzEwMTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjZWxzZQorCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQogICAgIHsKICAgICAg
ICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSwgYXJnMSk7CkBAIC0xMTI4LDcgKzExMzgsNyBAQCBwdWJsaWM6CiAjZWxzZQogI2Vy
cm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgotCisgICAg
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxKQogICAg
IHsKICAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpAQCAtMTIyNyw2
ICsxMjM3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwogICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlVyhHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NHUFI8R1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOworICAg
ICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQog
I2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tNjQgYXJnMikK
ICAgICB7CkBAIC0xNDcwLDcgKzE0ODcsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9k
cyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBm
b3IKICAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFSTXY3LgogI2lm
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAotCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHBva2UoYXJnNCwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDAzOGY1
ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3ZmYyZWJhNDBlYjQuLmJiYzg1MjNmNWJiMjNhMzkzMGMw
OTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIx
OSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9lbmQpCiAgICAgICAgIERFRklORV9PUChvcF9lbnRlcikKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2xvYWRfYXJyb3dm
dW5jdGlvbl90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9P
UChvcF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKQEAg
LTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERF
RklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHApCiAgICAgICAgIERFRklO
RV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4NDExYTdlZjY1YTljNmJk
Y2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2Li43NzFmZDliNDA2NWJkZDE3MjJjMGU3MmI4ODcyMDhl
YzYyZjFlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5OCw2ICs0OTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbG9h
ZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKQEAg
LTUzOSw2ICs1NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25l
d19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19m
dW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CkBAIC02NTMsNiArNjU1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24qLCBi
b29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2ln
bmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50
IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCk7CiAg
ICAgICAgIHZvaWQgZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50IHNjb3BlLCBTdHJ1Y3R1
cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAgLTcyMyw2ICs3MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQUlJlZywgQnlWYWxJbmZvKik7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzYywgR1BSUmVn
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FSnNjQywgaW50LCBHUFJSZWcsIEpTQ2VsbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgaW50LCBHUFJSZWcs
IEpTQ2VsbCosIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIEdQUlJlZywgaW50MzJfdCk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIGlu
dCwgR1BSUmVnLCBpbnQzMl90KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ZDY4NjkwMDgxYzk5NmQ3ZTMzYmYzYmQyNWRjYzU4
YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcyNDk1NmJmNTg0OTFiM2RlNzgzYTZmY2RjMjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjcxLDYgKzI3MSwxMiBAQCBB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSnNjQyBvcGVyYQogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAKK0FMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKc2NDSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQ
UlJlZyBhcmcyKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVz
dGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOworfQorICAgIAogQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2ludGVyKQogewogICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU5OGQ0ZWM5OWMxZDE4ZTZjMzk2
MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4M2JjYzhjNDVkZTY2NmY3M2M5ZTkxMWY1MTQyOWYzNWVi
MTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTY3Myw2ICs2NzQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1Qw
KTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQorICAgIAordm9pZCBKSVQ6OmVt
aXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1Qw
KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZU
aGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CkBAIC05NjIsMjYgKzk3MSw0NSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
ZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBlbWl0TmV3
RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKK3ZvaWQgSklUOjpl
bWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChj
dXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cDsKKyAgICAKICAgICBKdW1wIG5vdFVu
ZGVmaW5lZFNjb3BlOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5j
dGlvbikKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2g2NChO
b3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSkpKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0
KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdExv
YWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAgICBu
b3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcp
KTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICNlbmRpZgotCiAgICAgSnVt
cCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlLmxpbmsodGhpcyk7Ci0KLSAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhw
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhwcik7CisgICAgICAgIAorICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHBy
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIGlmIChpc0Fycm93RnVuY3Rp
b24pCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0
LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAgICBkb25l
LmxpbmsodGhpcyk7CiB9Ci0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hcnJvd19mdW5j
X2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5j
RXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorICAgIAogdm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOTFjMDBlM2ZkNDVlMDk3ZTNi
YjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4uYjM5YWUxZDFhMzA2ODAzNDNlOWZkOWE3MjMxNDI5YjZl
NTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTkyMiw2ICs5MjMsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
bG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFs
dWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQorCiB2b2lk
IEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYjVmOWUz
NjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMwMjRjZGNkYjkzYi4uNGZmMGUzZDE1MGI0MjYwZWY5NGIy
MWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTk0Miw2ICs5NDMsMzAgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rp
b246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCit7CisgICAg
QVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjpp
bmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OworICAgICAgICAKKyAgICBKU0Fycm93RnVuY3Rpb24qIGFycm93RnVuY3Rpb24gID0gaXNJbnZh
bGlkYXRlZAorICAgICAgICA/IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKQorICAgICAgICA6IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIAorICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyb3dGdW5jdGlvbik7Cit9CisgICAgCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
Cit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cit9CisgICAgCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21t
b24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7Cit9
CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggM2Q4M2Y1OTBk
Y2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJjYmU4NGY5Yi4uYTY3Y2FhY2IzMmZiMjE1OGE5YzA1ZTZh
NTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2bwogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBTKShFeGVj
U3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKc2ND
KShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQ0opKEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU1MpKEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6
ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0
aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlx
dWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
Sl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAtMjg4LDYgKzI4OSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXJXaXRoUHJv
ZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxs
KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRl
Kiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYW5k
bGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXgg
MmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDllZjliMDEzOGQ5YTgzZjFlYy4uYTJhNmIyYjExYzU2ODFl
MGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJWTS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTViODFl
ZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJiNDFmNTY4NWQ3Zi4uMmNkOWY2ZWI4ZDY4Mzg2ODcwOTdj
NGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5j
bHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAt
MTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgICAg
ICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQotCisgICAg
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkK
IHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTAxMywxMiArMTAxNCwyNCBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CisgICAgCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3BlKiBzY29w
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsK
LSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4
cHIocGNbM10udS5vcGVyYW5kKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CiAgICAg
Ci0gICAgTExJTlRfUkVUVVJOKGZ1bmMpOworICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29w
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9u
RXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVSTihKU0Fycm93RnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRoaXNWYWx1ZSkpOwogfQogCiBz
dGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQpAQCAtMTA5Niw3ICsxMTA5LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlw
ZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGUK
ICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKTsKICAgICBWTSYg
dm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxs
ZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAKKwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2Rl
UHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+
aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgKaW5kZXggOGNjNjlhOTYwMGJiZjlkODUzMzlkNjA5NTk1ZjY3YzY4ZDA3NjcxYi4u
M2YxZGFhODEyYjcwMmUyM2M2YWFlZjlmZDdjMDY3MWVlMjAyNWMwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTk3LDYgKzk3LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hhcik7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjOTEwNjE3ZWQ4MzRiNzRj
OWYyZjhlZTRiMjY4N2M4YjljZmUzYzdjLi43M2ZjNTg4NDQyZGRjNGI5Y2ZhN2I4OGYwMDRjYTg2
NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTgzLDYgKzExODMsMTAgQEAgX2xsaW50X29wX25ld19m
dW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHAp
CiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19hcnJvd19mdW5jX2V4cDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Fy
cm93X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDUpCiAKIF9sbGludF9vcF9jYWxsOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZTkwZWNlZGZhNzMwOTgyZmVlZjcx
ZWViMGNlYTY0MzgyMzRhNjkxYy4uN2VmNmI4N2MxNzBhZDA4M2IxZjUyOWRhODgzNmMwMGNkYTY0
YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIzNzMsMyArMjM3MywxMiBAQCBfbGxpbnRfb3Bf
cHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2goNikKKwor
X2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgSlNB
cnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDk0NTVmNzVjN2I2NjQy
ZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1Yi4uZDIxNTJhMmYyNzdhZGU1ODc5NzZhMWMzZjEyMDIz
NzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyMjYsMyArMjIyNiwxMSBAQCBfbGxpbnRfb3Bf
cHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlzcGF0Y2goNikKKwor
X2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBKU0Fycm93RnVuY3Rpb246Om1f
Ym91bmRUaGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAg
c3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5k
ZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5NGE2Ny4uODA2ZGI1MjMwM2Q1
YWQzYTcxODgxMjlmODhiZDc2NGM2YjUwZWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOSArMzYxLDE5IEBAIHB1YmxpYzoKICAgICAgICAg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVk
IGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0
aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwg
Ci0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJz
ZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1
bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29u
dGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0
aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgeworICAgICAgICB1c2VzVGhpcygp
OwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lv
bihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0
aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pOwotCi0gICAg
ICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5v
ZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJj
ZSk7CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0
aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0TG9j
KGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlvbi5z
dGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0ZTEyODg0OGVhOGI0M2ZkODYzNjk3NGNiOTk3YzM3ZGIu
LmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0M2JjYmExOTY5M2FkYmQxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC04OTAsMTMgKzg5
MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNF
eHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIAorICAgIGlubGluZSBCYXNlRnVuY0V4cHJO
b2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKICAgICB7CiAgICAgICAgIG1f
bWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9u
KTsKICAgICB9CiAKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisg
ICAgICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1fbWV0YWRhdGEsIHNv
dXJjZSkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9t
ZXRhZGF0YShtX21ldGFkYXRhKQpAQCAtOTA0LDYgKzkxMCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlkZW50LCBGdW5jdGlv
bkRlY2xhcmF0aW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgQXJyb3dGdW5jRXhwck5vZGU6OkFy
cm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24s
IGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwogI2lmIEVOQUJMRShF
UzZfQ0xBU1NfU1lOVEFYKQogICAgIGlubGluZSBDbGFzc0RlY2xOb2RlOjpDbGFzc0RlY2xOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0Rl
Y2xhcmF0aW9uKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGNmNGZlNDUwYTkyNDk1MDRmMzBiYTg1YTI2
NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUzMzA1YzRhMGMyMWM3MzM4ODM5YzI5ZjIzYzc0ZGU5Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcg
QEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgIFBhcnNl
ckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9k
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAg
ICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1u
KGVuZENvbHVtbikKQEAgLTE2Myw2ICsxNjMsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAg
LCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29u
c3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQorICAg
ICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2lu
ZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDFkNmIwM2Q3NzY2
Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQuLjg3MzY2OGVjMzdiNDI3YjkyMDY0OWRlMzA2
ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE2
NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzRG90
QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUFycmF5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDksNyArMTgxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAg
ICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQs
IFNvdXJjZVBhcnNlTW9kZSk7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
LCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKTsKIAogICAgICAgICB2b2lk
IGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5j
dGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzUsNiArMTgzNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRT
dGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2Nv
bnN0cnVjdG9yS2luZCk7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2ln
bmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxp
bmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2MCw2ICsxODYyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5z
aWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKKyAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwog
ICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2Rl
IHsKQEAgLTE4ODksMTggKzE4OTIsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2ln
bmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJhc2VGdW5jRXhwck5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgQmFzZUZ1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1l
dGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICB9OworCisKKyAgICBjbGFz
cyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9kZSB7CisgICAgcHVibGljOgor
ICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOworCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB9OwogCi0gICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhOworICAg
IGNsYXNzIEFycm93RnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNl
Q29kZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRB
WCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhZWU3MGI2YTcz
MjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxLi5mNTA4MTRlN2IxNDJhYjUzMDBkODRhNGI3
MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
aW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5h
bWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CisgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJv
ZHlUeXBlOwogICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIHx8
IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAgICAgICAgbmV4dCgpOwog
ICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVu
ZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0
ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVt
biwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNv
dW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTE1NjIsNyArMTU2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0
aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxzZQogICAg
ICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNr
Rm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAi
Q2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkg
b2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7Cisg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0
b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNv
bnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9u
KTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQ
YXJzZU1vZGUgbW9kZSkKQEAgLTE3MzcsNyArMTczOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1
aWxkCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gY29uc3RydWN0
b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLQorICAgIAogICAgIGZ1bmN0aW9uSW5m
by5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAvLyBJZiB3ZSBrbm93
IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm8g
YW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KQEAgLTE3NTYs
MTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgIGVuZExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0IDoKICAg
ICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tl
bi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLQorICAgICAgICAKKyAgICAgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZTsKKyAg
ICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0
aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAot
ICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNo
ZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5z
dHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBt
b2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+
cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BT
Y29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
QEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIG1f
bGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBm
dW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAK
LSAgICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQorICAgICAg
ICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNh
Y2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggMDc2MGMxOWViMTYz
NmRiMjFhMTc5NjEyYTU0OTZlMTljZmQxYmIwNy4uZGM1NjFmOWIxYTZkYTM2NDNiODI3MmZlN2Ix
MmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9u
IGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5
TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAg
aW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVj
dG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5
UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50
LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkg
eyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
QXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAg
dm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFy
Z3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCAwYWIxNjcyMTE2ODE5NGMxYTYwMjg5
ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2OTRmMjdhNDU4NzNiMmEyMTY3YTM2OTYzNWQzZTU5NDVh
YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApA
QCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0cjxDb2RlQmxvY2s+IFNjcmlwdEV4ZWN1dGFibGU6Om5l
d0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gZ2xvYmFsT2Jq
ZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2Zp
bGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc1Byb2ZpbGVyKCkgPyBQcm9m
aWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2sgPQotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJs
ZS0+Y29kZUJsb2NrRm9yKAotICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwg
a2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBleGVjdXRhYmxl
LT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgZXhlY3V0YWJsZS0+bV9z
b3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgZXhlY3V0YWJs
ZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNlKGV4ZWN1dGFibGUtPm1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0
YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIHN0
YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykg
ewogICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmNlMjQyOGNiYzEwMWRkYTZjYjEw
MWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2YyYmRlODhjNWE2ZTkxNjc2MDM2ZWUyN2Q3NDRmNzY0NTM5
Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAt
NDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVu
c2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTMwLDcgKzUzMCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlv
bigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwg
aXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxz
ZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAg
LTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgp
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0
QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RB
YmlsaXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFz
c0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29u
c3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFjMjYwZTE2YTIwZTJiODQwOWFl
YmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6c19pbmZvID0geyAiQXJyb3dG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBcnJvd0Z1
bmN0aW9uKSB9OworCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
Cit7CisgICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2VsbCktPkpTQXJyb3dGdW5j
dGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9u
KiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsK
KyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgcmVz
dWx0LCAiQWxsb2NhdGluZyBhbiBhcnJvdyBmdW5jdGlvbiIpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMp
CisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgp
LT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhpcyh2bSwgdGhpcywg
Ym91bmRUaGlzKQoreworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlz
KQoreworICAgIEFTU0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5oYXNCZWVu
SW52YWxpZGF0ZWQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUs
IGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBcnJvd0Z1bmN0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fYm91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBKU0Fycm93RnVuY3Rp
b246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7CisgICAgcmV0
dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIyMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCkBAIC0w
LDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3NhbmRyIFNrYWNoa292
IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmluZSBKU0Fycm93RnVu
Y3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNHbG9iYWxPYmplY3Q7Citj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOwor
ICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERG
Rzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Cisj
ZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0
aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTQXJyb3dG
dW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9m
KEpTQXJyb3dGdW5jdGlvbik7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rp
b24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
U2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICB7CisgICAgICAgIEpTQXJyb3dG
dW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Fycm93RnVu
Y3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBi
b3VuZFRoaXMpOworICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxP
YmplY3QoKSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IHJldHVybiBmdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisKKyAgICBKU1ZhbHVl
IGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9CisgICAgCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKyAgICAK
KyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dGdW5jdGlvbiwgbV9ib3VuZFRo
aXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCitwcml2YXRl
OgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUq
LCBKU1ZhbHVlKTsKKyAgICAKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgIAorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2JvdW5kVGhpczsKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQXJyb3dGdW5jdGlvbl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMGI4N2Q3NWM5MTQ1
MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBmMDkzZS4uOTI4MzUwZTI0NzhjNDVmN2JmN2U4YWE4NGM5
ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaApAQCAtMTQxLDYgKzE0MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
ICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAg
IEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJl
Kik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIGlu
dCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3Jl
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2ZTVjMTE2NGNiMjdmYTVlNDE2MThiNGI4MTQyZjAyLi5m
MDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUyN2I2M2I2NDRhODg0NDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTQ0LDYgKzQ0
LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzCiAgICAgLCBtX3JhcmVEYXRhKCkKIHsKIH0K
KyAgICAKK2lubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQorICAgICwgbV9leGVjdXRhYmxlKHZt
LCB0aGlzLCBleGVjdXRhYmxlKQorICAgICwgbV9yYXJlRGF0YSgpCit7Cit9CiAKIGlubGluZSBG
dW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFkMDQyMy4uZGExYWMyNWFhYjAw
ODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMwZmYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0Fy
cm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC0yNTks
NiArMjYwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgZXhlYy0+
c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsKIAogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5jdGlvblN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1bmN0aW9uU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIG1f
ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFtZU9mZnNldCkpOwogICAgIG1f
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwpA
QCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA5OTg2YmNmNjI0NWUyY2M0NjgyMGIx
MzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEyYjI5MzA1NWU5YmFlMzBiYjczZmQ5MDE1YmMwMDM4MzYz
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9m
dW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVu
Y3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJvd0Z1bmN0
aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlv
blN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwpAQCAtNDYy
LDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxlZVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbGVlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBm
dW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFy
cm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fycm93RnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBQcm9w
ZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9u
TmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0
aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3Ny
ZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWUzYTY2ZWE5MmYw
MzBkYjM3NzlhNGMzZTQwMmU3YzExOGQxZDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1v
c3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpzCkBAIC0wLDAgKzEsNDYgQEAKKyJ1c2Ug
c3RyaWN0IjsKKwordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBzaG91bGRUaHJvd1REWihm
dW5jKSB7CisgICAgdmFyIGhhc1Rocm93biA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUubmFtZS5pbmRleE9mKCJSZWZl
cmVuY2VFcnJvciIpICE9PSAtMSkKKyAgICAgICAgICAgIGhhc1Rocm93biA9IHRydWU7CisgICAg
fQorICAgIGlmICghaGFzVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRpZCBub3Qg
dGhyb3cgVERaIGVycm9yIik7Cit9CisKK2Z1bmN0aW9uIGJhcihmKSB7IH0KKworZnVuY3Rpb24g
Zm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gICh4KSA9PiB7IHJl
c3VsdCA9IHg7IHJldHVybiB0ZHpQZXJwZXRyYXRvcjsgfQorICAgIGlmIChiKSB7CisgICAgICAg
IE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAg
ICAgICAgICAgcmV0dXJuIHRkelBlcnBldHJhdG9yOworICAgICAgICB9CisgICAgfQorICAgIGxl
dCB0ZHpQZXJwZXRyYXRvcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIp
Oworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKHNob3VsZFRocm93VERaKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgYm9vbCA9ICEoaSAlIDEwMCk7CisgICAgaWYg
KGJvb2wpCisgICAgICAgIHNob3VsZFRocm93VERaKCgpPT4geyBmb28oYm9vbCk7IH0pOworICAg
IGVsc2UgeworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKGJvb2wpOworICAgICAgICBpZiAocmVz
dWx0ICE9IDApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0
aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDFiYmUx
NDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5YzY1YTRiYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24t
c2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBAQAordmFyIG4gPSAx
MDAwMDAwOworCitmdW5jdGlvbiBiYXIoc2V0KSB7CisgICAgdmFyIHJlc3VsdCA9IHNldCgwKTsK
KyAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlOiAiICsgcmVzdWx0OworfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQg
PSAwOworICAgIHZhciBpbVVuZGVmaW5lZDsKKyAgICB2YXIgYmF6OworICAgIHZhciBzZXQgPSAg
KHgpID0+IHsKKyAgICAgICAgcmVzdWx0ID0geDsKKyAgICAgICAgaWYgKGJheiAhPT0gNTApCisg
ICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGJhejsKKyAgICAgICAgcmV0
dXJuIGltVW5kZWZpbmVkOworICAgIH07CisgICAgYmF6ID0gNTA7CisgICAgaWYgKGIpIHsKKyAg
ICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsg
aSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYg
KHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdiMmMyYWQzNDVlMjZjMjAzNzc4OTBkZjVmMzFmYWYwNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCwwICsxLDI1IEBACit2
YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYikg
eworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geyByZXN1bHQgPSB4
OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgewor
ICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28p
OworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28o
IShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24t
c2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3OWVjOWVhYTY1YzU0MTkzMGI5MDQ4MjZlN2EyM2ExM2Zi
MmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIg
biA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEwKTsgfQorCitmdW5jdGlvbiBm
b28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSB4ID0+IHsgcmVzdWx0
ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVz
dWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGlu
ZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsK
KyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJv
dW5kLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDMyMDg4YWJmMjZkYWUyYWU3MWEyYWM0YzA1ZDRmMDc3
NTVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKQEAgLTAsMCArMSwxOCBAQAordmFyIHRlc3RDYXNl
ID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBl
Y3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCit2YXIgZCA9
IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMueCAr
IHo7IH0KK307CisKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKwor
Zm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC55KCkuYmluZChlLCAi
bGV5IikoKSwgImJhcmxleSIsICJFcnJvcjogZnVuY3Rpb24gYmluZCBzaG91bGRuJ3QgY2hhbmdl
IGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5YzgzYWM1M2E3ZjZkMzUxOTYyMzIxNGMxZTlmYzYwZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0
aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAi
JywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGQgPSB7CisgIHgg
OiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9Owor
bm9JbmxpbmUoZC55KTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitmb3IgKHZhciBpPTA7
IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0Q2FzZShkLnkoKS5jYWxsKGUpLCAiZm9vIiwgIkVycm9y
OiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0IGNoYW5nZSB0aGUgbGV4aWNhbCBiaW5kaW5nIG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbiIpOworICAgIHRlc3RDYXNlKGQueSgpLmFwcGx5KGUpLCAiZm9vIiwg
IkVycm9yOiBmdW5jdGlvbiBhcHBseSBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmluZGlu
ZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3OTQ5YmM2YjJjNzhhYjQ2NTllYThjMmFjNjNkZTYyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsMjIgQEAKK3ZhciB0ZXN0Q2FzZSA9
IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0
ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIHNpbXBs
ZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworbm9JbmxpbmUoc2ltcGxlQXJyb3dGdW5jdGlv
bik7CisKK3ZhciBlcnJvck9uQ3JlYXRlID0gZmFsc2U7CisKK2ZvciAoaT0wO2k8MTAwMDA7aSsr
KSB7CisgICB0cnkgeworICAgICAgIHZhciBmYyA9IG5ldyBzaW1wbGVBcnJvd0Z1bmN0aW9uKCk7
CisgICB9CisgICBjYXRjaCAoZSkgeworICAgICBlcnJvck9uQ3JlYXRlID0gdHJ1ZTsKKyAgIH0K
KworICAgIHRlc3RDYXNlKGVycm9yT25DcmVhdGUsIHRydWUsICJFcnJvcjogTm8gZXhjZXB0aW9u
IGR1cmluZyBydW4gbmV3IEFycm93RnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNmYWIyNGM5MWJjNTdjOTU4NzYz
MmRmZWM5YTRjOTM3OThlMjE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCkBA
IC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVk
LCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVz
c2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVh
bCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0g
bmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7CisgIHRoaXMu
Z2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7Cit9CisKK25v
SW5saW5lKERvZykKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkrKykgeworICB2YXIgZCA9IG5l
dyBEb2coIk1heCIpOworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1lLCAiRXJyb3I6IHRo
aXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAj
MSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVjODE2NGU0OGQwM2E2N2ViOTJhNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIGZ1bmN0aW9u
Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRoaXM7Cit9
OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCit0ZXN0Q2Fz
ZShpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCit2
YXIgb2JqID0geworICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4gdGhp
czsKKyAgfQorfTsKKworbm9JbmxpbmUob2JqLm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoKSA9PT0gb2JqLCB0cnVl
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMyIpOworfQorCit2YXIgZmFrZSA9IHtzdGVhbDogb2JqLm1ldGhvZCgpfTsK
K25vSW5saW5lKGZha2Uuc3RlYWwpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7
CisgICAgdGVzdENhc2UoZmFrZS5zdGVhbCgpID09PSBvYmosIHRydWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM0Iik7
Cit9CisKK3ZhciByZWFsID0ge2JvcnJvdzogb2JqLm1ldGhvZH07Citub0lubGluZShyZWFsLmJv
cnJvdyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShy
ZWFsLmJvcnJvdygpKCkgPT09IHJlYWwsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNh
bGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMTkwODZk
NTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4OTM5YzA5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0
dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewor
ICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3
YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsgbmFtZTonb2Jq
JywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICIt
bmFtZS0iICsgdmFsdWU7IH19OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0
ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ29iai1uYW1lLXRl
c3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8
MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MSA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRv
U3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQxLCAnb2JqLW5hbWUtdGVzdCcgKyBpLnRvU3Ry
aW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5uYW1lPSduZXdPYmonOworCitmb3IgKHZh
ciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsg
aS50b1N0cmluZygpKSwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjNSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0
MiA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1
bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBu
b3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg1YmQzNjNlNGU0NmIwMmQyZjE5YmJlMzg1MDJmNTI4MjMzYTlmMTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAtMCwwICsxLDI2IEBACit2YXIgdGVzdENhc2UgPSBmdW5j
dGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsg
IicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9IHsK
KyAgbmFtZTonb2JqJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFs
T2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhp
cy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9OworCitub0lubGluZShvYmouaW50
ZXJuYWxPYmplY3QubWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAg
ICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmlu
ZygpKSwgJ2ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICMxIik7Cit9CisKK29iai5pbnRlcm5hbE9iamVjdC5uYW1lPSduZXdJbnRlcm5hbE9iamVjdCc7
CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLmludGVy
bmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICduZXdJbnRlcm5hbE9i
amVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzU0OTRj
ZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVhY2U2Mjg3NTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLTUuanMKQEAgLTAsMCArMSw0OCBAQAordmFyIHNvcnRlZFZhbHVlczsKKwordmFyIHRl
c3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIg
KyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisK
K3ZhciBvYmogPSB7CisgIGFycjogWzEsIDQsIDYsIDMsIDcsIDBdLAorICBidWJibGVTb3J0OiBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHsKKyAgICAgIHZhciB0bXA7CisgICAgICB2
YXIgYXIgPSB0aGlzLmFyci5zbGljZSgpOworICAgICAgdmFyIF9sZW5ndGggPSBhci5sZW5ndGgK
KyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbmd0aDsgaSsrKSB7CisgICAgICAgIGZvciAo
dmFyIGogPSBpOyBqID4gMDsgai0tKSB7CisgICAgICAgICAgaWYgKChhcltqXSAtIGFyW2ogLSAx
XSkgPCAwKSB7CisgICAgICAgICAgICB0bXAgPSBhcltqXTsKKyAgICAgICAgICAgIGFyW2pdID0g
YXJbaiAtIDFdOworICAgICAgICAgICAgYXJbaiAtIDFdID0gdG1wOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGFyOworICAgIH0KKyAgfQorfTsKKworbm9J
bmxpbmUob2JqLmJ1YmJsZVNvcnQpOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgewor
ICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgMywgNywgMF07CisgICAgdGVzdENhc2Uob2JqLmJ1
YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmlu
ZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKworICAgIHZhciBzb3J0ZWRW
YWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzBd
LCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBh
cnJvdyBmdW5jdGlvbiAjNiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1s2XSwgNywgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzciKTsKKworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgNSwgOCwgMjEsIDE5LCAw
XTsKKworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgsIDksICJFcnJvcjog
dGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9u
ICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVz
dENhc2Uoc29ydGVkVmFsdWVzWzFdLCAxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTIiKTsKKyAgICB0ZXN0Q2FzZShz
b3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTMiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQxN2JjN2M4ZjE4MDUzNThi
ZGJhODViMmNlZjZhNjliNWY0MWVjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02Lmpz
CkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cg
bWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFj
dHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1l
ID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gIHRoaXMubmFtZTsKKyAgdGhpcy5nZXRO
YW1lTmVzdGluZ0xldmVsMSA9ICgpID0+ICgpID0+IHRoaXMubmFtZTsKKyAgdGhpcy5nZXROYW1l
TmVzdGluZ0xldmVsMiA9ICgpID0+ICgpID0+ICgpID0+IHRoaXMubmFtZTsKK30KKwordmFyIGQg
PSBuZXcgRG9nKCJNYXgiKTsKKworbm9JbmxpbmUoZC5nZXROYW1lKCkpOworbm9JbmxpbmUoZC5n
ZXROYW1lTmVzdGluZ0xldmVsMSgpKCkpOworbm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVs
MigpKCkoKSk7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC5n
ZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGlu
c2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lTmVz
dGluZ0xldmVsMSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmlu
ZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKyAgdGVzdENhc2UoZC5nZXRO
YW1lTmVzdGluZ0xldmVsMigpKCkoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxMGEzMWQ2NzMxYWU2OTc0ZDY2N2VkOGQyNDg3
MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4
aXQuanMKQEAgLTAsMCArMSwzNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0NvbnRl
eHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKCkgeyB9CisK
K2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICh4
KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0Cisg
ICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkK
KyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7CisgICAg
ICByZXN1bHQgPSB4OworICAgIH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7Cisg
ICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGlu
ZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsK
KyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAg
aWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0
aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDMwNjM3Yzg1YmY5NDIxYWU5Yzk3ZTBkZDdm
NmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcwpA
QCAtMCwwICsxLDM4IEBACit2YXIgbiA9IDEwMDAwMDAwOworCit2YXIgbmV3Q29udGV4dCA9IHsK
KyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBiYXIoZikgeworICAgIGlmICh0
aGlzID09IG5ld0NvbnRleHQpCisgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIG5lc3Rp
bmcgZnVuY3Rpb24nOworICAgIGYoMTApOworfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZh
ciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAgcmVzdWx0ID0geDsK
KyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlm
ICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAg
ICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uJzsKKyAgICB9OworCisg
ICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMTAp
CisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citu
b0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciBy
ZXN1bHQgPSBmb28uY2FsbChuZXdDb250ZXh0LCAhKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0
ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNp
bmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OWUwMjcxMzljMTY2N2Ux
MDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmct
bm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuZXdDb250ZXh0ID0g
eworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAz
OyB9Citub0lubGluZShjYWxsKTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRo
IHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7Cisg
ICAgdmFyIGYgPSAoKSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbiAjMSc7CisgICAgfTsKKyAgICBpZiAocCkgeworICAgICAgICBjYWxsKGYpOyAvLyBGb3Jj
ZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAgICAgICAgIE9TUkV4aXQo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAgcmV0dXJuIHsgJ3gn
OiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkgeworICAgIHZhciBvID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsK
KyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRv
IGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJv
dyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNr
IHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFy
IGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjog
ZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlz
LXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3ZGUyOGY2MGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM2IEBACit2YXIgbmV3Q29u
dGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91bGQgYmUgaW52b2Nl
ZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQKK2Z1bmN0aW9uIHNp
bmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cg
ZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0
aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQg
b2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAo
cCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAg
ICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0
aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAg
IHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsKKyAgICAgIHJldHVy
biB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgZmFs
c2UpOy8vIFN1YnN0aXR1dGUgdGhpcworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAo
cmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsg
cmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNv
bXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBw
cm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRl
eHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCit2YXIgcmVzdWx0ID0gZig0Mik7Citp
ZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAi
ICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2lu
Zy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3ZWEwNzYzNWE0MTMxY2QyMzExZDQ1MDczNWY1N2MxZGQ5
NTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSw0
NSBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8g
U2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250
ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8v
IENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9
IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93
ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKworICAgICAgcmV0dXJuIHg7
CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyByZXR1cm4gZzsgfQor
ICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3Jl
IGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdD
b250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0
aW9uICMyJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5saW5lKHNpbmspOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsuY2Fs
bChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsvLyB1c2UgY2FsbCB0byBzdWJzdGl0dXRlIGNvbnRl
eHQKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0
aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQg
dGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRv
IHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0aGUgaW1wbGljaXQgaW5uZXIg
ZWxzZSBicmFuY2gKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsK
K3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91
bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5
IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7
CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUg
cHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwg
dHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhy
b3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tb3Ro
ZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNlMGM2NThkM2EyZjc5MjI5ZGY0Zjg5MmNjZGExNTEz
Yzk0ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDE3IEBACit2YXIgdGVzdENh
c2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4
cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBz
aW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFycm93RnVu
Y3Rpb24pOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRlc3RDYXNlKE9iamVj
dC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSwgRnVuY3Rpb24ucHJvdG90eXBl
LCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdldFByb3RvdHlwZU9mIHZhbHVlIGZvciBhcnJvdyBmdW5j
dGlvbiIpOworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVu
Y3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBpbnN0YW5jZW9mIG1l
dGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5j
dGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBOb3QgY29ycmVjdCBy
ZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1ldGhvZCBvZiBhcnJvdyBmdW5jdGlvICAgbiIpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YTFmMGE0OWNiMTY4NjNjNTkyMTM2
MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKQEAgLTAsMCArMSwyNCBA
QAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsK
KyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhw
ZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9
Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZv
cih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUp
IHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0
aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOwor
ICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFs
c2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwg
dHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiBv
bmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5n
IGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0x
MC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNkYjNjNzBhMWIyN2MzZGJiNTIzODA5NTVmNTM1M2Q3Njc0
MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIHRlc3RDYXNl
ID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBl
Y3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlv
biBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNv
dW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMu
bmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUi
KTs7CisgICAgfTsKKworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAg
aWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsK
KyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2UocnVuKDEpLCB0cnVl
LCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gb25lIHRpbWUiKTsK
K3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJv
dyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFiMDFjYTI3ZDBiOTcyMGI1N2U4ZDYwNTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tcnVuLTEwMDAwLTEuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rp
b24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICIn
LCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291
bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKysp
IHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5h
bWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAg
IHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2Jq
LmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVy
biByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6
IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1y
dW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQyNzFmNGEzMTU5MTYyNWEwYmQz
ZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzCkBAIC0wLDAgKzEs
MjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOwor
ICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmogPSBmdW5jdGlvbiAo
bmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMuZ2V0TmFtZSA9ICgp
ID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisgICAgdmFyIG9iaiA9IG5ldyBPYmoo
Ikl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAg
ICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVz
dENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBv
ZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFs
bG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODYyYzYyOGUz
YjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1MWRlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1uby1kb3Vi
bGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9
IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFy
IGYgPSAoKSA9PiB7IH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9yY2Ug
YWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0KCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4Jzog
MiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIGlmIChvLnggIT0gMykK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBidXQgaXMgIiArIHJl
c3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJv
cGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Citp
ZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMyBidXQg
aXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAxNDBmYTE0OTk3M2UxN2FhYThkOTEwNWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNpbmsgKHAs
IHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgp
OyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5rKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUs
IGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikK
KyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKwor
Ly8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRv
IHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2Nh
dGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0g
Zig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIg
YnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3ZWZjNjE4NmJlMDU3YzNjYmIyNzYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
c2lua2luZy1wdXQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2luayAocCwgcSkgewor
ICAgIHZhciBnID0geCA9PiB4OworICAgIGlmIChwKSB7IGlmIChxKSBnLmlubmVyID0gNDI7IHJl
dHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geDsKK30KK25vSW5saW5lKHNpbmspOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1
ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0
IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUg
RlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2Ug
YnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJlc3VsdCA9IGYoMTIpOwor
aWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIgYXMgaXQgc2hv
dWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0aHJvdyAiRXJy
b3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hlY2sgdGhhdCB0aGUg
YWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2
YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1
bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIg
KyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0OTIzOTcxOTgzZGNkYTM0YzI2
OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI3IEBACit2
YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0
cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3Jl
U3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgZXhjZXB0aW9u
ID0gbnVsbDsKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRyeSB7CisgICAgICAg
bmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAg
ICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQorICAgICAgICAgIHRocm93ICJF
eGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOworICB9CisKKyAgaWYg
KCFleGNlcHRpb24pCisgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJvd24gZm9yIGFuIHVu
aXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKKworICB2YXIgZSA9IG5ldyBCKGZhbHNlKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi10eXBlb2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2VjMGRkZDU1MTRmYWY0ZDBkMDNj
OWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAgKzEsMjcgQEAK
K3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Cisg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVj
dGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQor
fTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7YSArIDF9OworCitu
b0lubGluZShhZjEpOworbm9JbmxpbmUoYWYyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgKytpKSB7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjEsICJmdW5jdGlvbiIsICJFcnJvcjogTm90
IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UodHlw
ZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMiIpOworCisvL0ZpeG1lOiBTb21lIGJ1ZyBpbiBpbmxpbmluZyB0eXBlb2Yg
d2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFtZXRlcnMgZnRsLW5vLWNqaXQtbm8taW5saW5lLXZhbGlk
YXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1ZSAtLWVuYWJsZUZ1bmN0aW9uRG90QXJndW1lbnRzXD10
cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXRocmVzaG9sZEZvckpJVEFmdGVyV2Fy
bVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBoPXRydWUgLS1tYXhpbXVtSW5saW5pbmdEZXB0aD0xCisv
LworLy8gZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSAgeworLy8gICBpZiAodHlwZW9m
IChmdW5jdGlvbiAoKSB7fSkgIT09ICdmdW5jdGlvbicpCisvLyAgICAgICB0aHJvdyAnV3Jvbmcg
dHlwZSc7CisvLyB9CisvLyAgdGVzdENhc2UodHlwZW9mICgpPT57fSwgImZ1bmN0aW9uIiwgIkVy
cm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMy0iICsgaSk7CisK
Ky8vICB0ZXN0Q2FzZSh0eXBlb2YgKChiKSA9PiB7YiArIDF9KSwgImZ1bmN0aW9uIiwgIkVycm9y
OiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUzNDU3Y2FhNjRkMWU2YjdhMDIuLmYxZDFiOGYxNTAwYWRj
Y2U4YjczYzY4ODVjODA1ODgzYzk2NzA1MTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0w
OC0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KKworICAgICAg
ICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rp
b24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCBvZiB0aGlzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5NTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tYmlu
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tYmluZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJy
b3dmdW5jdGlvbi10eXBlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJv
d2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qczog
QWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanM6
IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5q
czogQWRkZWQuCisKIDIwMTUtMDgtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2UgZmxha2luZXNzIG9mIGluc3Bl
Y3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYjMyNmNjYmI0ZTE0
YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2YwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1
cmluZyBpbnZva2UgYmluZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBk
LnkoKS5iaW5kKGUsICdsZXknKSgpIGlzICdiYXJsZXknCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJp
bmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlhY2IyYmM4ZmQ1MDRjNjhmMDQ0NWE2ZWFjNGE2YTE0NTRh
YmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5k
Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNmNDVlMTZiOTk2NTcyZDFhZmRlZWRkNTkxMTI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlz
IHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHkKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCkuY2FsbChlKSBpcyAnZm9vJworUEFT
UyBkLnkoKS5hcHBseShlKSBpcyAnZm9vJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2YTg3NDllYzViN2U3ODNjNmE5ZWMzMTMyZDJkMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NjcwNmZmZjE3YzIxMjM4NTM2NDBiYjJhNGViMTdkNjNlMWEzNzIz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBm
dW5jdGlvbiBubyBjb25zdHJ1Y3RvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2ltcGxlQXJy
b3dGdW5jdGlvbigpJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25z
dHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5Y2RkNGQ4YmRmYTYyNDFjYjZiZWZiZjA0Y2M5NTgzMGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVj
dG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjY2ZmMyODhj
YWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBsZXhpY2FsIGJpbmQg
b2YgdGhpcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkLmdldE5hbWUo
KSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lSGFyZCgpIGlzIGQubmFtZQorUEFTUyBkLmdldE5h
bWVOZXN0aW5nKCkoKSgpIGlzIGQubmFtZQorUEFTUyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBp
cyAnb2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIG9iai5tZXRob2QoKSgnY29ycmVjdCcpIGlz
ICduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRlcm5hbE9iamVjdC5t
ZXRob2QoKSgnY29ycmVjdCcpIGlzICdpbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnCitQQVNT
IGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3SW50ZXJu
YWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNl
IGlzIHRydWUKK1BBU1Mgb3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJPYmogaXMgdHJ1ZQor
UEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1MgcmVhbC5ib3Jyb3co
KSgpID09PSByZWFsIGlzIHRydWUKK1BBU1MgYXJyb3dGdW5jdGlvbignLXRoaXMnKSBpcyAicmln
aHQtdGhpcyIKK1BBU1MgaG9zdE9iai5mdW5jKCctdGhpcycpIGlzICJyaWdodC10aGlzIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbCBi
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MWVhMjJhNzZmZGY4YmZmNWU3MmU1MWI3Nzk0YjNlMzQ3ZDE2NDJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhp
cy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3Ro
ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTE1MmU1ZTM3YzY5MTVmMzgyM2UyOWIyMGE5
NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBFUzYg
YXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9ycworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxl
QXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rpb24ucHJvdG90eXBlCitQQVNTIHNpbXBsZUFycm93RnVu
Y3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVlCitQQVNTIHNpbXBsZUFycm93RnVuY3Rp
b24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNjdmOGIwMGU0NjA1NWVlNmZhZTVjMWU4Mjg5ZWZl
ZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRk
ei1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZjZDg2MDBlODg0MTI3N2M0OTRhOTg5MDIyNDUyZWE2YWI1
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
IHRlc3QgdGR6CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlzUmVmZXJl
bmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2QzZmM0OGU1YzUzZmMxMTkyNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCkBAIC0wLDAgKzEsMTAg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJmYjJj
ZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUwY2E1MzQ5YzFiYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCitQQVNTIHR5cGVv
ZiBhZjIgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKCgpPT57fSkgPT09ICdm
dW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKChiKSA9PiB7YiArIDF9KT09PSdmdW5jdGlv
bicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2NWUzNzNmZWRiNzQzODBlMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sCkBAIC0wLDAgKzEs
MTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2MWRlM2JhYjUyMDljNzJkZGNmNTAyMTAwMzQ1ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxs
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1j
YWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0
aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2MWNiZWIwYjllZTEzM2ZlODczMTEyYmZhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjRjODQyNzZlNzEwODc3ODZjNTk0
MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBAQAor
dmFyIGFmID0gKGEsIGIpID0+IGEgKyBiOworCitub0lubGluZShhZik7CisKK2Z1bmN0aW9uIGJh
cihhLCBiKSB7CisgICAgcmV0dXJuIGFmKGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIo
MSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTczYzNiNWUwY2E3OTE3
OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE1IEBA
Cit2YXIgZmUgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7fQorCitub0lubGluZShm
ZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZlKGEsIGIpOworfQorCitu
b0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAg
IHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTNm
MDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0ZTk5NzljMDJhYzJhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpAQCAtMCww
ICsxLDEyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhp
cyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kJyk7CisKK3ZhciBkID0g
eworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHogPT4gdGhpcy54ICsg
ejsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitzaG91bGRCZSgiZC55KCkuYmlu
ZChlLCAnbGV5JykoKSIsICInYmFybGV5JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
YWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4ZjkxMWJmMWM0NGQzODlkMGEzZDIxODQ2ODM0ODRiNmY5
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3Ig
RVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52
b2tlIGNhbGwmYXBwbHknKTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9OworCit2YXIgZSA9IHsgeCA6ICJiYXIi
IH07CisKK3Nob3VsZEJlKCdkLnkoKS5jYWxsKGUpJywgIidmb28nIik7CitzaG91bGRCZSgnZC55
KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmFkMDc2ODQ3YmZmNDkyOWY3ODA3NzY1Zjk5
MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDcgQEAKK2Rlc2NyaXB0
aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVjdG9yJyk7CisKK3Zh
ciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZFRocm93KCduZXcgc2lt
cGxlQXJyb3dGdW5jdGlvbigpJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTU2YTE1NTMwZjM0Y2MzMDhh
Y2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKQEAgLTAsMCAr
MSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4aWNh
bCBiaW5kIG9mIHRoaXMnKTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAgdGhpcy5uYW1lID0g
bmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7CisgIHRoaXMu
Z2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgpIik7CisgIHRoaXMu
Z2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBk
ID0gbmV3IERvZygiTWF4Iik7CitzaG91bGRCZSgnZC5nZXROYW1lKCknLCAnZC5uYW1lJyk7Citz
aG91bGRCZSgnZC5nZXROYW1lSGFyZCgpJywgJ2QubmFtZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFt
ZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1lJyk7CisKK3ZhciBvYmogPSB7CisgIG5hbWUgICA6ICdv
YmpDb2RlJywKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAodmFsdWUpID0+
IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7CisgIH0KK307CisKK3Nob3VsZEJlKCJvYmou
bWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInb2JqQ29kZS1uYW1lLWNvcnJlY3QnIik7CitvYmoubmFt
ZT0nbmV3T2JqQ29kZSc7CitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25l
d09iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworCit2YXIgZGVlcE9iaiA9IHsKKyAgbmFtZSA6ICd3
cm9uZ09iakNvZGUnLAorICBpbnRlcm5hbE9iamVjdDogeworICAgIG5hbWUgIDonaW50ZXJuYWxP
YmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlz
Lm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9CisgIH0KK307CitzaG91bGRCZSgiZGVlcE9iai5p
bnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidpbnRlcm5hbE9iamVjdC1uYW1l
LWNvcnJlY3QnIik7CisKK2RlZXBPYmouaW50ZXJuYWxPYmplY3QubmFtZSA9ICduZXdJbnRlcm5h
bE9iamVjdCc7CisKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdj
b3JyZWN0JykiLCAiJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCciKTsKKwordmFyIGZ1
bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgpID0+IHRo
aXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3RvcigpOworCitz
aG91bGRCZSgiaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSIsICJ0cnVlIik7CisKK3ZhciBv
d25lck9iaiA9IHsKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB0
aGlzOworICB9Cit9OworCitzaG91bGRCZSgib3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJP
YmoiLCAidHJ1ZSIpOworCit2YXIgZmFrZSA9IHsgc3RlYWwgOiBvd25lck9iai5tZXRob2QoKSB9
Oworc2hvdWxkQmUoImZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIg
cmVhbCA9IHsgYm9ycm93IDogb3duZXJPYmoubWV0aG9kIH07CitzaG91bGRCZSgicmVhbC5ib3Jy
b3coKSgpID09PSByZWFsIiwgInRydWUiKTsKKwordmFyIGFycm93RnVuY3Rpb24gPSB7IHggOiAi
cmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9uIDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+IHRoaXMu
eCArIHo7IH19LmdldEFycm93RnVuY3Rpb24oKTsKK3ZhciBob3N0T2JqID0geyB4IDogIndyb25n
IiwgZnVuYyA6IGFycm93RnVuY3Rpb24gfTsKKworc2hvdWxkQmUoImFycm93RnVuY3Rpb24oJy10
aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CitzaG91bGRCZSgiaG9zdE9iai5mdW5jKCctdGhpcycp
IiwgJyJyaWdodC10aGlzIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVy
cy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNzk5MzFjM2RlYmNiNTAyN2FkMTRmZDE1NDdlNWFiYTAzOGI0YjExCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIEluc3BpcmVkIGJ5IG1vemlsbGEgdGVz
dHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2Yg
YW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9
PiB7fTsKKworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0
aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0
aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24iLCAidHJ1ZSIpOworc2hvdWxkQmUoInNpbXBsZUFycm93
RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24iLCAidHJ1ZSIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY1OGZjNjUxM2VkYWJkZTFkZDY1MDc0
OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2NyaXB0aW9u
KCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6Jyk7CisKK3ZhciBBID0gY2xh
c3MgQSB7IH07Cit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IoYWNj
ZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgewor
ICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgc3VwZXIoKTsKKyAgICB9CisgIH0KK307CisKK3ZhciBpc1JlZmVyZW5jZUVycm9yID0g
ZmFsc2U7Cit0cnkgeworICAgICBuZXcgQih0cnVlKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBpc1Jl
ZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOworfQorCitzaG91bGRC
ZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7CisKK3ZhciBlID0gbmV3IEIoZmFsc2UpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmFhMjY5
MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0wLDAg
KzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsK
Kworc2hvdWxkQmUoInR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91
bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyIsICJ0cnVlIik7CisKK3Nob3VsZEJlKCJ0
eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlw
ZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIiwgInRydWUiKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259152</attachid>
            <date>2015-08-17 09:03:48 -0700</date>
            <delta_ts>2015-08-17 11:01:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817190343.patch</filename>
            <type>text/plain</type>
            <size>179486</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uODA3YmVjNThjYjg1NzFjYTAwYjYyOWMzMDM5NjRi
Yzc2YTI1OTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwg
YXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjIzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4LDYgKzIx
OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50
cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUq
KTsKQEAgLTIyMjEsNiArMjIzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVO
ZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3
RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDgw
MGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2
NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNj
b3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxl
TG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVO
ZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJ
bjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUzZGFm
MzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2
ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAg
ICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKyAg
ICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUp
OwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBp
bGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEz
Yi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAgICAg
ICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBzZXQgdGhl
aXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAgICAgICAg
IC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUw
M2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhw
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUz
YjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1
ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3MTguLjcx
MmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04
OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8o
U3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9s
OjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBT
eW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlv
bl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisg
ICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fy
cm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5j
dGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZp
bmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5
ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CkBA
IC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAgY2FzZSBU
b1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmlu
c2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNS
ZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhi
NC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2
LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpf
SklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnRQ
dHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUoaW50NjQs
IGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2ND
LCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAorICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGlu
dDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVu
Y3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFjcm8oSl9K
SVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50UHRyLCBp
bnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1bmN0aW9u
VHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4
NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAi
RlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJK
U0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKQEAgLTU5
Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21waWxlTG9h
ZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09
IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0Fy
cm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0
aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAgIAogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5k
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVlIGNhbGxS
ZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJs
ZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1
bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAgICA6IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rp
b24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAKLSAg
ICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAg
ICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAg
ICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyBhbGxv
Y2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFz
dC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5b3VuZy4K
LSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5j
dGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFi
bGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0gICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNG
dW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2Jq
ZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29wZSA6IG1f
aGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2lu
dGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9oZWFwcy5K
U0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxl
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICAgICBt
X291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRy
WmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAgICAgCiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVj
dCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBMVmFsdWUg
Y2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpLAotICAg
ICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7Cisg
ICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJhbWUsIHNj
b3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiB2
bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIo
ZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUxv
YWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25f
dGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQogICAgIHsK
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMz
ZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5
LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJs
ZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZh
bHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAgICAgICBp
c0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9IEpTVmFs
dWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAgICAgSlNG
dW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAgICAgIAor
ICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAgICAgICAg
ID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAgICAgICAg
ICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUxOWY4My4u
MGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1
YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2VmNTViMTIy
ZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5j
bHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07CisgICAg
Y2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5ODdjMzAz
YjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uZWQ5OGQ2ZDU5NThmNTU5ZDY3YzYwMGJkOWQxYWI1MWUw
YjU5MmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC02
MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNF
VCArIGFyZ3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsK
ICAgICB9Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVudHMgaW50
byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCiAgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVjbCBjYWxs
aW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCiAgICAgLy8g
c3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMg
aW50byB0aGUKQEAgLTIwOSw2ICsyMDgsMTUgQEAgcHVibGljOgogICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMik7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcg
YXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIg
YXJnMikKICAgICB7CiAgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwpAQCAtOTU1LDYgKzk2
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwog
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwogICAgIH0KKyAgICAKICNlbGlmIENQVShBUk0pCiAjaWYgQ1BVKEFSTV9IQVJERlAp
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQpAQCAt
OTk4LDcgKzEwMDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0KKyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
VHJ1c3RlZEltbTMyLCBGUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIG1vdmVEb3VibGUoYXJn
NCwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKQEAgLTEwMDcsNiArMTAxNiw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICNlbHNlCisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
RlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKQEAgLTExMjgsNyArMTEz
OCw3IEBAIHB1YmxpYzoKICNlbHNlCiAjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg
cGxhdGZvcm0uIgogI2VuZGlmCi0KKyAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHMoR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CkBAIC0xMjI3LDYgKzEyMzcsMTMgQEAgcHVibGljOgogICAgICAgICBt
b3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQorICAgIAor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIH0KICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbTY0IGFyZzIpCiAgICAgewpAQCAtMTMyNiwxMyArMTM0Myw2IEBAIHB1
YmxpYzoKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJl
ZyBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7Ci0gICAgICAgIG1v
dmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQogICAgIHsKICAgICAgICAg
bW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwpAQCAtMTQ3MCw3ICsxNDgwLDYgQEAg
cHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGlu
ZyBjb252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50
IHJlZ2lzdGVycywgZS5nLiBBUk12Ny4KICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJT
ID09IDQKLQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAg
ICAgewogICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCAwMzhmNWQ3ZGJjMDZhZjgxMGY3MWE3ZDQyNDBkN2ZmMmVi
YTQwZWI0Li5iYmM4NTIzZjViYjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZW5kKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZW50ZXIpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGUpCisgICAg
ICAgIERFRklORV9PUChvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcykKICAgICAgICAgREVGSU5F
X09QKG9wX2VxKQogICAgICAgICBERUZJTkVfT1Aob3BfZXFfbnVsbCkKICAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1
ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Ao
b3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhw
KSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChv
cF9uZXdfcmVnZXhwKQogICAgICAgICBERUZJTkVfT1Aob3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggODQxMWE3ZWY2NWE5YzZiZGNjMTZiMzY0ZWIyOGU0MTAxNmI1ODU4Ni4uNzcx
ZmQ5YjQwNjViZGQxNzIyYzBlNzJiODg3MjA4ZWM2MmYxZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCkBAIC00OTgsNiArNDk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Z2V0X2J5X2lkKEluc3RydWN0aW9uKik7CkBAIC01MzksNiArNTQwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19y
ZWdleHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlv
biopOwpAQCAtNjUzLDYgKzY1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9p
ZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3
RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0
aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1p
dFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwogICAgICAgICB2b2lkIGVtaXRMb2FkV2l0aFN0cnVj
dHVyZUNoZWNrKGludCBzY29wZSwgU3RydWN0dXJlKiogc3RydWN0dXJlU2xvdCk7CkBAIC03MjMs
NiArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKQnksIGludCwgR1BSUmVnLCBHUFJSZWcs
IEJ5VmFsSW5mbyopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VKc2MsIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0MsIGludCwgR1BSUmVnLCBKU0Nl
bGwqKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSnNjQ0osIGludCwgR1BSUmVnLCBKU0NlbGwqLCBHUFJSZWcpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBH
UFJSZWcsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBpbnQsIEdQUlJlZywgaW50MzJfdCk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggNWQ2
ODY5MDA4MWM5OTZkN2UzM2JmM2JkMjVkY2M1OGIwMzBmN2Q2Yy4uZmJhYjJjYzBmMzk3MjQ5NTZi
ZjU4NDkxYjNkZTc4M2E2ZmNkYzIzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKQEAgLTI3MSw2ICsyNzEsMTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmEKICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0
aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBpbnQgZHN0LCBH
UFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBHUFJSZWcgYXJnMikKK3sKKyAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJh
dGlvbiwgZHN0KTsKK30KKyAgICAKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgaW50IGRzdCwg
dm9pZCogcG9pbnRlcikKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihwb2ludGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAppbmRleCA1OThkNGVjOTljMWQxOGU2YzM5NjIxMTk3MjBhY2VhYzFlZTJmYTZkLi5jODNiY2M4
YzQ1ZGU2NjZmNzNjOWU5MTFmNTE0MjlmMzVlYjExMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIZWFwLmgi
CiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRl
ICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC02NzMs
NiArNjc0LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJl
Z1QwKTsKIH0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFk
ZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1p
dFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKK30KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtOTYyLDI2ICs5NzEsNDUgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVj
dGlvbik7Cit9CisgICAgCit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3Zt
LT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7
CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBvcGNvZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVu
Y19leHA7CisgICAgCiAgICAgSnVtcCBub3RVbmRlZmluZWRTY29wZTsKICAgICBpbnQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwg
cmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5v
dFVuZGVmaW5lZFNjb3BlID0gYnJhbmNoNjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdp
c3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxv
YWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fy
cm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2gzMihO
b3RFcXVhbCwgdGFnRm9yKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSk7CiAgICAgZW1pdFN0b3JlKGRzdCwganNVbmRl
ZmluZWQoKSk7CiAjZW5kaWYKLQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICBub3RVbmRl
ZmluZWRTY29wZS5saW5rKHRoaXMpOwotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhw
ciA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdU
MCwgZnVuY0V4cHIpOworICAgICAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
ID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMSk7Cisg
ICAgZWxzZQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3Qs
IHJlZ1QwLCBmdW5jdGlvbik7CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQotCisgICAgCit2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9u
KTsKK30KKyAgICAKIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCmluZGV4IDkxYzAwZTNmZDQ1ZTA5N2UzYmIxYzM3OWQ3YzkwM2YwZmQ2MjA5OWEuLmIzOWFl
MWQxYTMwNjgwMzQzZTlmZDlhNzIzMTQyOWI2ZTU0NDEwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5o
IgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCkBAIC05MjIsNiArOTIzLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdU
MCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
SlNTdGFjazo6Q2FsbGVlLCByZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fy
cm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3Jl
Q2VsbChkc3QsIHJlZ1QwKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgY2FsbGVlID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IGI1ZjllMzY5YTdlNTdiYWZmMDQ2ZDJhMzY1ZGJjMDI0Y2Rj
ZGI5M2IuLjRmZjBlM2QxNTBiNDI2MGVmOTRiMjFlM2NiYTBmMjMxMmZiNDM4YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDMsNiArNDMsNyBA
QAogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUg
IkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCkBAIC05NDIsNiArOTQzLDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihm
dW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMg
b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
Ym9vbCBpc0ludmFsaWRhdGVkKQoreworICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmlu
aGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CisgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rp
b25FeGVjdXRhYmxlKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAgICAgCisgICAgSlNBcnJvd0Z1bmN0
aW9uKiBhcnJvd0Z1bmN0aW9uICA9IGlzSW52YWxpZGF0ZWQKKyAgICAgICAgPyBKU0Fycm93RnVu
Y3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4
ZWN1dGFibGUsIHNjb3BlLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkKKyAgICAgICAgOiBK
U0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycm93
RnVuY3Rpb24pOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdG
dW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUs
IHRydWUpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCog
ZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0
dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCmluZGV4IDNkODNmNTkwZGNmOTE4MDNhMzQ0OGJhMDgzYjJmOTJiY2JlODRm
OWIuLmE2N2NhYWNiMzJmYjIxNThhOWMwNWU2YTUwOTYyMWIzYjgzZThlN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xMjIsNiArMTIyLDcgQEAgdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBQKShF
eGVjU3RhdGUqLCB2b2lkKiwgdm8KIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiAoKkpfSklUT3BlcmF0aW9uX0VQUykoRXhlY1N0YXRlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQykoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2Vs
bCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRUpzY0NKKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUp
OwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25f
RVNTKShFeGVjU3RhdGUqLCBzaXplX3QsIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU3NpQ0kpKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0
YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0lt
cGwqKTsKQEAgLTI4OCw2ICsyODksOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0FycmF5QnVmZmVyV2l0aFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJyYQogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmls
ZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6
ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2Vs
bCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
RXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlV2F0Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDJkNDY3N2M2NjU1N2JiY2M1ZTRkMTA5ZWY5YjAx
MzhkOWE4M2YxZWMuLmEyYTZiMmIxMWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fy
cm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiVk0uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCmluZGV4IDU1YjgxZWUwZjc4ZmE3YWQ5YTIwZGNkNDc2ODEyYjQxZjU2
ODVkN2YuLjJjZDlmNmViOGQ2ODM4Njg3MDk3YzRlY2NlNzkyMTU5MTUxMDFmMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5j
bHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE3MSw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgRXhlY1N0YXRlKiBfX3JjZl9leGVjID0gKGV4
ZWNDYWxsZWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJTlRfUkVU
VVJOX1RXTyhwYywgX19yY2ZfZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKLQorICAgIAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEw
MTMsMTIgKzEwMTQsMjQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5j
KQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBM
TElOVF9CRUdJTigpOworICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CiAgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUu
b3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgSlNG
dW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIHNjb3BlKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9u
RXhwcihwY1szXS51Lm9wZXJhbmQpOwogICAgIAotICAgIExMSU5UX1JFVFVSTihmdW5jKTsKKyAg
ICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkp
OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhw
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5U
X09QX0MoNCkuanNWYWx1ZSgpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUu
b3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKKyAgICAK
KyAgICBMTElOVF9SRVRVUk4oSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUs
IHNjb3BlLCB0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5k
bGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1
ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTEwOTYsNyArMTEwOSw3
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlCiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUt
PnNjb3BlVW5jaGVja2VkKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwogICAgIEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7Ci0gICAgCisKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDhjYzY5YTk2MDBiYmY5
ZDg1MzM5ZDYwOTU5NWY2N2M2OGQwNzY3MWIuLjNmMWRhYTgxMmI3MDJlMjNjNmFhZWY5ZmQ3YzA2
NzFlZTIwMjVjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCkBAIC05Nyw2ICs5Nyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfc3dpdGNoX2NoYXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVu
Y19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3df
ZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KaW5kZXggYzkxMDYxN2VkODM0Yjc0YzlmMmY4ZWU0YjI2ODdjOGI5Y2ZlM2M3Yy4uNzNm
YzU4ODQ0MmRkYzRiOWNmYTdiODhmMDA0Y2E4NjczZTQ5OWE0NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTE4Myw2
ICsxMTgzLDEwIEBAIF9sbGludF9vcF9uZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9v
cF9uZXdfYXJyb3dfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg1
KQogCiBfbGxpbnRfb3BfY2FsbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IGU5MGVjZWRmYTczMDk4MmZlZWY3MWVlYjBjZWE2NDM4MjM0YTY5MWMuLjdlZjZiODdj
MTcwYWQwODNiMWY1MjlkYTg4MzZjMDBjZGE2NGI0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0y
MzczLDMgKzIzNzMsMTIgQEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5
cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25f
dGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBd
LCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRh
ZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCmluZGV4IGQ5NDU1Zjc1YzdiNjY0MmZiOGM4NzIzZmMxNTJhMzc5MDkxMDNiNWIuLmQy
MTUyYTJmMjc3YWRlNTg3OTc2YTFjM2YxMjAyMzcyOWIzOGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0y
MjI2LDMgKzIyMjYsMTEgQEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5
cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25f
dGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCisg
ICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDdiNTg3NzMwYTZmMDM1NDQwZGI5MGQ5YzQy
NjgwYWQ1NzhiOTRhNjcuLjgwNmRiNTIzMDNkNWFkM2E3MTg4MTI5Zjg4YmQ3NjRjNmI1MGVlYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjEsMTkg
KzM2MSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1v
ZGUpCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFk
YXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExv
Y2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAg
ICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9k
ZSk7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1l
dGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZv
KQogICAgIHsKKyAgICAgICAgdXNlc1RoaXMoKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2Ug
PSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBm
dW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbklu
Zm8uYm9keVN0YXJ0Q29sdW1uKTsKLQotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5l
dyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5h
bWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOworICAgICAgICBBcnJvd0Z1bmNFeHByTm9k
ZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcnJvd0Z1bmNFeHByTm9kZShsb2NhdGlv
biwgKmZ1bmN0aW9uSW5mby5uYW1lLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAg
ICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5j
dGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBhYmI3MmE3NGUxMjg4
NDhlYThiNDNmZDg2MzY5NzRjYjk5N2MzN2RiLi5iZGMxYmVlNzc4NDQ4NzJhYTYyNGQ0NDNiY2Jh
MTk2OTNhZGJkMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaApAQCAtODkwLDEzICs4OTAsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAg
ICAKKyAgICBpbmxpbmUgQmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX21ldGFkYXRhKG1f
bWV0YWRhdGEpCiAgICAgewogICAgICAgICBtX21ldGFkYXRhLT5maW5pc2hQYXJzaW5nKHNvdXJj
ZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lvbik7CiAgICAgfQogCisgICAgaW5saW5lIEZ1bmNF
eHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9j
YXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwogICAgIGlu
bGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1f
bWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKQEAgLTkwNCw2
ICs5MTAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBh
cnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgfQogCisgICAg
aW5saW5lIEFycm93RnVuY0V4cHJOb2RlOjpBcnJvd0Z1bmNFeHByTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAg
OiBCYXNlRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBpZGVudCwgbV9tZXRhZGF0YSwgc291cmNlKQor
ICAgIHsKKyAgICB9CisKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKICAgICBpbmxpbmUg
Q2xhc3NEZWNsTm9kZTo6Q2xhc3NEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogY2xhc3NEZWNsYXJhdGlvbikKICAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRl
eCBjZjRmZTQ1MGE5MjQ5NTA0ZjMwYmE4NWEyNjRlNjdiYWE5YTU1Yzk2Li4xOGY4NDU1MzMwNWM0
YTBjMjFjNzMzODgzOWMyOWYyM2M3NGRlOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5j
dGlvbk1ldGFkYXRhTm9kZSgKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlv
biwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJz
U3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9k
ZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQogICAg
ICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENv
bHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNjMsNiArMTYzLDcg
QEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAs
IG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3Ry
aWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY29uc3RydWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fy
cm93RnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAppbmRleCAxZDZiMDNkNzc2NjI5N2FlMTc1OTNiYmE5YWVjNTYwOTMyOTMwYzJk
Li44NzM2NjhlYzM3YjQyN2I5MjA2NDlkZTMwNjgzODFlMmNkOGExNTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjUsNiArMTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2Rl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dG
dW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNDb21tYU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xODA5LDcgKzE4
MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAg
ICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwg
aW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAg
ICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgICAgICAg
ICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJy
b3dGdW5jdGlvbik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNv
ZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM1
LDYgKzE4MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0K
ICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0K
IAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RM
aW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIHsKQEAg
LTE4NjAsNiArMTg2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAx
OwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25O
b2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CkBAIC0xODg5LDE4ICsxODkyLDM1IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCi0g
ICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFz
cyBCYXNlRnVuY0V4cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAg
ICAgIEJhc2VGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAg
ICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7
IH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0
YWRhdGE7CisgICAgfTsKKworCisgICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VG
dW5jRXhwck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSos
IGNvbnN0IFNvdXJjZUNvZGUmKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgfTsKIAotICAgICAgICBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICBjbGFzcyBBcnJvd0Z1bmNFeHByTm9kZSA6IHB1
YmxpYyBCYXNlRnVuY0V4cHJOb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFycm93RnVuY0V4
cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJv
d0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9Owog
CiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggYWVlNzBiNmE3MzI5YmMxMWI1Y2U3M2Q1MzUyZDMxM2UyMmEyN2Jl
MS4uZjUwODE0ZTdiMTQyYWI1MzAwZDg0YTRiNzAxOWY5Yzk4NGUyYjE4NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTU0NiwxMSArMTU0NiwxMiBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUg
Ym9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKQogeworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3Rh
bmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBib2R5VHlwZTsKICAgICBpZiAoYm9keVR5cGUgPT0g
U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB8fCBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9k
eUJsb2NrKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0Up
KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24s
IHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwg
Y29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTYyLDcgKzE1NjMsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25CbwogICAgIGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VF
bGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBT
dGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVu
Y3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAg
ICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBz
dGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBh
cmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50
LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNzM3LDcgKzE3
MzgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgIH0KICAgICAKICAgICBib29sIGlz
Q2xhc3NDb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmU7Ci0KKyAgICAKICAgICBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1
bW47CiAgICAgCiAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHks
IHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVu
ZCBvZiB0aGUgZnVuY3Rpb24uCkBAIC0xNzU2LDExICsxNzU3LDEzIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8o
VHJlZUJ1aWxkCiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIG1fdG9rZW4u
bV9kYXRhLmxpbmVTdGFydE9mZnNldCA6CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9m
ZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7
Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gcGFyc2VUeXBlID09
IEFycm93RnVuY3Rpb25QYXJzZVR5cGU7CisgICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8u
Ym9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0
TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5
RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmlj
dE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUp
OworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBj
YWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICAg
ICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNo
ZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxk
ZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0xNzc0LDcgKzE3NzcsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25JbmZvKFRyZWVCdWlsZAogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4u
bV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hl
ZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0gICAgICAgIGlmIChwYXJzZVR5cGUgPT0gQXJy
b3dGdW5jdGlvblBhcnNlVHlwZSkKKyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKICAgICAg
ICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Np
b24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9j
azsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJk
RnVuY3Rpb25Cb2R5QmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCmluZGV4IDA3NjBjMTllYjE2MzZkYjIxYTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcu
LmRjNTYxZjliMWE2ZGEzNjQzYjgyNzJmZTdiMTJlMjE1ZTQ0ZjQyYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAg
cHVibGljOgogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9u
VHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQog
I2VuZGlmCiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsg
cmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBi
b29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJz
ZU1vZGUpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsg
cmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50
LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNS
ZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
aW5kZXggMGFiMTY3MjExNjgxOTRjMWE2MDI4OWViODU2ZTk4YzBjZmExN2I3OS4uOWRjNjk0ZjI3
YTQ1ODczYjJhMjE2N2EzNjk2MzVkM2U1OTQ1YWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTIzNiw4ICsyMzYsNyBAQCBSZWZQdHI8Q29k
ZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgRGVidWdnZXJN
b2RlIGRlYnVnZ2VyTW9kZSA9IGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSA/IERlYnVnZ2Vy
T24gOiBEZWJ1Z2dlck9mZjsKICAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFs
T2JqZWN0LT5oYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwogICAgIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0KLSAgICAgICAgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcigKLSAgICAgICAgICAg
ICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBlcnJvcik7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVC
bG9ja0Zvcigqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHBy
b2ZpbGVyTW9kZSwgZXJyb3IsIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKICAgICBy
ZWNvcmRQYXJzZShleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCks
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBzdGFydENvbHVtbigpLCBlbmRDb2x1bW4oKSk7IAog
ICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0tPnRo
cm93RXhjZXB0aW9uKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CmluZGV4IGJjZTI0MjhjYmMxMDFkZGE2Y2IxMDFkNzBiZjAyN2Y3ZTBlYTNkZjAuLmNmMmJkZTg4
YzVhNmU5MTY3NjAzNmVlMjdkNzQ0Zjc2NDUzOWNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ3NCw3ICs0NzQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2
YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAKICAg
ICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9j
ay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMo
KSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCk7IH0KQEAgLTUzMCw3ICs1MzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgp
OwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVl
ZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MzMsNiArNjMzLDcgQEAgcHVibGljOgogICAg
IEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAg
ICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9CisgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1
bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9u
KCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgp
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTUxYzI2MGUxNmEyMGUyYjg0MDlhZWJiOWEyZTU5ZGI5YjNkZjQ4NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5j
cHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbGVrc2FuZHIg
U2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBcnJv
d0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhl
bHBlcnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5j
bHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Fycm93
RnVuY3Rpb246OnNfaW5mbyA9IHsgIkFycm93RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQXJyb3dGdW5jdGlvbikgfTsKKwordm9pZCBKU0Fycm93RnVu
Y3Rpb246OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTQXJyb3dG
dW5jdGlvbio+KGNlbGwpLT5KU0Fycm93RnVuY3Rpb246On5KU0Fycm93RnVuY3Rpb24oKTsKK30K
KworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRU
aGlzKQoreworICAgIEpTQXJyb3dGdW5jdGlvbiogcmVzdWx0ID0gY3JlYXRlSW1wbCh2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVu
Y3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIHJlc3VsdCwgIkFsbG9jYXRpbmcgYW4gYXJyb3cgZnVu
Y3Rpb24iKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0Fycm93RnVuY3Rpb246OkpTQXJy
b3dGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKQor
ICAgICwgbV9ib3VuZFRoaXModm0sIHRoaXMsIGJvdW5kVGhpcykKK3sKK30KKworSlNBcnJvd0Z1
bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKK3sKKyAgICBBU1NFUlQoZXhlY3V0YWJsZS0+
c2luZ2xldG9uRnVuY3Rpb24oKS0+aGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgIHJldHVybiBj
cmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOworfQorCit2b2lkIEpTQXJy
b3dGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTQXJyb3dGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fycm93
RnVuY3Rpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7Cit9CisK
K0NvbnN0cnVjdFR5cGUgSlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmKQoreworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Fycm93RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyb3dGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNTZmNjhlZmVlZGQ4MjMxYTM1YjJmYzI0OWZk
ODFhYzk3ZjViMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Fycm93RnVuY3Rpb24uaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNBcnJvd0Z1
bmN0aW9uX2gKKyNkZWZpbmUgSlNBcnJvd0Z1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAg
ICAKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
Y2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKyAgICAKK2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6
IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShE
RkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVu
ZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOwor
cHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTQXJy
b3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpT
VmFsdWUpOworICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
KiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIAor
ICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFj
aXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0Fycm93RnVuY3Rpb24pOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRo
aXMpCisgICAgeworICAgICAgICBKU0Fycm93RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJvd0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0
aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1
bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBmdW5jdGlvbi0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CisgICAgfQorICAg
IAorICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYpOworCisgICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5k
VGhpcy5nZXQoKTsgfQorICAgIAorICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisgICAgCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qg
b2Zmc2V0T2ZUaGlzVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU0Fycm93RnVuY3Rpb24sIG1fYm91bmRUaGlzKTsKKyAgICB9CisgICAgCisgICAgY29uc3Qg
c3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisK
K3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CisgICAgICAgIAorcHJpdmF0ZToKKyAgICBKU0Fycm93RnVuY3Rpb24oVk0mLCBG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgCisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gbV9ib3VuZFRoaXM7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBKU0Fycm93RnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCmluZGV4IDBiODdkNzVjOTE0NTBjNWFmMWFhZWQyN2E2MWE3NDhlZjgwZjA5M2Uu
LjkyODM1MGUyNDc4YzQ1ZjdiZjdlOGFhODRjOWVjM2E0ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUp
OwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZjZjNmQ1OGVjNmU1YzEx
NjRjYjI3ZmE1ZTQxNjE4YjRiODE0MmYwMi4uZjA1OTU4NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNi
NjQ0YTg4NDQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uSW5saW5lcy5oCkBAIC00NCw2ICs0NCwxMyBAQCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNG
dW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSog
cwogICAgICwgbV9yYXJlRGF0YSgpCiB7CiB9CisgICAgCitpbmxpbmUgSlNGdW5jdGlvbjo6SlNG
dW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSog
c2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVj
dHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkKKyAgICAsIG1f
cmFyZURhdGEoKQoreworfQogCiBpbmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9u
Ojpqc0V4ZWN1dGFibGUoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGNlZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAw
NDQxN2MyMjlhZDA0MjMuLmRhMWFjMjVhYWIwMDg2MmNkNTM3MzBmOWE1YWQxMjVhMmRjMGZmMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNC
b3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmluaXQoVk0mIHZtKQogICAgIGV4ZWMtPnNldENhbGxlZShtX2dsb2JhbENhbGxlZS5nZXQo
KSk7CiAKICAgICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7Cisg
ICAgbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsK
ICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rp
b246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkp
OwogICAgIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9m
dW5jdGlvbk5hbWVPZmZzZXQpKTsKICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTc5NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyb3dGdW5jdGlvblN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1
cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggOTk4NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMw
NTVlOWJhZTMwYmI3M2ZkOTAxNWJjMDAzODM2M2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgcHJvdGVj
dGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGVlU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZz
ZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9w
cml2YXRlTmFtZVN0cnVjdHVyZTsKQEAgLTQ2Miw2ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgU3Ry
dWN0dXJlKiBjYWxsZWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUq
IG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1
ZS10ZHotZXJyb3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3Iu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzFlM2E2NmVhOTJmMDMwZGIzNzc5YTRjM2U0MDJlN2MxMThkMWQ4MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qcwpAQCAtMCwwICsxLDQ2IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBuID0gMTAwMDAwMDsK
KworZnVuY3Rpb24gc2hvdWxkVGhyb3dURFooZnVuYykgeworICAgIHZhciBoYXNUaHJvd24gPSBm
YWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgIGlmIChlLm5hbWUuaW5kZXhPZigiUmVmZXJlbmNlRXJyb3IiKSAhPT0gLTEpCisgICAgICAg
ICAgICBoYXNUaHJvd24gPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWhhc1Rocm93bikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJEaWQgbm90IHRocm93IFREWiBlcnJvciIpOworfQorCitmdW5j
dGlvbiBiYXIoZikgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgbGV0IHJlc3VsdCA9IDA7
CisgICAgdmFyIHNldCA9ICAoeCkgPT4geyByZXN1bHQgPSB4OyByZXR1cm4gdGR6UGVycGV0cmF0
b3I7IH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7
CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgICAgIHJldHVybiB0ZHpQZXJwZXRyYXRv
cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgdGR6UGVycGV0cmF0b3I7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7Citub0lubGluZShz
aG91bGRUaHJvd1REWik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFy
IGJvb2wgPSAhKGkgJSAxMDApOworICAgIGlmIChib29sKQorICAgICAgICBzaG91bGRUaHJvd1RE
WigoKT0+IHsgZm9vKGJvb2wpOyB9KTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGZvbyhib29sKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9u
LXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQt
dmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQxYmJlMTQwMjQxNGRiMjZjNmI3ZmQ0MDFmYjBlOWM2NWE0
YmE3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpz
CkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gYmFyKHNldCkg
eworICAgIHZhciByZXN1bHQgPSBzZXQoMCk7CisgICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHJlc3VsdDsKK30KKworZnVuY3Rp
b24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgaW1VbmRlZmluZWQ7Cisg
ICAgdmFyIGJhejsKKyAgICB2YXIgc2V0ID0gICh4KSA9PiB7CisgICAgICAgIHJlc3VsdCA9IHg7
CisgICAgICAgIGlmIChiYXogIT09IDUwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
dmFsdWU6ICIgKyBiYXo7CisgICAgICAgIHJldHVybiBpbVVuZGVmaW5lZDsKKyAgICB9OworICAg
IGJheiA9IDUwOworICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYg
KGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9Jbmxp
bmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0
ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1v
c3JleGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNDM3YWY3YjJjMmFk
MzQ1ZTI2YzIwMzc3ODkwZGY1ZjMxZmFmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9z
cmV4aXQuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBi
YXIoKSB7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2
YXIgc2V0ID0gKHgpID0+IHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9T
UkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitu
b0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBp
KyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQg
IT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWFjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZhNzllYzll
YWE2NWM1NDE5MzBiOTA0ODI2ZTdhMjNhMTNmYjJlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNp
bmsuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKworZnVuY3Rpb24gYmFy
KGYpIHsgZigxMCk7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsK
KyAgICB2YXIgc2V0ID0geCA9PiB7IHJlc3VsdCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAg
ICBiYXIoc2V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93
ICJFcnJvcjogYmFkOiAiICsgcmVzdWx0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAx
MDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ib3VuZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ib3VuZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjAzMjA4
OGFiZjI2ZGFlMmFlNzFhMmFjNGMwNWQ0ZjA3NzU1ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCkBA
IC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVk
LCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVz
c2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVh
bCArICInIjsKKyAgfQorfTsKKwordmFyIGQgPSB7CisgIHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0
aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLnggKyB6OyB9Cit9OworCitub0lubGluZShkLnkpOwor
Cit2YXIgZSA9IHsgeCA6ICJiYXoiIH07CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7
CisgIHRlc3RDYXNlKGQueSgpLmJpbmQoZSwgImxleSIpKCksICJiYXJsZXkiLCAiRXJyb3I6IGZ1
bmN0aW9uIGJpbmQgc2hvdWxkbid0IGNoYW5nZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93
IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NzdlMGFkOWM4M2Fj
NTNhN2Y2ZDM1MTk2MjMyMTRjMWU5ZmM2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsx
LDE4IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2Fn
ZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAi
LiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7
CisgIH0KK307CisKK3ZhciBkID0geworICB4IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigpIHsg
cmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4
IDogImJhciIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwO2krKyl7CisgICAgdGVzdENhc2Uo
ZC55KCkuY2FsbChlKSwgImZvbyIsICJFcnJvcjogZnVuY3Rpb24gY2FsbCBzaG91bG4ndCBjaGFu
Z2UgdGhlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICB0ZXN0
Q2FzZShkLnkoKS5hcHBseShlKSwgImZvbyIsICJFcnJvcjogZnVuY3Rpb24gYXBwbHkgc2hvdWxu
J3QgY2hhbmdlIHRoZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTViZWI1NTdkNzk0OWJj
NmIyYzc4YWI0NjU5ZWE4YzJhYzYzZGU2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAt
MCwwICsxLDIyIEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgIH0KK307CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisK
K25vSW5saW5lKHNpbXBsZUFycm93RnVuY3Rpb24pOworCit2YXIgZXJyb3JPbkNyZWF0ZSA9IGZh
bHNlOworCitmb3IgKGk9MDtpPDEwMDAwO2krKykgeworICAgdHJ5IHsKKyAgICAgICB2YXIgZmMg
PSBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpOworICAgfQorICAgY2F0Y2ggKGUpIHsKKyAgICAg
ZXJyb3JPbkNyZWF0ZSA9IHRydWU7CisgICB9CisKKyAgICB0ZXN0Q2FzZShlcnJvck9uQ3JlYXRl
LCB0cnVlLCAiRXJyb3I6IE5vIGV4Y2VwdGlvbiBkdXJpbmcgcnVuIG5ldyBBcnJvd0Z1bmN0aW9u
Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRjZmFiMjRjOTFiYzU3Yzk1ODc2MzJkZmVjOWE0YzkzNzk4ZTIxNWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwpAQCAtMCwwICsxLDE5IEBACit2YXIgdGVzdENhc2Ug
PSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVj
dGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9u
IERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+
IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgp
ID0+IHRoaXMubmFtZSkoKSIpOworfQorCitub0lubGluZShEb2cpCisKK2ZvciAodmFyIGk9MDtp
PDEwMDAwOyBpKyspIHsKKyAgdmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKyAgdGVzdENhc2UoZC5n
ZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGlu
c2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lSGFy
ZCgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUg
b2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExN2RiMzAzY2RmZTNkMTVkYTQ1YzgxNjRl
NDhkMDNhNjdlYjkyYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpAQCAtMCww
ICsxLDM5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVz
c2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2Ug
KyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAi
JyI7CisgIH0KK307CisKK3ZhciBmdW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgewor
ICB0aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0
aW9uQ29uc3RydWN0b3IoKTsKKwordGVzdENhc2UoaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5j
ZSwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKwordmFyIG9iaiA9IHsKKyAgbWV0aG9kOiBmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuICgpID0+IHRoaXM7CisgIH0KK307CisKK25vSW5saW5lKG9iai5t
ZXRob2QpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uo
b2JqLm1ldGhvZCgpKCkgPT09IG9iaiwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30KKwordmFyIGZh
a2UgPSB7c3RlYWw6IG9iai5tZXRob2QoKX07Citub0lubGluZShmYWtlLnN0ZWFsKTsKKworZm9y
ICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKGZha2Uuc3RlYWwoKSA9
PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQorCit2YXIgcmVhbCA9IHtib3Jyb3c6IG9i
ai5tZXRob2R9Oworbm9JbmxpbmUocmVhbC5ib3Jyb3cpOworCitmb3IgKHZhciBpPTA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UocmVhbC5ib3Jyb3coKSgpID09PSByZWFsLCB0cnVl
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTMuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMDE5MDg2ZDU4NDc5YzRiZDRmZTBmNTI3YjNhN2JiODkzOWMw
OTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTMuanMKQEAgLTAsMCArMSwyOCBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCisKK3ZhciBvYmogPSB7IG5hbWU6J29iaicsIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1
cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9fTsKKworZm9yICh2
YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyAr
IGkudG9TdHJpbmcoKSksICdvYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0
aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24g
IzEiKTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDEg
PSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0
MSwgJ29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxl
eGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitv
YmoubmFtZT0nbmV3T2JqJzsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVz
dENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICduZXdPYmotbmFtZS10
ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KKworZm9yICh2YXIgaT0wOyBp
PDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDIgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50
b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0MiwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50
b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9m
IHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtNC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWJkMzYzZTRlNDZiMDJkMmYxOWJiZTM4NTAy
ZjUyODIzM2E5ZjEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMKQEAgLTAsMCAr
MSwyNiBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsg
Ii4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIici
OworICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIG5hbWU6J29iaicsCisgIGludGVybmFsT2Jq
ZWN0OiB7CisgICAgbmFtZSAgOidpbnRlcm5hbE9iamVjdCcsCisgICAgbWV0aG9kOiBmdW5jdGlv
biAoKSB7IHJldHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH0K
KyAgfQorfTsKKworbm9JbmxpbmUob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCk7CisKK2ZvciAo
dmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0
Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdpbnRlcm5hbE9iamVjdC1uYW1lLXRl
c3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitvYmouaW50ZXJuYWxPYmpl
Y3QubmFtZT0nbmV3SW50ZXJuYWxPYmplY3QnOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkr
KykgeworICAgIHRlc3RDYXNlKG9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgndGVzdCcgKyBp
LnRvU3RyaW5nKCkpLCAnbmV3SW50ZXJuYWxPYmplY3QtbmFtZS10ZXN0JyArIGkudG9TdHJpbmco
KSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzUiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10
aGlzLTUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODc1NDk0Y2U2YjY2ZGIwYTdlYjQzZGNjODNlYzFlYWNlNjI4
NzU0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01LmpzCkBAIC0wLDAgKzEsNDggQEAK
K3ZhciBzb3J0ZWRWYWx1ZXM7CisKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4
cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhy
b3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiAr
IGFjdHVhbCArICInIjsKKyAgfQorfTsKKworCit2YXIgb2JqID0geworICBhcnI6IFsxLCA0LCA2
LCAzLCA3LCAwXSwKKyAgYnViYmxlU29ydDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9
PiB7CisgICAgICB2YXIgdG1wOworICAgICAgdmFyIGFyID0gdGhpcy5hcnIuc2xpY2UoKTsKKyAg
ICAgIHZhciBfbGVuZ3RoID0gYXIubGVuZ3RoCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9s
ZW5ndGg7IGkrKykgeworICAgICAgICBmb3IgKHZhciBqID0gaTsgaiA+IDA7IGotLSkgeworICAg
ICAgICAgIGlmICgoYXJbal0gLSBhcltqIC0gMV0pIDwgMCkgeworICAgICAgICAgICAgdG1wID0g
YXJbal07CisgICAgICAgICAgICBhcltqXSA9IGFyW2ogLSAxXTsKKyAgICAgICAgICAgIGFyW2og
LSAxXSA9IHRtcDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVy
biBhcjsKKyAgICB9CisgIH0KK307CisKK25vSW5saW5lKG9iai5idWJibGVTb3J0KTsKKworZm9y
ICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDMs
IDcsIDBdOworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgsIDcsICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICMxIik7CisKKyAgICB2YXIgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOwor
ICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1swXSwgMCwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhp
Y2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzYiKTsKKyAgICB0ZXN0
Q2FzZShzb3J0ZWRWYWx1ZXNbNl0sIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJp
bmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM3Iik7CisKKyAgICBvYmouYXJyID0g
WzEsIDIsIDQsIDYsIDUsIDgsIDIxLCAxOSwgMF07CisKKyAgICB0ZXN0Q2FzZShvYmouYnViYmxl
U29ydCgpKCkubGVuZ3RoLCA5LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQg
aW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjOCIpOworCisgICAgc29ydGVkVmFsdWVzID0g
b2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1sxXSwgMSwgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzEyIik7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzhdLCAyMSwgIkVycm9yOiB0
aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24g
IzEzIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM0MTdiYzdjOGYxODA1MzU4YmRiYTg1YjJjZWY2YTY5YjVmNDFlY2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgdGVzdENh
c2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4
cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0
aW9uIERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgp
ID0+ICB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmdMZXZlbDEgPSAoKSA9PiAoKSA9
PiB0aGlzLm5hbWU7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmdMZXZlbDIgPSAoKSA9PiAoKSA9PiAo
KSA9PiB0aGlzLm5hbWU7Cit9CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CisKK25vSW5saW5l
KGQuZ2V0TmFtZSgpKTsKK25vSW5saW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpKTsKK25v
SW5saW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDIoKSgpKCkpOworCitmb3IgKHZhciBpPTA7aTwx
MDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhp
cyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMx
Iik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpLCBkLm5hbWUsICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICMyIik7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDIoKSgpKCksIGQubmFt
ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzMiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9z
cmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFk
MTBhMzFkNjczMWFlNjk3NGQ2NjdlZDhkMjQ4NzBiNWQ1MzFmNjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMzQgQEAKK3ZhciBu
ID0gMTAwMDAwMDA7CisKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcK
K307CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciBy
ZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJy
b3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8
fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRl
eHQgb2YgYXJyb3cgZnVuY3Rpb24nOworICAgICAgcmVzdWx0ID0geDsKKyAgICB9CisgICAgaWYg
KGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAg
YmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvby5jYWxsKG5l
d0NvbnRleHQsICEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1h
Y3RpdmF0aW9uLXNpbmsuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YTQzMDYzN2M4NWJmOTQyMWFlOWM5N2UwZGQ3ZjZjZDEzNWM0Mzk5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAsMCArMSwzOCBAQAordmFyIG4gPSAxMDAw
MDAwMDsKKwordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKwor
ZnVuY3Rpb24gYmFyKGYpIHsKKyAgICBpZiAodGhpcyA9PSBuZXdDb250ZXh0KQorICAgICAgICB0
aHJvdyAnV3JvbmcgY29udGV4dCBvZiBuZXN0aW5nIGZ1bmN0aW9uJzsKKyAgICBmKDEwKTsKK30K
KworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0g
KHgpID0+IHsKKyAgICAgIHJlc3VsdCA9IHg7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5j
dGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMu
aWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBh
cnJvdyBmdW5jdGlvbic7CisgICAgfTsKKworICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQp
OworICAgICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwg
IShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8t
ZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NjllMDI3MTM5YzE2NjdlMTA2OWJhYmQyOTVhNmQ3ZmMwYjllNDE1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCww
ICsxLDM3IEBACit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9Owor
CitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0gMzsgfQorbm9JbmxpbmUoY2FsbCk7CisKKy8vIFNo
b3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4
dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBmID0gKCkgPT4geworICAgICAgLy8g
Q2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0g
bmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cg
J1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgIH07CisgICAgaWYgKHAp
IHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlm
IChxKSB7CisgICAgICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGY7CisgICAgfQorICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsuY2Fs
bChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQor
CisvLyBBdCB0aGlzIHBvaW50LCB0aGUgYXJyb3cgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVk
IGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJs
eSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK2lmIChm
LnggIT0gMykKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAi
ICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNp
bmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmZjYjNmYTViMWU3N2ZiNjI4NjE4MGIzMzJh
M2JlN2RlMjhmNjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMK
QEAgLTAsMCArMSwzNiBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0
JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhp
cyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+
IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAg
IGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAg
ICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKyAgICAg
IHJldHVybiB4OworICAgIH07CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJu
IGc7IH0KKyAgICByZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlv
biBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQg
IT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJv
dyBmdW5jdGlvbiAjMic7CisgICAgICByZXR1cm4geDsKKyAgICB9OworfQorbm9JbmxpbmUoc2lu
ayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2lu
ay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIGZhbHNlKTsvLyBTdWJzdGl0dXRlIHRoaXMKKyAgICB2
YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJy
b3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2lu
dCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8g
Q2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0
Cit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LHRydWUsIHRydWUpOy8vIFN1YnN0aXR1dGUg
dGhpcwordmFyIHJlc3VsdCA9IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAi
RXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMt
c2lua2luZy1wdXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1N2VhMDc2
MzVhNDEzMWNkMjMxMWQ0NTA3MzVmNTdjMWRkOTU4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlz
LXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsNDUgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBp
ZCA6ICduZXctY29udGV4dCcKK307CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0
aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgewor
ICAgIHZhciBnID0geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbiAjMSc7CisKKyAgICAgIHJldHVybiB4OworICAgIH07CisgICAgaWYgKHApIHsgaWYgKHEp
IGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB7CisgICAgICAvLyBD
aGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBu
ZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAn
V3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMic7CisKKyAgICAgIHJldHVybiB4Owor
ICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Ly8g
dXNlIGNhbGwgdG8gc3Vic3RpdHV0ZSBjb250ZXh0CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOwor
ICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQg
Z290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlv
biBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9j
YXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsuY2Fs
bChuZXdDb250ZXh0LCB0cnVlLCBmYWxzZSk7Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVz
dWx0ICE9IDEyKQorICAgIC8vIFRoaXMgc2hvdWxkbid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUg
ZWl0aGVyIGNvcnJlY3Qgb3IgY29tcGxldGVseSBjcmFzaAorICAgIHRocm93ICJFcnJvcjogZXhw
ZWN0ZWQgMTIgYnV0IGdvdCAiICsgcmVzdWx0OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0
aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0g
c2luay5jYWxsKG5ld0NvbnRleHQsIHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7
CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQy
IGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRjZTBj
NjU4ZDNhMmY3OTIyOWRmNGY4OTJjY2RhMTUxM2M5NGU1OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMK
QEAgLTAsMCArMSwxNyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBt
ZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0
dWFsICsgIiciOworICB9Cit9OworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9
OworCitub0lubGluZShzaW1wbGVBcnJvd0Z1bmN0aW9uKTsKKworZm9yICh2YXIgaT0wO2k8MTAw
MDA7aSsrKSB7CisgICB0ZXN0Q2FzZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dG
dW5jdGlvbiksIEZ1bmN0aW9uLnByb3RvdHlwZSwgIkVycm9yOiBOb3QgY29ycmVjdCBnZXRQcm90
b3R5cGVPZiB2YWx1ZSBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxl
QXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlLCAiRXJyb3I6IE5vdCBjb3Jy
ZWN0IHJlc3VsdCBmb3IgaW5zdGFuY2VvZiBtZXRob2QgZm9yIGFycm93IGZ1bmN0aW9uIik7CisK
KyAgIHRlc3RDYXNlKHNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24s
IHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBjb25zdHJ1Y3RvciBtZXRob2Qg
b2YgYXJyb3cgZnVuY3RpbyAgIG4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wN2ExZjBhNDljYjE2ODYzYzU5MjEzNjFmMGFkYjFlMTRlYzliNjVhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXJ1bi0xMC0xLmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7
CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7Cisg
ICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOwor
ICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIg
b2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXRO
YW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVz
dWx0OworfQorCit0ZXN0Q2FzZShydW4oMSksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBl
eGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gb25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCks
IHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24g
MTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRjZGIzYzcw
YTFiMjdjM2RiYjUyMzgwOTU1ZjUzNTNkNzY3NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCkBA
IC0wLDAgKzEsMjUgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVk
LCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVz
c2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVh
bCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQg
PSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1
bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXRO
YW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1lIik7OworICAgIH07CisKKworICAgIHZhciBvYmog
PSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUo
KSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7
Cit9CisKK3Rlc3RDYXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9m
IGFycm93IGZ1bmN0aW9uIG9uZSB0aW1lIik7Cit0ZXN0Q2FzZShydW4oMTApLCB0cnVlLCAiRXJy
b3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1y
dW4tMTAwMDAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1ydW4tMTAwMDAtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTVmNmJjODZiZDMxNDUxYjAxY2Ey
N2QwYjk3MjBiNTdlOGQ2MDUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzCkBAIC0wLDAgKzEs
MjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOwor
ICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChu
YW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkg
PT4gdGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBp
KTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9
IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4o
MTAwMDApLCB0cnVlLCAiRXJyb3I6IEVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1
bmN0aW9uIDEwMDAwIHRpbWVzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGM0MjcxZjRhMzE1OTE2MjVhMGJkM2Q3NDRkMjUxMjYzMzMwMmU0MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1ydW4tMTAwMDAtMi5qcwpAQCAtMCwwICsxLDIzIEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlv
biAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIics
IGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3Vu
dCkgeworICB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgZm9yICh2YXIgaT0wOyBpPGNvdW50OyBpKysp
IHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5h
bWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAg
fTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFt
ZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9
CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJv
cjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMjg2MmM2MjhlM2IyY2EzMDQ0MTBiMWFlMjI2OTQ3MTgwNTFkZWMx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMjgg
QEAKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVu
Y3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBmID0gKCkgPT4geyB9OworICAgIGlmIChwKSB7
CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9jYXRpb24gb2YgZgorICAgICAgICBpZiAo
cSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
OworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsKK30KK25vSW5saW5lKHNpbmspOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBzaW5rKHRydWUs
IGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0
ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQs
IHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENo
ZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAor
dmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJv
cjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1v
c3JleGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjdmM2NhM2JkZThkYTMwMTQwZmEx
NDk5NzNlMTdhYWE4ZDkxMDVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCww
ICsxLDIxIEBACitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHg7Cisg
ICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9
PiB4OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgeworICAgIHZhciBmID0gc2luayh0cnVlLCBmYWxzZSk7CisgICAgdmFyIHJlc3VsdCA9IGYo
NDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0
MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlv
biBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhl
IGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5r
KHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAg
ICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5r
aW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1zaW5raW5nLXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGI3MGJiOWFiYzIzMTQ4ZjYyN2VmYzYx
ODZiZTA1N2MzY2JiMjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsMjgg
QEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAo
cCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7
Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7
CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworICAgIHZhciByZXN1bHQgPSBmKDQyKTsK
KyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0
IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hv
dWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBUZXN0IHRoZSBhbGxvY2F0aW9u
IG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNlIGJyYW5jaAordmFyIGYgPSBzaW5rKHRydWUsIGZh
bHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhp
cyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21w
bGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyBy
ZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9u
ZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFy
IHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjog
aW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjg3NDkyMzk3MTk4M2RjZGEzNGMyNjkzOTIxMTdiMTc0OGU2N2I0YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi10ZHouanMKQEAgLTAsMCArMSwyNyBAQAordmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0g
Y2xhc3MgQiBleHRlbmRzIEEgeworICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIp
IHsKKyAgICBpZiAoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+
IHRoaXM7CisgICAgICBzdXBlcigpOworICAgIH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAg
IH0KKyAgfQorfTsKKwordmFyIGV4Y2VwdGlvbiA9IG51bGw7Citmb3IgKHZhciBpPTA7IGk8MTAw
MDA7IGkrKykgeworICB0cnkgeworICAgICAgIG5ldyBCKHRydWUpOworICB9IGNhdGNoIChlKSB7
CisgICAgICBleGNlcHRpb24gPSBlOworICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5j
ZUVycm9yKSkKKyAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVm
ZXJlbmNlIGVycm9yIjsKKyAgfQorCisgIGlmICghZXhjZXB0aW9uKQorICAgICAgdGhyb3cgIkV4
Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7
CisKKyAgdmFyIGUgPSBuZXcgQihmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NTNlYzBkZGQ1NTE0ZmFmNGQwZDAzYzllMDY1NzBhMGM4MmJlNjRlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXR5cGVvZi5qcwpAQCAtMCwwICsxLDI3IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0
dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewor
ICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3
YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3Zh
ciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKworbm9JbmxpbmUoYWYxKTsKK25vSW5saW5lKGFmMik7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICB0ZXN0Q2FzZSh0eXBlb2Yg
YWYxLCAiZnVuY3Rpb24iLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjIsICJmdW5jdGlvbiIsICJFcnJvcjog
Tm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKworLy9GaXhtZTog
U29tZSBidWcgaW4gaW5saW5pbmcgdHlwZW9mIHdpdGggZm9sbG93aW5nIHJ1biBwYXJhbWV0ZXJz
IGZ0bC1uby1jaml0LW5vLWlubGluZS12YWxpZGF0ZQorLy8gLS11c2VGVExKSVRcPXRydWUgLS1l
bmFibGVGdW5jdGlvbkRvdEFyZ3VtZW50c1w9dHJ1ZSAtLWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFs
c2UgLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMDAgIC0tdmFsaWRhdGVHcmFwaD10cnVl
IC0tbWF4aW11bUlubGluaW5nRGVwdGg9MQorLy8KKy8vIGZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkgIHsKKy8vICAgaWYgKHR5cGVvZiAoZnVuY3Rpb24gKCkge30pICE9PSAnZnVuY3Rp
b24nKQorLy8gICAgICAgdGhyb3cgJ1dyb25nIHR5cGUnOworLy8gfQorLy8gIHRlc3RDYXNlKHR5
cGVvZiAoKT0+e30sICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUg
YXJyb3cgZnVuY3Rpb24gIzMtIiArIGkpOworCisvLyAgdGVzdENhc2UodHlwZW9mICgoYikgPT4g
e2IgKyAxfSksICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzQiKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhOTBiOGYzYTFkOTVmYzQzYmRlZWJlMzQ1N2Nh
YTY0ZDFlNmI3YTAyLi5mMWQxYjhmMTUwMGFkY2NlOGI3M2M2ODg1YzgwNTg4M2M5NjcwNTEzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDgtMTIgIFNrYWNoa292IE9sZWtzYW5kciAgPGdz
a2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBm
dW5jdGlvbiBzeW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2Fs
IGJpbmQgb2YgdGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ0OTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWJpbmQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJy
b3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dm
dW5jdGlvbi1jYWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9u
LWNvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dm
dW5jdGlvbi1vdGhlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10
ZHotZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxs
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1j
YWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1i
aW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
YWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6IEFkZGVkLgorCiAyMDE1LTA4LTEzICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogUmVkdWNlIGZsYWtpbmVzcyBvZiBpbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFz
ZU5hbWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMmIzMjZjY2JiNGUxNGM2ODlkZDdkOTM4M2NjNWJjOTRmZjdmMDE0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0
aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGJpbmQKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCkuYmluZChlLCAnbGV5JykoKSBpcyAnYmFy
bGV5JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sIGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI5YWNiMmJj
OGZkNTA0YzY4ZjA0NDVhNmVhYzRhNmExNDU0YWJhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJp
bmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMwNzdmOTk3OWFjZjQ1ZTE2
Yjk5NjU3MmQxYWZkZWVkZDU5MTEyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMg
Zm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5n
IGludm9rZSBjYWxsJmFwcGx5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGQueSgpLmNhbGwoZSkgaXMgJ2ZvbycKK1BBU1MgZC55KCkuYXBwbHkoZSkgaXMgJ2ZvbycKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZDhhNDdlMzBiNmE4NzQ5
ZWM1YjdlNzgzYzZhOWVjMzEzMmQyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY3MDZmZmYxN2My
MTIzODUzNjQwYmIyYTRlYjE3ZDYzZTFhMzcyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbm8gY29uc3RydWN0b3IKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmV3IHNpbXBsZUFycm93RnVuY3Rpb24o
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3Rv
ciAoZXZhbHVhdGluZyAnbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKScpLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGMwYjlhOWNkZDRk
OGJkZmE2MjQxY2I2YmVmYmYwNGNjOTU4MzBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LWNvbnN0cnVjdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2I2NmZjMjg4Y2FjYmQ5YzkzN2M5NzFjMmJkNmI2OGU2NjRhOTQ4
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3RzIGZvciBFUzYg
YXJyb3cgZnVuY3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRoaXMKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZC5nZXROYW1lKCkgaXMgZC5uYW1lCitQQVNTIGQuZ2V0TmFtZUhh
cmQoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lTmVzdGluZygpKCkoKSBpcyBkLm5hbWUKK1BB
U1Mgb2JqLm1ldGhvZCgpKCdjb3JyZWN0JykgaXMgJ29iakNvZGUtbmFtZS1jb3JyZWN0JworUEFT
UyBvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3T2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQ
QVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnaW50ZXJu
YWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhv
ZCgpKCdjb3JyZWN0JykgaXMgJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCcKK1BBU1Mg
aW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSBpcyB0cnVlCitQQVNTIG93bmVyT2JqLm1ldGhv
ZCgpKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1MgZmFrZS5zdGVhbCgpID09PSBvd25lck9i
aiBpcyB0cnVlCitQQVNTIHJlYWwuYm9ycm93KCkoKSA9PT0gcmVhbCBpcyB0cnVlCitQQVNTIGFy
cm93RnVuY3Rpb24oJy10aGlzJykgaXMgInJpZ2h0LXRoaXMiCitQQVNTIGhvc3RPYmouZnVuYygn
LXRoaXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlYTIyYTc2ZmRmOGJmZjVlNzJl
NTFiNzc5NGIzZTM0N2QxNjQyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTkxNTJlNWUzN2M2OTE1ZjM4MjNlMjliMjBhOTRkZjUzZDA4YzAwMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5k
IHR5cGVvZiBvcGVyYXRvcnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
T2JqZWN0LmdldFByb3RvdHlwZU9mKHNpbXBsZUFycm93RnVuY3Rpb24pIGlzIEZ1bmN0aW9uLnBy
b3RvdHlwZQorUEFTUyBzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24gaXMg
dHJ1ZQorUEFTUyBzaW1wbGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3
ZjhiMDBlNDYwNTVlZTZmYWU1YzFlODI4OWVmZWUxZjExMDkwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1vdGhlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YWY2Y2Q4NjAw
ZTg4NDEyNzdjNDk0YTk4OTAyMjQ1MmVhNmFiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRkegorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBpc1JlZmVyZW5jZUVycm9yIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi10ZHouaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGVmMTcxY2I4MjBiZWIzY2I0YTdkM2ZjNDhl
NWM1M2ZjMTE5MjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi10ZHouaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBl
b2YtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZmIyY2U5NjRiZDAzMzIxYjgzMmNiODdiYmFlMGNhNTM0
OWMxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5
cGVvZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitQQVNTIHR5cGVvZiBhZjEgPT09ICdm
dW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgYWYyID09PSAnZnVuY3Rpb24nIGlzIHRydWUK
K1BBU1MgdHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9m
ICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi10eXBlb2YuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGFjYWFhMWE0ZTRkMGU0Y2IzZDA3NjVlMzcz
ZmVkYjc0MzgwZTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi10eXBlb2YuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJv
d2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJv
d2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYjU1MmY4MGY2NjFkZTNi
YWI1MjA5YzcyZGRjZjUwMjEwMDM0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorSlNSZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
YXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNkODQ1NGJmZjYxODJlNjFjYmVi
MGI5ZWUxMzNmZTg3MzExMmJmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxs
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44OTI0Yzg0Mjc2ZTcxMDg3Nzg2YzU5NDBhODIyYmNjNmY5N2MwNmQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1jYWxsLmpzCkBAIC0wLDAgKzEsMTUgQEAKK3ZhciBhZiA9IChhLCBiKSA9PiBhICsgYjsKKwor
bm9JbmxpbmUoYWYpOworCitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBhZihhLCBi
KTsKK30KKworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyAr
K2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5q
cyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTU3M2MzYjVlMGNhNzkxNzk0ZjI1MTY5YTkxY2I0YTdkYzliMjhjZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0
aW9uLWNhbGwuanMKQEAgLTAsMCArMSwxNSBAQAordmFyIGZlID0gZnVuY3Rpb24gKGEsIGIpIHsg
cmV0dXJuIGEgKyBiO30KKworbm9JbmxpbmUoZmUpOworCitmdW5jdGlvbiBiYXIoYSwgYikgewor
ICAgIHJldHVybiBmZShhLCBiKTsKK30KKworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIpOworICAg
IGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tYmluZC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWJpbmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUzZjA4ZTk2NmM3OTRjYmFmOWFkNGEzYWRiNGU5OTc5
YzAyYWMyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLWJpbmQuanMKQEAgLTAsMCArMSwxMiBAQAorZGVzY3JpcHRpb24oJ1Rlc3Rz
IGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmlu
ZyBpbnZva2UgYmluZCcpOworCit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rp
b24oKSB7IHJldHVybiB6ID0+IHRoaXMueCArIHo7IH0KK307CisKK3ZhciBlID0geyB4IDogImJh
eiIgfTsKKworc2hvdWxkQmUoImQueSgpLmJpbmQoZSwgJ2xleScpKCkiLCAiJ2JhcmxleSciKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzg4OGY5MTFi
ZjFjNDRkMzg5ZDBhM2QyMTg0NjgzNDg0YjZmOTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDEz
IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91
bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5Jyk7CisKK3ZhciBkID0g
eworICB4IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsg
fQorfTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitzaG91bGRCZSgnZC55KCkuY2FsbChl
KScsICInZm9vJyIpOworc2hvdWxkQmUoJ2QueSgpLmFwcGx5KGUpJywgIidmb28nIik7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZWZhZDA3Njg0N2JmZjQ5MjlmNzgwNzc2NWY5OTBiNzM3M2NkZjZkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3Iu
anMKQEAgLTAsMCArMSw3IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5j
dGlvbiBubyBjb25zdHJ1Y3RvcicpOworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+
IHt9OworCitzaG91bGRUaHJvdygnbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKScpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmU1NmExNTUzMGYzNGNjMzA4YWNlNmIwZmFhNGNmZTdjMWU5NzhjNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBm
b3IgRVM2IGFycm93IGZ1bmN0aW9uIGxleGljYWwgYmluZCBvZiB0aGlzJyk7CisKK2Z1bmN0aW9u
IERvZyhuYW1lKSB7CisgIHRoaXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+
IGV2YWwoInRoaXMubmFtZSIpOworICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgp
ID0+IHRoaXMubmFtZSkoKSIpOworICB0aGlzLmdldE5hbWVOZXN0aW5nID0gKCkgPT4gKCkgPT4g
KCkgPT4gdGhpcy5uYW1lOworfQorCit2YXIgZCA9IG5ldyBEb2coIk1heCIpOworc2hvdWxkQmUo
J2QuZ2V0TmFtZSgpJywgJ2QubmFtZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZUhhcmQoKScsICdk
Lm5hbWUnKTsKK3Nob3VsZEJlKCdkLmdldE5hbWVOZXN0aW5nKCkoKSgpJywgJ2QubmFtZScpOwor
Cit2YXIgb2JqID0geworICBuYW1lICAgOiAnb2JqQ29kZScsCisgIG1ldGhvZCA6IGZ1bmN0aW9u
ICgpIHsKKyAgICByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVl
OworICB9Cit9OworCitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ29iakNv
ZGUtbmFtZS1jb3JyZWN0JyIpOworb2JqLm5hbWU9J25ld09iakNvZGUnOworc2hvdWxkQmUoIm9i
ai5tZXRob2QoKSgnY29ycmVjdCcpIiwgIiduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCciKTsKKwor
dmFyIGRlZXBPYmogPSB7CisgIG5hbWUgOiAnd3JvbmdPYmpDb2RlJywKKyAgaW50ZXJuYWxPYmpl
Y3Q6IHsKKyAgICBuYW1lICA6J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9u
ICgpIHsgcmV0dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQor
ICB9Cit9Oworc2hvdWxkQmUoImRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJl
Y3QnKSIsICInaW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JyIpOworCitkZWVwT2JqLmludGVy
bmFsT2JqZWN0Lm5hbWUgPSAnbmV3SW50ZXJuYWxPYmplY3QnOworCitzaG91bGRCZSgiZGVlcE9i
ai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIiduZXdJbnRlcm5hbE9iamVj
dC1uYW1lLWNvcnJlY3QnIik7CisKK3ZhciBmdW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24g
KCkgeworICB0aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3
IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsKKworc2hvdWxkQmUoImluc3RhbmNlLmZ1bmMoKSA9PT0g
aW5zdGFuY2UiLCAidHJ1ZSIpOworCit2YXIgb3duZXJPYmogPSB7CisgIG1ldGhvZCA6IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworc2hvdWxkQmUoIm93
bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFyIGZha2UgPSB7
IHN0ZWFsIDogb3duZXJPYmoubWV0aG9kKCkgfTsKK3Nob3VsZEJlKCJmYWtlLnN0ZWFsKCkgPT09
IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFyIHJlYWwgPSB7IGJvcnJvdyA6IG93bmVyT2JqLm1l
dGhvZCB9Oworc2hvdWxkQmUoInJlYWwuYm9ycm93KCkoKSA9PT0gcmVhbCIsICJ0cnVlIik7CisK
K3ZhciBhcnJvd0Z1bmN0aW9uID0geyB4IDogInJpZ2h0IiwgZ2V0QXJyb3dGdW5jdGlvbiA6IGZ1
bmN0aW9uKCkgeyByZXR1cm4geiA9PiB0aGlzLnggKyB6OyB9fS5nZXRBcnJvd0Z1bmN0aW9uKCk7
Cit2YXIgaG9zdE9iaiA9IHsgeCA6ICJ3cm9uZyIsIGZ1bmMgOiBhcnJvd0Z1bmN0aW9uIH07CisK
K3Nob3VsZEJlKCJhcnJvd0Z1bmN0aW9uKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworc2hv
dWxkQmUoImhvc3RPYmouZnVuYygnLXRoaXMnKSIsICcicmlnaHQtdGhpcyInKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5OTMxYzNkZWJjYjUw
MjdhZDE0ZmQxNTQ3ZTVhYmEwMzhiNGIxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDEwIEBA
CisvLyBJbnNwaXJlZCBieSBtb3ppbGxhIHRlc3RzCitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVT
NiBhcnJvdyBmdW5jdGlvbiBpbnN0YW5jZW9mIGFuZCB0eXBlb2Ygb3BlcmF0b3JzJyk7CisKK3Zh
ciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZEJlKCJPYmplY3QuZ2V0
UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikiLCAiRnVuY3Rpb24ucHJvdG90eXBlIik7
CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRy
dWUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0
aW9uIiwgInRydWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWFmNThmYzY1MTNlZGFiZGUxZGQ2NTA3NDk2YWU4NjRiNjExZmZmOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpA
QCAtMCwwICsxLDI2IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlv
biB0ZXN0IHRkeicpOworCit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4
dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlm
IChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAg
ICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9
OworCit2YXIgaXNSZWZlcmVuY2VFcnJvciA9IGZhbHNlOwordHJ5IHsKKyAgICAgbmV3IEIodHJ1
ZSk7Cit9IGNhdGNoIChlKSB7CisgICAgaXNSZWZlcmVuY2VFcnJvciA9IGUgaW5zdGFuY2VvZiBS
ZWZlcmVuY2VFcnJvcjsKK30KKworc2hvdWxkQmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScp
OworCit2YXIgZSA9IG5ldyBCKGZhbHNlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi10eXBlb2YuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10
eXBlb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJhYTI2OTBmZGE4MmM2YTMyOGVhMGFiYzM1NWQyZDhiZTNk
NDhkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCwwICsxLDEyIEBACit2YXIgYWYxID0gKCkgPT4ge307
Cit2YXIgYWYyID0gKGEpID0+IHthICsgMX07CisKK3Nob3VsZEJlKCJ0eXBlb2YgYWYxID09PSAn
ZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjIgPT09ICdmdW5jdGlv
biciLCAidHJ1ZSIpOworCitzaG91bGRCZSgidHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rpb24n
IiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5cGVvZiAoKGIpID0+IHtiICsgMX0pPT09J2Z1bmN0
aW9uJyIsICJ0cnVlIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259162</attachid>
            <date>2015-08-17 11:01:12 -0700</date>
            <delta_ts>2015-08-18 04:47:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148055-20150817210107.patch</filename>
            <type>text/plain</type>
            <size>176618</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi45ZDQ4YzM4MDU5YTM1YTAx
NDE5Y2MwNWZlMDUzMDE2YjZiZjk5YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uODA3YmVjNThjYjg1NzFjYTAwYjYyOWMzMDM5NjRi
Yzc2YTI1OTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwg
YXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjIzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4LDYgKzIx
OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50
cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUq
KTsKQEAgLTIyMjEsNiArMjIzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVO
ZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3
RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDgw
MGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2
NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNj
b3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxl
TG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVO
ZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJ
bjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUzZGFm
MzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2
ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAg
ICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKyAg
ICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUp
OwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBp
bGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEz
Yi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAgICAg
ICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBzZXQgdGhl
aXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAgICAgICAg
IC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUw
M2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhw
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUz
YjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1
ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3MTguLjcx
MmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04
OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8o
U3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9s
OjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBT
eW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlv
bl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisg
ICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fy
cm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5j
dGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZp
bmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5
ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CkBA
IC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAgY2FzZSBU
b1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmlu
c2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNS
ZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhi
NC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2
LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpf
SklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnRQ
dHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUoaW50NjQs
IGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2ND
LCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAorICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGlu
dDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVu
Y3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFjcm8oSl9K
SVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50UHRyLCBp
bnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1bmN0aW9u
VHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4
NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAi
RlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJK
U0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKQEAgLTU5
Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21waWxlTG9h
ZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09
IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0Fy
cm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0
aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAgIAogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5k
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVlIGNhbGxS
ZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJs
ZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1
bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAgICA6IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rp
b24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAKLSAg
ICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAg
ICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAg
ICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyBhbGxv
Y2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFz
dC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5b3VuZy4K
LSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5j
dGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFi
bGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0gICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNG
dW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2Jq
ZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29wZSA6IG1f
aGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2lu
dGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9oZWFwcy5K
U0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxl
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICAgICBt
X291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRy
WmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAgICAgCiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVj
dCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBMVmFsdWUg
Y2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpLAotICAg
ICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7Cisg
ICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJhbWUsIHNj
b3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiB2
bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIo
ZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUxv
YWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25f
dGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQogICAgIHsK
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMz
ZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5
LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJs
ZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZh
bHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAgICAgICBp
c0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9IEpTVmFs
dWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAgICAgSlNG
dW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAgICAgIAor
ICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAgICAgICAg
ID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAgICAgICAg
ICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUxOWY4My4u
MGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1
YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2VmNTViMTIy
ZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5j
bHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07CisgICAg
Y2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5ODdjMzAz
YjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uMzAwM2U4ZTI2NmRhY2E4MzgxYTEzNmJmN2YzNjkwZDJj
Nzk1YTU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC0y
MDksNiArMjA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwog
ICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgewor
ICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmczKTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCiAgICAgewog
ICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCAwMzhmNWQ3ZGJjMDZhZjgxMGY3MWE3ZDQyNDBkN2ZmMmViYTQwZWI0Li5iYmM4NTIzZjVi
YjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfZW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZW50ZXIp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGUpCisgICAgICAgIERFRklORV9PUChvcF9s
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZXFfbnVsbCkKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29m
X2xpbmU6CkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVG
SU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQor
ICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAg
ICAgICBERUZJTkVfT1Aob3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODQxMWE3
ZWY2NWE5YzZiZGNjMTZiMzY0ZWIyOGU0MTAxNmI1ODU4Ni4uNzcxZmQ5YjQwNjViZGQxNzIyYzBl
NzJiODg3MjA4ZWM2MmYxZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTgsNiAr
NDk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9lcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVs
bChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0
aW9uKik7CkBAIC01MzksNiArNTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1
bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpAQCAtNjUzLDYgKzY1
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3Ry
dWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNs
b3dDYXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJv
b2wgaXNVbnNpZ25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGlu
dCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQg
ZGVwdGgpOwogICAgICAgICB2b2lkIGVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludCBzY29w
ZSwgU3RydWN0dXJlKiogc3RydWN0dXJlU2xvdCk7CkBAIC03MjMsNiArNzI2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpKQnksIGludCwgR1BSUmVnLCBHUFJSZWcsIEJ5VmFsSW5mbyopOwogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VK
c2MsIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUpzY0MsIGludCwgR1BSUmVnLCBKU0NlbGwqKTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0osIGlu
dCwgR1BSUmVnLCBKU0NlbGwqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBHUFJSZWcsIGludDMyX3QpOwog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9u
X0VKc2NaLCBpbnQsIEdQUlJlZywgaW50MzJfdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggNWQ2ODY5MDA4MWM5OTZkN2UzM2Jm
M2JkMjVkY2M1OGIwMzBmN2Q2Yy4uZmJhYjJjYzBmMzk3MjQ5NTZiZjU4NDkxYjNkZTc4M2E2ZmNk
YzIzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI3MSw2ICsy
NzEsMTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmEKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMSwgSlNDZWxs
KiBjZWxsLCBHUFJSZWcgYXJnMikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKK30KKyAg
ICAKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgaW50IGRzdCwgdm9pZCogcG9pbnRlcikKIHsK
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1OThkNGVjOTlj
MWQxOGU2YzM5NjIxMTk3MjBhY2VhYzFlZTJmYTZkLi5jODNiY2M4YzQ1ZGU2NjZmNzNjOWU5MTFm
NTE0MjlmMzVlYjExMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC02NzMsNiArNjc0LDE0IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWlu
KCkpLCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KKyAgICAKK3Zv
aWQgSklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2Fs
bGVlLCByZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246
Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJl
Z1QwKTsKK30KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewpAQCAtOTYyLDI2ICs5NzEsNDUgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Cisg
ICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisgICAgCit2
b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24gPSBvcGNvZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgCiAgICAg
SnVtcCBub3RVbmRlZmluZWRTY29wZTsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChp
c0Fycm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0g
YnJhbmNoNjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpKSk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lz
dGVyKSAqIGRzdCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAg
ICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdU
MSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5k
ZWZpbmVkVGFnKSk7CiAgICAgZW1pdFN0b3JlKGRzdCwganNVbmRlZmluZWQoKSk7CiAjZW5kaWYK
LQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICBub3RVbmRlZmluZWRTY29wZS5saW5rKHRo
aXMpOwotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhwciA9IG1fY29kZUJsb2NrLT5m
dW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4cHIpOworICAg
ICAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gbV9jb2RlQmxvY2stPmZ1
bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICBpZiAoaXNB
cnJvd0Z1bmN0aW9uKQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVu
Y3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMSk7CisgICAgZWxzZQorICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7
CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQotCisgICAgCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
YXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBl
bWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAKIHZvaWQg
SklUOjplbWl0X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDkxYzAwZTNm
ZDQ1ZTA5N2UzYmIxYzM3OWQ3YzkwM2YwZmQ2MjA5OWEuLmIzOWFlMWQxYTMwNjgwMzQzZTlmZDlh
NzIzMTQyOWI2ZTU0NDEwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUg
IkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRW52
aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC05MjIsNiArOTIz
LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCBy
ZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mVGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsK
K30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IGI1ZjllMzY5YTdlNTdiYWZmMDQ2ZDJhMzY1ZGJjMDI0Y2RjZGI5M2IuLjRmZjBlM2QxNTBi
NDI2MGVmOTRiMjFlM2NiYTBmMjMxMmZiNDM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhvc3RD
YWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC05NDIsNiArOTQz
LDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25X
aXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUp
LCBzY29wZSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rp
b25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlv
bkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVk
KQoreworICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6aW5mbygpKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKKyAgICAgICAgCisgICAgSlNBcnJvd0Z1bmN0aW9uKiBhcnJvd0Z1bmN0aW9u
ICA9IGlzSW52YWxpZGF0ZWQKKyAgICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJ
bnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkKKyAgICAgICAgOiBKU0Fycm93RnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycm93RnVuY3Rpb24pOworfQorICAg
IAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9u
V2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpT
U2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworfQorICAgIAor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwg
ZmFsc2UpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4
IDNkODNmNTkwZGNmOTE4MDNhMzQ0OGJhMDgzYjJmOTJiY2JlODRmOWIuLmE2N2NhYWNiMzJmYjIx
NThhOWMwNWU2YTUwOTYyMWIzYjgzZThlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCkBAIC0xMjIsNiArMTIyLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwg
dm8KIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9u
X0VQUykoRXhlY1N0YXRlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0
aW9uKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJh
dGlvbl9FSnNjQykoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopOwordHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0NKKShFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNTKShFeGVjU3RhdGUqLCBz
aXplX3QsIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpK
X0pJVE9wZXJhdGlvbl9FU3NpQ0kpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlND
ZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKQEAgLTI4OCw2ICsy
ODksOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVm
ZmVyV2l0aFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlv
bldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29w
ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhw
KEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSGFuZGxlV2F0Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCmluZGV4IDJkNDY3N2M2NjU1N2JiY2M1ZTRkMTA5ZWY5YjAxMzhkOWE4M2YxZWMuLmEyYTZi
MmIxMWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRTdHVicy5o
IgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiVk0u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmlu
ZGV4IDU1YjgxZWUwZjc4ZmE3YWQ5YTIwZGNkNDc2ODEyYjQxZjU2ODVkN2YuLjJjZDlmNmViOGQ2
ODM4Njg3MDk3YzRlY2NlNzkyMTU5MTUxMDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9u
cy5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKQEAgLTE3MSw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50
IHsKICAgICAgICAgRXhlY1N0YXRlKiBfX3JjZl9leGVjID0gKGV4ZWNDYWxsZWUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgX19yY2Zf
ZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxz
ZSkKLQorICAgIAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3Bl
cmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50
IG9wZXJhbmQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwMTMsMTIgKzEwMTQsMjQgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOworICAg
IAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNT
Y29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6
OnNjb3BlKCk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+
ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIHNjb3BlKTsKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJh
bmQpOwogICAgIAotICAgIExMSU5UX1JFVFVSTihmdW5jKTsKKyAgICBMTElOVF9SRVRVUk4oSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoNCkuanNWYWx1ZSgp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNT
Y29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6
OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2Nr
LT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4o
SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCB0aGlzVmFsdWUp
KTsKIH0KIAogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKQEAgLTEwOTYsNyArMTEwOSw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24q
IHBjLCBDb2RlCiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7
CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRh
YmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7Ci0gICAgCisKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4
ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCmluZGV4IDhjYzY5YTk2MDBiYmY5ZDg1MzM5ZDYwOTU5NWY2N2M2
OGQwNzY3MWIuLjNmMWRhYTgxMmI3MDJlMjNjNmFhZWY5ZmQ3YzA2NzFlZTIwMjVjMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05Nyw2ICs5
Nyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzkxMDYx
N2VkODM0Yjc0YzlmMmY4ZWU0YjI2ODdjOGI5Y2ZlM2M3Yy4uNzNmYzU4ODQ0MmRkYzRiOWNmYTdi
ODhmMDA0Y2E4NjczZTQ5OWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTE4Myw2ICsxMTgzLDEwIEBAIF9sbGlu
dF9vcF9uZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3
X2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXJyb3dfZnVuY19l
eHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX25ld19hcnJvd19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg1KQogCiBfbGxpbnRfb3BfY2Fs
bDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGU5MGVjZWRmYTcz
MDk4MmZlZWY3MWVlYjBjZWE2NDM4MjM0YTY5MWMuLjdlZjZiODdjMTcwYWQwODNiMWY1MjlkYTg4
MzZjMDBjZGE2NGI0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMzczLDMgKzIzNzMsMTIgQEAg
X2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3Bh
dGNoKDYpCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAg
IGxvYWRpIEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ5NDU1
Zjc1YzdiNjY0MmZiOGM4NzIzZmMxNTJhMzc5MDkxMDNiNWIuLmQyMTUyYTJmMjc3YWRlNTg3OTc2
YTFjM2YxMjAyMzcyOWIzOGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMjI2LDMgKzIyMjYsMTEgQEAg
X2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3Bh
dGNoKDYpCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCisgICAgbG9hZHAgSlNBcnJvd0Z1
bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQxKQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCmluZGV4IDdiNTg3NzMwYTZmMDM1NDQwZGI5MGQ5YzQyNjgwYWQ1NzhiOTRhNjcuLjgw
NmRiNTIzMDNkNWFkM2E3MTg4MTI5Zjg4YmQ3NjRjNmI1MGVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjEsMTkgKzM2MSwxOSBAQCBwdWJsaWM6
CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAg
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmlj
dENvbnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNp
Z25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUpCisgICAgICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3Vy
Y2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgewogICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAg
ICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVt
biwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4
dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBp
blN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlz
QXJyb3dGdW5jdGlvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKKyAgICAgICAg
dXNlc1RoaXMoKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1
YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zm
c2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1u
KTsKLQotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5i
b2R5LCBzb3VyY2UpOworICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3ICht
X3BhcnNlckFyZW5hKSBBcnJvd0Z1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5u
YW1lLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJv
ZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBhYmI3MmE3NGUxMjg4NDhlYThiNDNmZDg2MzY5NzRj
Yjk5N2MzN2RiLi5iZGMxYmVlNzc4NDQ4NzJhYTYyNGQ0NDNiY2JhMTk2OTNhZGJkMTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAt
ODkwLDEzICs4OTAsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1f
bWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAKKyAgICBpbmxpbmUgQmFz
ZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1f
bWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCiAgICAgewog
ICAgICAgICBtX21ldGFkYXRhLT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9u
RXhwcmVzc2lvbik7CiAgICAgfQogCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21l
dGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBGdW5jRGVjbE5vZGU6
OkZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKQEAgLTkwNCw2ICs5MTAsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVu
dCwgRnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgfQogCisgICAgaW5saW5lIEFycm93RnVuY0V4
cHJOb2RlOjpBcnJvd0Z1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRh
dGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVuY0V4cHJOb2Rl
KGxvY2F0aW9uLCBpZGVudCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAgICB9CisKICNp
ZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKICAgICBpbmxpbmUgQ2xhc3NEZWNsTm9kZTo6Q2xh
c3NEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogY2xhc3NEZWNsYXJhdGlvbikKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjZjRmZTQ1MGE5MjQ5NTA0
ZjMwYmE4NWEyNjRlNjdiYWE5YTU1Yzk2Li4xOGY4NDU1MzMwNWM0YTBjMjFjNzMzODgzOWMyOWYy
M2M3NGRlOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUx
LDcgKzE1MSw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgK
ICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
CiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0
cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFy
c2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9j
YXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBt
X2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNjMsNiArMTYzLDcgQEAgRnVuY3Rpb25NZXRhZGF0
YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUp
CiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAg
ICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JL
aW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25z
dHJ1Y3RvcktpbmQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAx
ZDZiMDNkNzc2NjI5N2FlMTc1OTNiYmE5YWVjNTYwOTMyOTMwYzJkLi44NzM2NjhlYzM3YjQyN2I5
MjA2NDlkZTMwNjgzODFlMmNkOGExNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xNjUsNiArMTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJh
eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xODA5LDcgKzE4MTAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFy
dCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5k
LCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbik7CiAKICAg
ICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlm
aWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM1LDYgKzE4MzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9y
S2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogICAgICAgICB2b2lkIHNl
dExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZz
ZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4NjAsNiArMTg2Miw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAg
ICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25l
ZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0
aW9uIDogMTsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGlj
IFNjb3BlTm9kZSB7CkBAIC0xODg5LDE4ICsxODkyLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY0V4cHJO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBCYXNlRnVuY0V4cHJOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNFeHBy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgICAgIEJhc2VGdW5jRXhwck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBtZXRhZGF0YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAorICAgIHByb3RlY3Rl
ZDoKKyAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7CisgICAgfTsKKwor
CisgICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5vZGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUm
KTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgfTsKIAotICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRh
ZGF0YTsKKyAgICBjbGFzcyBBcnJvd0Z1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNlRnVuY0V4cHJO
b2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNv
bnN0IFNvdXJjZUNvZGUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAjaWYgRU5BQkxFKEVTNl9D
TEFTU19TWU5UQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXgg
YWVlNzBiNmE3MzI5YmMxMWI1Y2U3M2Q1MzUyZDMxM2UyMmEyN2JlMS4uZjUwODE0ZTdiMTQyYWI1
MzAwZDg0YTRiNzAxOWY5Yzk4NGUyYjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcApAQCAtMTU0NiwxMSArMTU0NiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25C
bwogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogeworICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlC
bG9jayAhPSBib2R5VHlwZTsKICAgICBpZiAoYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJv
ZHlCbG9jayB8fCBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrKSB7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2lu
ZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwg
c3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xNTYyLDcgKzE1NjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAg
IGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVj
a2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9k
eUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBw
YXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNT
dGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJz
ZU1vZGUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0
TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJy
b3dGdW5jdGlvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1v
ZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNzM3LDcgKzE3MzgsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25J
bmZvKFRyZWVCdWlsZAogICAgIH0KICAgICAKICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvciA9
IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0KKyAgICAKICAgICBm
dW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8g
SWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNh
Y2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24u
CkBAIC0xNzU2LDExICsxNzU3LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9v
bCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAg
ICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9m
ZnNldCA6CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9u
LmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNl
dCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0KKyAgICAgICAgCisgICAg
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gcGFyc2VUeXBlID09IEFycm93RnVuY3Rpb25QYXJz
ZVR5cGU7CisgICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0
aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAg
ICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9y
S2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgICAgICAgICAgY2Fj
aGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0
ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0
aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAg
ICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlh
YmxlSW5mbyk7CkBAIC0xNzc0LDcgKzE3NzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAog
ICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsK
ICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9u
T2Zmc2V0OwogCi0gICAgICAgIGlmIChwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlw
ZSkKKyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgICAgIGZ1bmN0aW9uQm9k
eVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDA3
NjBjMTllYjE2MzZkYjIxYTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcuLmRjNTYxZjliMWE2ZGEzNjQz
YjgyNzJmZTdiMTJlMjE1ZTQ0ZjQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIENsYXNz
RXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0
LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhw
cjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50
LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsgcmV0dXJuIEZ1
bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29s
LCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1v
ZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhw
cjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGlu
dCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGFiMTY3MjExNjgx
OTRjMWE2MDI4OWViODU2ZTk4YzBjZmExN2I3OS4uOWRjNjk0ZjI3YTQ1ODczYjJhMjE2N2EzNjk2
MzVkM2U1OTQ1YWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAKQEAgLTIzNiw4ICsyMzYsNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVj
dXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9
IGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsK
ICAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNQcm9maWxl
cigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0KLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+
bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcigqdm0sIGV4ZWN1
dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3Is
IGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKICAgICByZWNvcmRQYXJzZShleGVjdXRh
YmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBzdGFydENvbHVtbigpLCBlbmRDb2x1bW4oKSk7IAogICAgIGlmICghdW5saW5rZWRD
b2RlQmxvY2spIHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0tPnRocm93RXhjZXB0aW9uKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGJjZTI0MjhjYmMx
MDFkZGE2Y2IxMDFkNzBiZjAyN2Y3ZTBlYTNkZjAuLmNmMmJkZTg4YzVhNmU5MTY3NjAzNmVlMjdk
NzQ0Zjc2NDUzOWNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKQEAgLTQ3NCw3ICs0NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgp
OwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVl
ZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJp
YWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7
IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlu
a2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUzMCw3ICs1
MzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1
dGFibGU7CkBAIC02MzMsNiArNjMzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uTW9kZSBmdW5j
dGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7
IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5
IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
Y29uc3RydWN0QWJpbGl0eSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBi
b29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxYzI2MGUxNmEy
MGUyYjg0MDlhZWJiOWEyZTU5ZGI5YjNkZjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw4MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtv
dkBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Fycm93RnVuY3Rpb246OnNfaW5mbyA9
IHsgIkFycm93RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTQXJyb3dGdW5jdGlvbikgfTsKKwordm9pZCBKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwpLT5K
U0Fycm93RnVuY3Rpb246On5KU0Fycm93RnVuY3Rpb24oKTsKK30KKworSlNBcnJvd0Z1bmN0aW9u
KiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQoreworICAgIEpTQXJy
b3dGdW5jdGlvbiogcmVzdWx0ID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIGJv
dW5kVGhpcyk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3Jp
dGUodm0sIHJlc3VsdCwgIkFsbG9jYXRpbmcgYW4gYXJyb3cgZnVuY3Rpb24iKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitKU0Fycm93RnVuY3Rpb246OkpTQXJyb3dGdW5jdGlvbihWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUg
Ym91bmRUaGlzKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9i
YWxPYmplY3QoKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKQorICAgICwgbV9ib3VuZFRoaXMo
dm0sIHRoaXMsIGJvdW5kVGhpcykKK3sKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBKU0Fycm93RnVu
Y3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZt
LCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVl
IGJvdW5kVGhpcykKK3sKKyAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24o
KS0+aGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgIHJldHVybiBjcmVhdGUodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBib3VuZFRoaXMpOworfQorCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXJy
b3dGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNB
cnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQor
eworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdmNTZmNjhlZmVlZGQ4MjMxYTM1YjJmYzI0OWZkODFhYzk3ZjViMjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rp
b24uaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5k
ciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNBcnJvd0Z1bmN0aW9uX2gKKyNkZWZpbmUg
SlNBcnJvd0Z1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIEpTR2xvYmFs
T2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVk
T2Zmc2V0czsKKyAgICAKK2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9u
IHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVu
ZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENv
bXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRl
KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOworICAgIHN0YXRp
YyBKU0Fycm93RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisKKyAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0
dXJuIHNpemVvZihKU0Fycm93RnVuY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNB
cnJvd0Z1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAgeworICAgICAg
ICBKU0Fycm93RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNBcnJvd0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxl
LCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5zdHJ1Y3R1cmUo
KS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgICAgICByZXR1cm4gZnVuY3Rpb247CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDb25z
dHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworCisg
ICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQorICAg
IAorICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZUaGlzVmFsdWUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Fycm93RnVuY3Rpb24s
IG1fYm91bmRUaGlzKTsKKyAgICB9CisgICAgCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3Byb3RlY3RlZDoKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAg
IAorcHJpdmF0ZToKKyAgICBKU0Fycm93RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7
Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Fycm93RnVuY3Rp
b25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDBi
ODdkNzVjOTE0NTBjNWFmMWFhZWQyN2E2MWE3NDhlZjgwZjA5M2UuLjkyODM1MGUyNDc4YzQ1Zjdi
ZjdlOGFhODRjOWVjM2E0ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2Nv
cGUqKTsKKyAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSos
IFN0cnVjdHVyZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1
dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6
OmZpbmlzaENyZWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZjZjNmQ1OGVjNmU1YzExNjRjYjI3ZmE1ZTQxNjE4YjRi
ODE0MmYwMi4uZjA1OTU4NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNiNjQ0YTg4NDQxMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBA
IC00NCw2ICs0NCwxMyBAQCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgICwgbV9yYXJlRGF0
YSgpCiB7CiB9CisgICAgCitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhl
Y3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkKKyAgICAsIG1fcmFyZURhdGEoKQoreworfQog
CiBpbmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IGNlZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAwNDQxN2MyMjlhZDA0MjMuLmRh
MWFjMjVhYWIwMDg2MmNkNTM3MzBmOWE1YWQxMjVhMmRjMGZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU5LDYgKzU5LDcg
QEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
IgpAQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgIGV4ZWMtPnNldENhbGxlZShtX2dsb2JhbENhbGxlZS5nZXQoKSk7CiAKICAgICBtX2Z1bmN0
aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9hcnJvd0Z1bmN0aW9u
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2JvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5j
dGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQp
KTsKICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKTsKQEAgLTc5NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4NmJjZjYyNDVl
MmNjNDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMwNTVlOWJhZTMwYmI3M2ZkOTAx
NWJjMDAzODM2M2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGVlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
YXJyb3dGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25h
bWVkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVP
ZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVy
ZTsKQEAgLTQ2Miw2ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxsZWVTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3Ry
dWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJvd0Z1
bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlv
bi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFl
M2E2NmVhOTJmMDMwZGIzNzc5YTRjM2U0MDJlN2MxMThkMWQ4MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0
aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpAQCAtMCwwICsxLDQ2
IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gc2hvdWxk
VGhyb3dURFooZnVuYykgeworICAgIHZhciBoYXNUaHJvd24gPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmIChlLm5hbWUuaW5k
ZXhPZigiUmVmZXJlbmNlRXJyb3IiKSAhPT0gLTEpCisgICAgICAgICAgICBoYXNUaHJvd24gPSB0
cnVlOworICAgIH0KKyAgICBpZiAoIWhhc1Rocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJEaWQgbm90IHRocm93IFREWiBlcnJvciIpOworfQorCitmdW5jdGlvbiBiYXIoZikgeyB9CisK
K2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9ICAo
eCkgPT4geyByZXN1bHQgPSB4OyByZXR1cm4gdGR6UGVycGV0cmF0b3I7IH0KKyAgICBpZiAoYikg
eworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIo
c2V0KTsKKyAgICAgICAgICAgIHJldHVybiB0ZHpQZXJwZXRyYXRvcjsKKyAgICAgICAgfQorICAg
IH0KKyAgICBsZXQgdGR6UGVycGV0cmF0b3I7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9J
bmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7Citub0lubGluZShzaG91bGRUaHJvd1REWik7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIGJvb2wgPSAhKGkgJSAxMDAp
OworICAgIGlmIChib29sKQorICAgICAgICBzaG91bGRUaHJvd1REWigoKT0+IHsgZm9vKGJvb2wp
OyB9KTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhib29sKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZh
dWx0LXZhbHVlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTQxYmJlMTQwMjQxNGRiMjZjNmI3ZmQ0MDFmYjBlOWM2NWE0YmE3NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1h
Y3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzCkBAIC0wLDAgKzEsMzcgQEAK
K3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gYmFyKHNldCkgeworICAgIHZhciByZXN1bHQg
PSBzZXQoMCk7CisgICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCB2YWx1ZTogIiArIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2
YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgaW1VbmRlZmluZWQ7CisgICAgdmFyIGJhejsKKyAgICB2
YXIgc2V0ID0gICh4KSA9PiB7CisgICAgICAgIHJlc3VsdCA9IHg7CisgICAgICAgIGlmIChiYXog
IT09IDUwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBiYXo7Cisg
ICAgICAgIHJldHVybiBpbVVuZGVmaW5lZDsKKyAgICB9OworICAgIGJheiA9IDUwOworICAgIGlm
IChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAg
IGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkp
OworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2lu
ay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNDM3YWY3YjJjMmFkMzQ1ZTI2YzIwMzc3ODkwZGY1
ZjMxZmFmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCAr
MSwyNSBAQAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVuY3Rp
b24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsg
cmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAg
aWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9J
bmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVz
dWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2lu
ay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1h
Y3RpdmF0aW9uLXNpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZhNzllYzllYWE2NWM1NDE5MzBiOTA0ODI2
ZTdhMjNhMTNmYjJlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKQEAgLTAsMCArMSwy
NCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKworZnVuY3Rpb24gYmFyKGYpIHsgZigxMCk7IH0KKwor
ZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0geCA9
PiB7IHJlc3VsdCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0KTsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkOiAiICsg
cmVzdWx0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
bjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBpZiAocmVz
dWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1ib3VuZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ib3VuZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjAzMjA4OGFiZjI2ZGFlMmFlNzFhMmFj
NGMwNWQ0ZjA3NzU1ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCkBAIC0wLDAgKzEsMTggQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KwordmFyIGQgPSB7CisgIHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4geiA9
PiB0aGlzLnggKyB6OyB9Cit9OworCitub0lubGluZShkLnkpOworCit2YXIgZSA9IHsgeCA6ICJi
YXoiIH07CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RDYXNlKGQueSgp
LmJpbmQoZSwgImxleSIpKCksICJiYXJsZXkiLCAiRXJyb3I6IGZ1bmN0aW9uIGJpbmQgc2hvdWxk
bid0IGNoYW5nZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NzdlMGFkOWM4M2FjNTNhN2Y2ZDM1MTk2MjMyMTRj
MWU5ZmM2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE4IEBACit2YXIgdGVzdENh
c2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4
cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBk
ID0geworICB4IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMu
eDsgfQorfTsKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJhciIgfTsKKworZm9y
ICh2YXIgaT0wOyBpPDEwMDAwO2krKyl7CisgICAgdGVzdENhc2UoZC55KCkuY2FsbChlKSwgImZv
byIsICJFcnJvcjogZnVuY3Rpb24gY2FsbCBzaG91bG4ndCBjaGFuZ2UgdGhlIGxleGljYWwgYmlu
ZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICB0ZXN0Q2FzZShkLnkoKS5hcHBseShl
KSwgImZvbyIsICJFcnJvcjogZnVuY3Rpb24gYXBwbHkgc2hvdWxuJ3QgY2hhbmdlIHRoZSBsZXhp
Y2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3Iu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTViZWI1NTdkNzk0OWJjNmIyYzc4YWI0NjU5ZWE4YzJh
YzYzZGU2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDIyIEBACit2YXIg
dGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAn
IiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisK
K3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNpbXBsZUFy
cm93RnVuY3Rpb24pOworCit2YXIgZXJyb3JPbkNyZWF0ZSA9IGZhbHNlOworCitmb3IgKGk9MDtp
PDEwMDAwO2krKykgeworICAgdHJ5IHsKKyAgICAgICB2YXIgZmMgPSBuZXcgc2ltcGxlQXJyb3dG
dW5jdGlvbigpOworICAgfQorICAgY2F0Y2ggKGUpIHsKKyAgICAgZXJyb3JPbkNyZWF0ZSA9IHRy
dWU7CisgICB9CisKKyAgICB0ZXN0Q2FzZShlcnJvck9uQ3JlYXRlLCB0cnVlLCAiRXJyb3I6IE5v
IGV4Y2VwdGlvbiBkdXJpbmcgcnVuIG5ldyBBcnJvd0Z1bmN0aW9uIik7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZmFiMjRjOTFi
YzU3Yzk1ODc2MzJkZmVjOWE0YzkzNzk4ZTIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtMS5qcwpAQCAtMCwwICsxLDE5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFs
LCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAg
IHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMg
JyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRo
aXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIp
OworICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIp
OworfQorCitub0lubGluZShEb2cpCisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAg
dmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwg
IkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lSGFyZCgpLCBkLm5hbWUsICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICMyIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjExN2RiMzAzY2RmZTNkMTVkYTQ1YzgxNjRlNDhkMDNhNjdlYjkyYTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpAQCAtMCwwICsxLDM5IEBACit2YXIgdGVz
dENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiAr
IGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3Zh
ciBmdW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSAoKSA9
PiB0aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0b3IoKTsK
KwordGVzdENhc2UoaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSwgdHJ1ZSwgIkVycm9yOiB0
aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24g
IzIiKTsKKwordmFyIG9iaiA9IHsKKyAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJu
ICgpID0+IHRoaXM7CisgIH0KK307CisKK25vSW5saW5lKG9iai5tZXRob2QpOworCitmb3IgKHZh
ciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCkgPT09
IG9iaiwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30KKwordmFyIGZha2UgPSB7c3RlYWw6IG9iai5t
ZXRob2QoKX07Citub0lubGluZShmYWtlLnN0ZWFsKTsKKworZm9yICh2YXIgaT0wOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIHRlc3RDYXNlKGZha2Uuc3RlYWwoKSA9PT0gb2JqLCB0cnVlLCAiRXJy
b3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5j
dGlvbiAjNCIpOworfQorCit2YXIgcmVhbCA9IHtib3Jyb3c6IG9iai5tZXRob2R9Oworbm9Jbmxp
bmUocmVhbC5ib3Jyb3cpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAg
dGVzdENhc2UocmVhbC5ib3Jyb3coKSgpID09PSByZWFsLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMg
bm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMDE5MDg2ZDU4NDc5YzRiZDRmZTBmNTI3YjNhN2JiODkzOWMwOTJkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTMuanMKQEAgLTAsMCArMSwyOCBAQAordmFyIHRlc3RDYXNlID0gZnVu
Y3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCAr
ICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3ZhciBvYmogPSB7
IG5hbWU6J29iaicsIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVlKSA9PiB0aGlz
Lm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9fTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBp
KyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdv
YmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30KKworZm9yICh2
YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDEgPSBvYmoubWV0aG9kKCkoJ3Rl
c3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0MSwgJ29iai1uYW1lLXRlc3Qn
ICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5z
aWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitvYmoubmFtZT0nbmV3T2JqJzsK
KworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgp
KCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICduZXdPYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmco
KSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJy
b3cgZnVuY3Rpb24gIzUiKTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAg
dmFyIHJlc3VsdDIgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVz
dENhc2UocmVzdWx0MiwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NWJkMzYzZTRlNDZiMDJkMmYxOWJiZTM4NTAyZjUyODIzM2E5ZjEzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMKQEAgLTAsMCArMSwyNiBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3Zh
ciBvYmogPSB7CisgIG5hbWU6J29iaicsCisgIGludGVybmFsT2JqZWN0OiB7CisgICAgbmFtZSAg
OidpbnRlcm5hbE9iamVjdCcsCisgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFs
dWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH0KKyAgfQorfTsKKworbm9Jbmxp
bmUob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsg
aSsrKSB7CisgICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyAr
IGkudG9TdHJpbmcoKSksICdpbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygp
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMSIpOworfQorCitvYmouaW50ZXJuYWxPYmplY3QubmFtZT0nbmV3SW50ZXJu
YWxPYmplY3QnOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNl
KG9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpLCAnbmV3
SW50ZXJuYWxPYmplY3QtbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODc1NDk0Y2U2YjY2ZGIwYTdlYjQzZGNjODNlYzFlYWNlNjI4NzU0NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy01LmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBzb3J0ZWRWYWx1ZXM7
CisKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4
cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAg
fQorfTsKKworCit2YXIgb2JqID0geworICBhcnI6IFsxLCA0LCA2LCAzLCA3LCAwXSwKKyAgYnVi
YmxlU29ydDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB7CisgICAgICB2YXIgdG1w
OworICAgICAgdmFyIGFyID0gdGhpcy5hcnIuc2xpY2UoKTsKKyAgICAgIHZhciBfbGVuZ3RoID0g
YXIubGVuZ3RoCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9sZW5ndGg7IGkrKykgeworICAg
ICAgICBmb3IgKHZhciBqID0gaTsgaiA+IDA7IGotLSkgeworICAgICAgICAgIGlmICgoYXJbal0g
LSBhcltqIC0gMV0pIDwgMCkgeworICAgICAgICAgICAgdG1wID0gYXJbal07CisgICAgICAgICAg
ICBhcltqXSA9IGFyW2ogLSAxXTsKKyAgICAgICAgICAgIGFyW2ogLSAxXSA9IHRtcDsKKyAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBhcjsKKyAgICB9CisgIH0K
K307CisKK25vSW5saW5lKG9iai5idWJibGVTb3J0KTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAw
OyBpKyspIHsKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDMsIDcsIDBdOworICAgIHRlc3RD
YXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgsIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4
aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisKKyAgICB2
YXIgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RDYXNlKHNvcnRl
ZFZhbHVlc1swXSwgMCwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lk
ZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzYiKTsKKyAgICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNb
Nl0sIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICM3Iik7CisKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDUsIDgs
IDIxLCAxOSwgMF07CisKKyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCkubGVuZ3RoLCA5
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjOCIpOworCisgICAgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgp
OworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1sxXSwgMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEyIik7CisgICAg
dGVzdENhc2Uoc29ydGVkVmFsdWVzWzhdLCAyMSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEzIik7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtNi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTdiYzdj
OGYxODA1MzU4YmRiYTg1YjJjZWY2YTY5YjVmNDFlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMtNi5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0
dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewor
ICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3
YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7Cisg
IHRoaXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+ICB0aGlzLm5hbWU7Cisg
IHRoaXMuZ2V0TmFtZU5lc3RpbmdMZXZlbDEgPSAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7CisgIHRo
aXMuZ2V0TmFtZU5lc3RpbmdMZXZlbDIgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7Cit9
CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CisKK25vSW5saW5lKGQuZ2V0TmFtZSgpKTsKK25v
SW5saW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpKTsKK25vSW5saW5lKGQuZ2V0TmFtZU5l
c3RpbmdMZXZlbDIoKSgpKCkpOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDsgaSsrKSB7CisgIHRl
c3RDYXNlKGQuZ2V0TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5
IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRlc3RDYXNlKGQu
Z2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4
aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7CisgIHRlc3RD
YXNlKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDIoKSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlz
IG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFj
dGl2YXRpb24tc2luay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTBhMzFkNjczMWFlNjk3NGQ2
NjdlZDhkMjQ4NzBiNWQ1MzFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24t
c2luay1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMzQgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK3Zh
ciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGJh
cigpIHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZh
ciBzZXQgPSAoeCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUg
Y29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0Nv
bnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rp
b24nOworICAgICAgcmVzdWx0ID0geDsKKyAgICB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NS
RXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
bjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRleHQsICEoaSAlIDEw
MCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmsuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTQzMDYzN2M4NWJmOTQyMWFl
OWM5N2UwZGQ3ZjZjZDEzNWM0Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanMKQEAgLTAsMCArMSwzOCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwordmFyIG5ld0Nv
bnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24gYmFyKGYpIHsK
KyAgICBpZiAodGhpcyA9PSBuZXdDb250ZXh0KQorICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4
dCBvZiBuZXN0aW5nIGZ1bmN0aW9uJzsKKyAgICBmKDEwKTsKK30KKworZnVuY3Rpb24gZm9vKGIp
IHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsKKyAgICAgIHJl
c3VsdCA9IHg7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0
CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5p
ZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbic7Cisg
ICAgfTsKKworICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVz
dWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGlu
ZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsK
KyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAwKSk7CisgICAg
aWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjllMDI3
MTM5YzE2NjdlMTA2OWJhYmQyOTVhNmQ3ZmMwYjllNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhp
cy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM3IEBACit2YXIgbmV3
Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBjYWxsKG8p
IHsgby54ID0gMzsgfQorbm9JbmxpbmUoY2FsbCk7CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5
IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAo
cCwgcSkgeworICAgIHZhciBmID0gKCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVu
Y3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlz
LmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2Yg
YXJyb3cgZnVuY3Rpb24gIzEnOworICAgIH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChm
KTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAg
ICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJl
dHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVl
LCBmYWxzZSk7CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIG8ueCB0byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50
LCB0aGUgYXJyb3cgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAor
CisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NS
IGV4aXQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJv
dyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZmZjYjNmYTViMWU3N2ZiNjI4NjE4MGIzMzJhM2JlN2RlMjhmNjBlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNiBAQAor
dmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworLy8gU2hvdWxk
IGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0Citm
dW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAgIC8vIENoZWNr
IGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0Nv
bnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9u
ZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKyAgICAgIHJldHVybiB4OworICAgIH07
CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4g
eCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0Cisg
ICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkK
KyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMic7Cisg
ICAgICByZXR1cm4geDsKKyAgICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQs
IHRydWUsIGZhbHNlKTsvLyBTdWJzdGl0dXRlIHRoaXMKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7
CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1
dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNo
b3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVu
Y3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsuY2Fs
bChuZXdDb250ZXh0LHRydWUsIHRydWUpOy8vIFN1YnN0aXR1dGUgdGhpcwordmFyIHJlc3VsdCA9
IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQy
IGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1N2VhMDc2MzVhNDEzMWNkMjMxMWQ0NTA3
MzVmNTdjMWRkOTU4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctcHV0LmpzCkBA
IC0wLDAgKzEsNDUgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcK
K307CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMg
YnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB7
CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBp
ZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAg
ICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisKKyAgICAg
IHJldHVybiB4OworICAgIH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0
dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5j
dGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMu
aWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBh
cnJvdyBmdW5jdGlvbiAjMic7CisKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGlu
ZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYg
PSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Ly8gdXNlIGNhbGwgdG8gc3Vic3Rp
dHV0ZSBjb250ZXh0CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQgIT0g
NDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9
CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGls
ZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxp
Y2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVl
LCBmYWxzZSk7Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8v
IFRoaXMgc2hvdWxkbid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3Ig
Y29tcGxldGVseSBjcmFzaAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAi
ICsgcmVzdWx0OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBi
ZXlvbmQgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRl
eHQsIHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQy
KQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLW90aGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRjZTBjNjU4ZDNhMmY3OTIyOWRmNGY4
OTJjY2RhMTUxM2M5NGU1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCArMSwxNyBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitub0lubGluZShzaW1w
bGVBcnJvd0Z1bmN0aW9uKTsKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7aSsrKSB7CisgICB0ZXN0
Q2FzZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiksIEZ1bmN0aW9u
LnByb3RvdHlwZSwgIkVycm9yOiBOb3QgY29ycmVjdCBnZXRQcm90b3R5cGVPZiB2YWx1ZSBmb3Ig
YXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0
YW5jZW9mIEZ1bmN0aW9uLCB0cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3VsdCBmb3IgaW5z
dGFuY2VvZiBtZXRob2QgZm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RDYXNlKHNpbXBs
ZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90
IGNvcnJlY3QgcmVzdWx0IGZvciBjb25zdHJ1Y3RvciBtZXRob2Qgb2YgYXJyb3cgZnVuY3RpbyAg
IG4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1ydW4tMTAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ExZjBhNDljYjE2
ODYzYzU5MjEzNjFmMGFkYjFlMTRlYzliNjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCkBAIC0w
LDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2Fn
ZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCAr
ICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0
cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0
aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1l
ID0gKCkgPT4gdGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRl
bSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJl
c3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2Fz
ZShydW4oMSksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cg
ZnVuY3Rpb24gb25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogRXJy
b3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1y
dW4tMTAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1ydW4tMTAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRjZGIzYzcwYTFiMjdjM2RiYjUyMzgwOTU1
ZjUzNTNkNzY3NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCkBAIC0wLDAgKzEsMjUgQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFy
IGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7Cisg
ICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgi
dGhpcy5uYW1lIik7OworICAgIH07CisKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiAr
IGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0
ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1
bigxKSwgdHJ1ZSwgIkVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIG9u
ZSB0aW1lIik7Cit0ZXN0Q2FzZShydW4oMTApLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRp
b24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAt
MS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wZTVmNmJjODZiZDMxNDUxYjAxY2EyN2QwYjk3MjBiNTdlOGQ2MDUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhw
ZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rp
b24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxj
b3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlz
Lm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5uYW1lOworICAg
IH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5h
bWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAg
fQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0cnVlLCAiRXJy
b3I6IEVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEwMDAwIHRpbWVz
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0MjcxZjRhMzE1
OTE2MjVhMGJkM2Q3NDRkMjUxMjYzMzMwMmU0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpA
QCAtMCwwICsxLDIzIEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3Rl
ZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1l
c3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1
YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2YXIgcmVzdWx0
ID0gdHJ1ZTsKKyAgZm9yICh2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0g
ZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdl
dE5hbWUgPSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworICAgIHZhciBvYmog
PSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUo
KSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7
Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBl
eGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5v
LWRvdWJsZS1hbGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
Mjg2MmM2MjhlM2IyY2EzMDQ0MTBiMWFlMjI2OTQ3MTgwNTFkZWMxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtp
bmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGNhbGwo
bykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAocCwgcSkg
eworICAgIHZhciBmID0gKCkgPT4geyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7
IC8vIEZvcmNlIGFsbG9jYXRpb24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAg
T1NSRXhpdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1
cm4geyAneCc6IDIgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBpZiAo
by54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0
IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91
bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0
aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUs
IHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRv
IGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhp
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MjdmM2NhM2JkZThkYTMwMTQwZmExNDk5NzNlMTdhYWE4ZDkxMDVl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlv
biBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAgaWYgKHApIHsgaWYgKHEp
IE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB4OworfQorbm9JbmxpbmUo
c2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0g
c2luayh0cnVlLCBmYWxzZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1
bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1
bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGls
ZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Bl
cmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFy
IHJlc3VsdCA9IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4
cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZGI3MGJiOWFiYzIzMTQ4ZjYyN2VmYzYxODZiZTA1N2MzY2JiMjc2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNpbmsg
KHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5l
ciA9IDQyOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGluZShzaW5r
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5r
KHRydWUsIHRydWUpOworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAocmVzdWx0ICE9
IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0Owor
fQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRv
d24gdG8gdGhlIEZUTAorCisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBp
bm5lciBlbHNlIGJyYW5jaAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3ZhciByZXN1bHQg
PSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRuJ3QgbWF0dGVy
IGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNyYXNoCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisKKy8vIENoZWNr
IHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNz
aWdubWVudAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7
CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQy
IGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NDkyMzk3MTk4
M2RjZGEzNGMyNjkzOTIxMTdiMTc0OGU2N2I0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAgLTAsMCAr
MSwyNyBAQAordmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEg
eworICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBpZiAoYWNjZXNz
VGhpc0JlZm9yZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7CisgICAgICBzdXBl
cigpOworICAgIH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQorfTsKKwordmFy
IGV4Y2VwdGlvbiA9IG51bGw7Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0cnkg
eworICAgICAgIG5ldyBCKHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgICBleGNlcHRpb24g
PSBlOworICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKKyAgICAgICAg
ICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVycm9yIjsKKyAg
fQorCisgIGlmICghZXhjZXB0aW9uKQorICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3du
IGZvciBhbiB1bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7CisKKyAgdmFyIGUgPSBuZXcg
QihmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTNlYzBkZGQ1NTE0
ZmFmNGQwZDAzYzllMDY1NzBhMGM4MmJlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpAQCAtMCww
ICsxLDI3IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVz
c2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2Ug
KyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAi
JyI7CisgIH0KK307CisKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2Eg
KyAxfTsKKworbm9JbmxpbmUoYWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgeworICB0ZXN0Q2FzZSh0eXBlb2YgYWYxLCAiZnVuY3Rpb24iLCAi
RXJyb3I6IE5vdCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRl
c3RDYXNlKHR5cGVvZiBhZjIsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKworLy9GaXhtZTogU29tZSBidWcgaW4gaW5saW5p
bmcgdHlwZW9mIHdpdGggZm9sbG93aW5nIHJ1biBwYXJhbWV0ZXJzIGZ0bC1uby1jaml0LW5vLWlu
bGluZS12YWxpZGF0ZQorLy8gLS11c2VGVExKSVRcPXRydWUgLS1lbmFibGVGdW5jdGlvbkRvdEFy
Z3VtZW50c1w9dHJ1ZSAtLWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10aHJlc2hvbGRGb3JK
SVRBZnRlcldhcm1VcD0xMDAgIC0tdmFsaWRhdGVHcmFwaD10cnVlIC0tbWF4aW11bUlubGluaW5n
RGVwdGg9MQorLy8KKy8vIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgIHsKKy8vICAg
aWYgKHR5cGVvZiAoZnVuY3Rpb24gKCkge30pICE9PSAnZnVuY3Rpb24nKQorLy8gICAgICAgdGhy
b3cgJ1dyb25nIHR5cGUnOworLy8gfQorLy8gIHRlc3RDYXNlKHR5cGVvZiAoKT0+e30sICJmdW5j
dGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMt
IiArIGkpOworCisvLyAgdGVzdENhc2UodHlwZW9mICgoYikgPT4ge2IgKyAxfSksICJmdW5jdGlv
biIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzQiKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBhOTBiOGYzYTFkOTVmYzQzYmRlZWJlMzQ1N2NhYTY0ZDFlNmI3YTAyLi5mMWQx
YjhmMTUwMGFkY2NlOGI3M2M2ODg1YzgwNTg4M2M5NjcwNTEzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTUtMDgtMTIgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXguIEFy
cm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2YgdGhpcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0OTU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1
bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0
aW9uLWJpbmQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jYWxsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRk
ZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LW90aGVycy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tdGR6LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi10eXBlb2YuanM6IEFkZGVkLgorCiAyMDE1LTA4LTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVkdWNlIGZsYWtpbmVz
cyBvZiBpbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmIz
MjZjY2JiNGUxNGM2ODlkZDdkOTM4M2NjNWJjOTRmZjdmMDE0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVy
d3JpdHRlbiBkdXJpbmcgaW52b2tlIGJpbmQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgZC55KCkuYmluZChlLCAnbGV5JykoKSBpcyAnYmFybGV5JworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1iaW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI5YWNiMmJjOGZkNTA0YzY4ZjA0NDVhNmVh
YzRhNmExNDU0YWJhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tYmluZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
YWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2FsbC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMwNzdmOTk3OWFjZjQ1ZTE2Yjk5NjU3MmQxYWZkZWVkZDU5
MTEyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY2Fs
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5j
dGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmNhbGwoZSkgaXMg
J2ZvbycKK1BBU1MgZC55KCkuYXBwbHkoZSkgaXMgJ2ZvbycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZDhhNDdlMzBiNmE4NzQ5ZWM1YjdlNzgzYzZhOWVjMzEz
MmQyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNh
bGwuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0
b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rv
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY3MDZmZmYxN2MyMTIzODUzNjQwYmIyYTRlYjE3
ZDYzZTFhMzcyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGZvciBF
UzYgYXJyb3cgZnVuY3Rpb24gbm8gY29uc3RydWN0b3IKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3
IHNpbXBsZUFycm93RnVuY3Rpb24oKScpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGMwYjlhOWNkZDRkOGJkZmE2MjQxY2I2YmVmYmYw
NGNjOTU4MzBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2I2NmZjMjg4Y2FjYmQ5YzkzN2M5NzFjMmJkNmI2OGU2NjRhOTQ4OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbGV4
aWNhbCBiaW5kIG9mIHRoaXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
ZC5nZXROYW1lKCkgaXMgZC5uYW1lCitQQVNTIGQuZ2V0TmFtZUhhcmQoKSBpcyBkLm5hbWUKK1BB
U1MgZC5nZXROYW1lTmVzdGluZygpKCkoKSBpcyBkLm5hbWUKK1BBU1Mgb2JqLm1ldGhvZCgpKCdj
b3JyZWN0JykgaXMgJ29iakNvZGUtbmFtZS1jb3JyZWN0JworUEFTUyBvYmoubWV0aG9kKCkoJ2Nv
cnJlY3QnKSBpcyAnbmV3T2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJu
YWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnaW50ZXJuYWxPYmplY3QtbmFtZS1jb3Jy
ZWN0JworUEFTUyBkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3JyZWN0JykgaXMg
J25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgaW5zdGFuY2UuZnVuYygpID09
PSBpbnN0YW5jZSBpcyB0cnVlCitQQVNTIG93bmVyT2JqLm1ldGhvZCgpKCkgPT09IG93bmVyT2Jq
IGlzIHRydWUKK1BBU1MgZmFrZS5zdGVhbCgpID09PSBvd25lck9iaiBpcyB0cnVlCitQQVNTIHJl
YWwuYm9ycm93KCkoKSA9PT0gcmVhbCBpcyB0cnVlCitQQVNTIGFycm93RnVuY3Rpb24oJy10aGlz
JykgaXMgInJpZ2h0LXRoaXMiCitQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMnKSBpcyAicmlnaHQt
dGhpcyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10
aGlzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODFlYTIyYTc2ZmRmOGJmZjVlNzJlNTFiNzc5NGIzZTM0N2QxNjQy
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNTJlNWUzN2M2OTE1ZjM4
MjNlMjliMjBhOTRkZjUzZDA4YzAwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0
cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlw
ZU9mKHNpbXBsZUFycm93RnVuY3Rpb24pIGlzIEZ1bmN0aW9uLnByb3RvdHlwZQorUEFTUyBzaW1w
bGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzaW1wbGVB
cnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3ZjhiMDBlNDYwNTVlZTZmYWU1
YzFlODI4OWVmZWUxZjExMDkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10
ZHotZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YWY2Y2Q4NjAwZTg4NDEyNzdjNDk0YTk4OTAy
MjQ1MmVhNmFiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLXRkei1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9yIEVTNiBhcnJv
dyBmdW5jdGlvbiB0ZXN0IHRkegorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBpc1JlZmVyZW5jZUVycm9yIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLXRkei5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mOGVmMTcxY2I4MjBiZWIzY2I0YTdkM2ZjNDhlNWM1M2ZjMTE5MjZkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHouaHRtbApAQCAt
MCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi10ZHouanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYyZmIyY2U5NjRiZDAzMzIxYjgzMmNiODdiYmFlMGNhNTM0OWMxYmMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw4IEBACitQQVNTIHR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQor
UEFTUyB0eXBlb2YgYWYyID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoKT0+
e30pID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoYikgPT4ge2IgKyAxfSk9
PT0nZnVuY3Rpb24nIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXR5cGVvZi5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMGFjYWFhMWE0ZTRkMGU0Y2IzZDA3NjVlMzczZmVkYjc0MzgwZTAxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbApA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYjU1MmY4MGY2NjFkZTNiYWI1MjA5YzcyZGRjZjUwMjEw
MDM0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2Fycm93
ZnVuY3Rpb24tY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBl
eGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0
aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjNkODQ1NGJmZjYxODJlNjFjYmViMGI5ZWUxMzNmZTg3MzExMmJm
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlv
bi1jYWxsLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI0Yzg0Mjc2ZTcx
MDg3Nzg2YzU5NDBhODIyYmNjNmY5N2MwNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAg
KzEsMTUgQEAKK3ZhciBhZiA9IChhLCBiKSA9PiBhICsgYjsKKworbm9JbmxpbmUoYWYpOworCitm
dW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBhZihhLCBiKTsKK30KKworbm9JbmxpbmUo
YmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVz
dWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3M2Mz
YjVlMGNhNzkxNzk0ZjI1MTY5YTkxY2I0YTdkYzliMjhjZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAs
MCArMSwxNSBAQAordmFyIGZlID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyBiO30KKwor
bm9JbmxpbmUoZmUpOworCitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBmZShhLCBi
KTsKK30KKworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyAr
K2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTUzZjA4ZTk2NmM3OTRjYmFmOWFkNGEzYWRiNGU5OTc5YzAyYWMyYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQu
anMKQEAgLTAsMCArMSwxMiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVu
Y3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZCcpOwor
Cit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6ID0+
IHRoaXMueCArIHo7IH0KK307CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKworc2hvdWxkQmUo
ImQueSgpLmJpbmQoZSwgJ2xleScpKCkiLCAiJ2JhcmxleSciKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzg4OGY5MTFiZjFjNDRkMzg5ZDBhM2QyMTg0
NjgzNDg0YjZmOTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDEzIEBACitkZXNjcmlwdGlvbign
VGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4g
ZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5Jyk7CisKK3ZhciBkID0geworICB4IDogImZvbyIsCisg
IHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKKwordmFyIGUgPSB7
IHggOiAiYmFyIiB9OworCitzaG91bGRCZSgnZC55KCkuY2FsbChlKScsICInZm9vJyIpOworc2hv
dWxkQmUoJ2QueSgpLmFwcGx5KGUpJywgIidmb28nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWZhZDA3Njg0N2JmZjQ5Mjlm
NzgwNzc2NWY5OTBiNzM3M2NkZjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw3IEBA
CitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3Rv
cicpOworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitzaG91bGRUaHJv
dygnbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1NmExNTUz
MGYzNGNjMzA4YWNlNmIwZmFhNGNmZTdjMWU5NzhjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpz
CkBAIC0wLDAgKzEsNjcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0
aW9uIGxleGljYWwgYmluZCBvZiB0aGlzJyk7CisKK2Z1bmN0aW9uIERvZyhuYW1lKSB7CisgIHRo
aXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIp
OworICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIp
OworICB0aGlzLmdldE5hbWVOZXN0aW5nID0gKCkgPT4gKCkgPT4gKCkgPT4gdGhpcy5uYW1lOwor
fQorCit2YXIgZCA9IG5ldyBEb2coIk1heCIpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZSgpJywgJ2Qu
bmFtZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZUhhcmQoKScsICdkLm5hbWUnKTsKK3Nob3VsZEJl
KCdkLmdldE5hbWVOZXN0aW5nKCkoKSgpJywgJ2QubmFtZScpOworCit2YXIgb2JqID0geworICBu
YW1lICAgOiAnb2JqQ29kZScsCisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
KHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOworICB9Cit9OworCitzaG91
bGRCZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ29iakNvZGUtbmFtZS1jb3JyZWN0JyIp
Oworb2JqLm5hbWU9J25ld09iakNvZGUnOworc2hvdWxkQmUoIm9iai5tZXRob2QoKSgnY29ycmVj
dCcpIiwgIiduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCciKTsKKwordmFyIGRlZXBPYmogPSB7Cisg
IG5hbWUgOiAnd3JvbmdPYmpDb2RlJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1lICA6
J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2YWx1
ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9Oworc2hvdWxkQmUo
ImRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInaW50ZXJuYWxP
YmplY3QtbmFtZS1jb3JyZWN0JyIpOworCitkZWVwT2JqLmludGVybmFsT2JqZWN0Lm5hbWUgPSAn
bmV3SW50ZXJuYWxPYmplY3QnOworCitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5t
ZXRob2QoKSgnY29ycmVjdCcpIiwgIiduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNvcnJlY3QnIik7
CisKK3ZhciBmdW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMg
PSAoKSA9PiB0aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3RydWN0
b3IoKTsKKworc2hvdWxkQmUoImluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2UiLCAidHJ1ZSIp
OworCit2YXIgb3duZXJPYmogPSB7CisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworc2hvdWxkQmUoIm93bmVyT2JqLm1ldGhvZCgpKCkg
PT09IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFyIGZha2UgPSB7IHN0ZWFsIDogb3duZXJPYmou
bWV0aG9kKCkgfTsKK3Nob3VsZEJlKCJmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIiwgInRydWUi
KTsKKwordmFyIHJlYWwgPSB7IGJvcnJvdyA6IG93bmVyT2JqLm1ldGhvZCB9Oworc2hvdWxkQmUo
InJlYWwuYm9ycm93KCkoKSA9PT0gcmVhbCIsICJ0cnVlIik7CisKK3ZhciBhcnJvd0Z1bmN0aW9u
ID0geyB4IDogInJpZ2h0IiwgZ2V0QXJyb3dGdW5jdGlvbiA6IGZ1bmN0aW9uKCkgeyByZXR1cm4g
eiA9PiB0aGlzLnggKyB6OyB9fS5nZXRBcnJvd0Z1bmN0aW9uKCk7Cit2YXIgaG9zdE9iaiA9IHsg
eCA6ICJ3cm9uZyIsIGZ1bmMgOiBhcnJvd0Z1bmN0aW9uIH07CisKK3Nob3VsZEJlKCJhcnJvd0Z1
bmN0aW9uKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworc2hvdWxkQmUoImhvc3RPYmouZnVu
YygnLXRoaXMnKSIsICcicmlnaHQtdGhpcyInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1vdGhlcnMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5OTMxYzNkZWJjYjUwMjdhZDE0ZmQxNTQ3ZTVhYmEw
MzhiNGIxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyBJbnNwaXJlZCBieSBt
b3ppbGxhIHRlc3RzCitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBp
bnN0YW5jZW9mIGFuZCB0eXBlb2Ygb3BlcmF0b3JzJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0
aW9uID0gKCkgPT4ge307CisKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxl
QXJyb3dGdW5jdGlvbikiLCAiRnVuY3Rpb24ucHJvdG90eXBlIik7CitzaG91bGRCZSgic2ltcGxl
QXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRydWUiKTsKK3Nob3VsZEJlKCJz
aW1wbGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIiwgInRydWUiKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFmNThmYzY1MTNlZGFi
ZGUxZGQ2NTA3NDk2YWU4NjRiNjExZmZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsxLDI2IEBACitk
ZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRkeicpOworCit2
YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0
cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NUaGlzQmVmb3Jl
U3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVyKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIgaXNSZWZlcmVu
Y2VFcnJvciA9IGZhbHNlOwordHJ5IHsKKyAgICAgbmV3IEIodHJ1ZSk7Cit9IGNhdGNoIChlKSB7
CisgICAgaXNSZWZlcmVuY2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKK30K
Kworc2hvdWxkQmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOworCit2YXIgZSA9IG5ldyBC
KGZhbHNlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjJhYTI2OTBmZGE4MmM2YTMyOGVhMGFiYzM1NWQyZDhiZTNkNDhkNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5q
cwpAQCAtMCwwICsxLDEyIEBACit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIgYWYyID0gKGEpID0+
IHthICsgMX07CisKK3Nob3VsZEJlKCJ0eXBlb2YgYWYxID09PSAnZnVuY3Rpb24nIiwgInRydWUi
KTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitz
aG91bGRCZSgidHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rpb24nIiwgInRydWUiKTsKKworc2hv
dWxkQmUoInR5cGVvZiAoKGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyIsICJ0cnVlIik7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>