<?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>41146</bug_id>
          
          <creation_ts>2010-06-24 04:17:09 -0700</creation_ts>
          <short_desc>Implement the .dataset DOM property</short_desc>
          <delta_ts>2010-06-30 22:29:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32934</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">ml</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>ian</cc>
    
    <cc>japhet</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>tabatkins</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>webmaster</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242422</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">ml</who>
    <bug_when>2010-06-24 04:17:09 -0700</bug_when>
    <thetext>HTML5 specifies a mechanism for custom HTML attributes (prefixed with data-) and DOM APIs to easily access the value of such attributes.

http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data

WebKit should support the .dataset DOM property such that one could easily and cleanly mark HTML elements with custom attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242424</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">ml</who>
    <bug_when>2010-06-24 04:18:19 -0700</bug_when>
    <thetext>rdar://problem/8126069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244542</commentid>
    <comment_count>2</comment_count>
      <attachid>60068</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-29 16:08:51 -0700</bug_when>
    <thetext>Created attachment 60068
[WIP] Patch

I am throwing up my WIP patch so that I don&apos;t loose track of it.  Things that should be addressed before landing:

- The implementation of item() and contains() are unnecessarily slow and allocate an unnecessary String for the propertyNameMatchesAttributeName() check.
- I am not sure the behavior for an attribute called &quot;data-&quot; (nothing following the hyphen) is correct.  (With this patch, for &lt;div data-=&quot;value&quot;&gt;, div.dataset[&quot;&quot;] == &quot;value&quot;). This should also be included in the test.
- I have not included build system changes for all the ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244635</commentid>
    <comment_count>3</comment_count>
      <attachid>60087</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-29 23:17:26 -0700</bug_when>
    <thetext>Created attachment 60087
Updated patch

This is now ready for review.  propertyNameMatchesAttributeName() is still unnecessarily dumb, but this can be fixed in a follow up patch since it is merely an optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244638</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-29 23:30:20 -0700</bug_when>
    <thetext>Attachment 60087 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3313972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244650</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 00:16:19 -0700</bug_when>
    <thetext>Attachment 60087 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3381024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244657</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 00:39:19 -0700</bug_when>
    <thetext>Attachment 60087 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3372044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244791</commentid>
    <comment_count>7</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2010-06-30 08:44:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; - I am not sure the behavior for an attribute called &quot;data-&quot; (nothing following the hyphen) is correct.  (With this patch, for &lt;div data-=&quot;value&quot;&gt;, div.dataset[&quot;&quot;] == &quot;value&quot;). This should also be included in the test.

&quot;Custom data attributes&quot; (the ones that should be included in .dataset) must have at least one character after the hyphen.  First paragraph of the relevant section of the spec, http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#embedding-custom-non-visible-data

@data- isn&apos;t a valid custom data attribute, and so shouldn&apos;t be included.  It&apos;s just a random unstandardized attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244793</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-30 08:49:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Attachment 60087 [details] did not build on chromium:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/3372044

Nate, can you help Sam with the V8 bindings? This is cool stuff!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244798</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-30 09:04:26 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #2)
&gt; &gt; - I am not sure the behavior for an attribute called &quot;data-&quot; (nothing following the hyphen) is correct.  (With this patch, for &lt;div data-=&quot;value&quot;&gt;, div.dataset[&quot;&quot;] == &quot;value&quot;). This should also be included in the test.
&gt; 
&gt; &quot;Custom data attributes&quot; (the ones that should be included in .dataset) must have at least one character after the hyphen.  First paragraph of the relevant section of the spec, http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#embedding-custom-non-visible-data
&gt; 
&gt; @data- isn&apos;t a valid custom data attribute, and so shouldn&apos;t be included.  It&apos;s just a random unstandardized attribute.

Interesting. In the section on &quot;The algorithm for getting the list of name-value pairs&quot; just below that it states &quot;For each content attribute on the element whose first five characters are the string &quot;data-&quot; and whose remaining characters (if any)&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244800</commentid>
    <comment_count>10</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2010-06-30 09:05:45 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; - I am not sure the behavior for an attribute called &quot;data-&quot; (nothing following the hyphen) is correct.  (With this patch, for &lt;div data-=&quot;value&quot;&gt;, div.dataset[&quot;&quot;] == &quot;value&quot;). This should also be included in the test.
&gt; &gt; 
&gt; &gt; &quot;Custom data attributes&quot; (the ones that should be included in .dataset) must have at least one character after the hyphen.  First paragraph of the relevant section of the spec, http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#embedding-custom-non-visible-data
&gt; &gt; 
&gt; &gt; @data- isn&apos;t a valid custom data attribute, and so shouldn&apos;t be included.  It&apos;s just a random unstandardized attribute.
&gt; 
&gt; Interesting. In the section on &quot;The algorithm for getting the list of name-value pairs&quot; just below that it states &quot;For each content attribute on the element whose first five characters are the string &quot;data-&quot; and whose remaining characters (if any)&quot;.

Ah, that&apos;s a spec bug.  I&apos;ll get it corrected one way or the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244801</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-30 09:06:36 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; - I am not sure the behavior for an attribute called &quot;data-&quot; (nothing following the hyphen) is correct.  (With this patch, for &lt;div data-=&quot;value&quot;&gt;, div.dataset[&quot;&quot;] == &quot;value&quot;). This should also be included in the test.
&gt; &gt; &gt; 
&gt; &gt; &gt; &quot;Custom data attributes&quot; (the ones that should be included in .dataset) must have at least one character after the hyphen.  First paragraph of the relevant section of the spec, http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#embedding-custom-non-visible-data
&gt; &gt; &gt; 
&gt; &gt; &gt; @data- isn&apos;t a valid custom data attribute, and so shouldn&apos;t be included.  It&apos;s just a random unstandardized attribute.
&gt; &gt; 
&gt; &gt; Interesting. In the section on &quot;The algorithm for getting the list of name-value pairs&quot; just below that it states &quot;For each content attribute on the element whose first five characters are the string &quot;data-&quot; and whose remaining characters (if any)&quot;.
&gt; 
&gt; Ah, that&apos;s a spec bug.  I&apos;ll get it corrected one way or the other.

Thanks Tab.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244842</commentid>
    <comment_count>12</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-06-30 10:50:26 -0700</bug_when>
    <thetext>It&apos;s not a spec bug — don&apos;t confuse authoring conformance criteria with implementation conformance criteria. :-) Only parts of the spec that say what implementors must do are relevant here. Parts of the spec that say what is valid are irrelevant to implementors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244892</commentid>
    <comment_count>13</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-06-30 12:48:42 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; It&apos;s not a spec bug — don&apos;t confuse authoring conformance criteria with implementation conformance criteria. :-) Only parts of the spec that say what implementors must do are relevant here. Parts of the spec that say what is valid are irrelevant to implementors.

While it&apos;s not a direct contradiction, it seems kind of pointless to support &quot;data-&quot;[sic] in the implementation when it&apos;s not valid. Since this is a new feature, we could make what is supported closer to what is valid, unless there is a specific reason for this to be a special case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244894</commentid>
    <comment_count>14</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-06-30 12:49:57 -0700</bug_when>
    <thetext>On the other hand, I guess the &quot;XML-compatible&quot; and &quot;no capital letters&quot; constraints on validity are not ones that make sense to enforce in the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244898</commentid>
    <comment_count>15</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2010-06-30 12:54:53 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; On the other hand, I guess the &quot;XML-compatible&quot; and &quot;no capital letters&quot; constraints on validity are not ones that make sense to enforce in the implementation.

The spec *does* mandate enforcing the &quot;no capital letters&quot; thing, though.  I can understand if enforcing XML-compatibility is overkill, but if we&apos;re enforcing no-capital-letters, surely we can enforce must-have-at-least-one-letter too, and bring author conformance and impl conformance closer together.

I don&apos;t see a good reason for this gap, seeing as there&apos;s no legacy content forcing us to process &quot;data-&quot; attributes even though they&apos;re invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244899</commentid>
    <comment_count>16</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-06-30 12:56:16 -0700</bug_when>
    <thetext>I&apos;m happy to make it getting or setting the empty string throw a SYNTAX_ERR if you want, the only reason I hadn&apos;t done that was that it was easier to not bother. However, the total time now spent on discussing this exceeds the time it would have saved, so nevermind! :-) If you decide that&apos;s the way to go, just implement it that way, and mail the list saying you&apos;ve done so and asking for the spec to change. I&apos;ll just stick a new step at the top of each of the three algorithms that raises SYNTAX_ERR if the input key is &quot;&quot;.

The capital letter thing is enforced because of the mapping of capital letters to hyphen-lowercase, which we added recently based on author feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244901</commentid>
    <comment_count>17</comment_count>
      <attachid>60143</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-30 13:01:26 -0700</bug_when>
    <thetext>Created attachment 60143
Patch 3 - More tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244996</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-30 16:17:37 -0700</bug_when>
    <thetext>Landed in r62215.  I left it with the spec&apos;d behavior of allowing dataset[&quot;&quot;] to match data-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245011</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 16:50:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62215 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245094</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-30 22:19:02 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; http://trac.webkit.org/changeset/62215 might have broken Qt Linux Release

06/30/10 16:15:15 (6 hours ago)

This appears to have broken fast/dom/Window/window-postmessage-clone.html on every platform.

http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r62215%20(16637)/fast/dom/Window/window-postmessage-clone-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245095</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 22:20:02 -0700</bug_when>
    <thetext>I think this broke a post-message test?

http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r62222%20(16640)/fast/dom/Window/window-postmessage-clone-diffs.txt

--- /Volumes/Big/WebKit-BuildSlave/leopard-intel-debug-tests/build/layout-test-results/fast/dom/Window/window-postmessage-clone-expected.txt	2010-06-30 18:27:21.000000000 -0700
+++ /Volumes/Big/WebKit-BuildSlave/leopard-intel-debug-tests/build/layout-test-results/fast/dom/Window/window-postmessage-clone-actual.txt	2010-06-30 18:27:21.000000000 -0700
@@ -2,7 +2,7 @@
 PASS: &apos;postMessage(cyclicObject)&apos; threw TypeError: Cannot post cyclic structures.
 PASS: &apos;postMessage(cyclicArray)&apos; threw TypeError: Cannot post cyclic structures.
 PASS: &apos;postMessage(reallyDeepArray)&apos; threw RangeError: Maximum call stack size exceeded.
-PASS: &apos;postMessage(window)&apos; threw TypeError: Cannot post cyclic structures.
+PASS: &apos;postMessage(window)&apos; threw TypeError: Type error
 PASS: eventData is null of type object
 PASS: eventData is undefined of type undefined
 PASS: eventData is 1 of type number</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245098</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 22:20:29 -0700</bug_when>
    <thetext>(Oops, Adam had the same thought it seems.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245100</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-30 22:29:06 -0700</bug_when>
    <thetext>Landed new expectations in http://trac.webkit.org/changeset/62224

Insert nastygram about building and testing your patch before landing or at least watching the bots or listening to SheriffBot.  Please consider using the commit-queue to land your patches if you don&apos;t have time to build and run all the tests.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60068</attachid>
            <date>2010-06-29 16:08:51 -0700</date>
            <delta_ts>2010-06-29 23:17:26 -0700</delta_ts>
            <desc>[WIP] Patch</desc>
            <filename>dataset.diff</filename>
            <type>text/plain</type>
            <size>49400</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjE1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTEgQEAKKzIwMTAtMDYtMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTQ2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84MTI2MDY5PgorICAgICAgICBJbXBsZW1lbnQgdGhlIC5kYXRhc2V0
IERPTSBwcm9wZXJ0eQorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2RhdGFzZXQuaHRtbAorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01TdHJpbmdNYXBDdXN0b20uaDogQWRkZWQuCisgICAgICAgICogZG9tL0RPTVN0cmlu
Z01hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NU3RyaW5nTWFwOjp+RE9NU3Ry
aW5nTWFwKToKKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTWFwLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE9NU3RyaW5nTWFwOjpET01TdHJpbmdNYXApOgorICAgICAgICAqIGRvbS9ET01T
dHJpbmdNYXAuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRGF0YXNldERPTVN0cmluZ01hcC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEF0dHJpYnV0ZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydEF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjppc1ZhbGlkUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNl
dERPTVN0cmluZ01hcDo6cmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdN
YXA6OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmdldE5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6Oml0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6Y29udGFpbnMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhc2V0RE9NU3RyaW5nTWFwOjpkZWxldGVJdGVtKToKKyAgICAgICAgKiBkb20vRGF0YXNl
dERPTVN0cmluZ01hcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJp
bmdNYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0RE9NU3RyaW5nTWFwOjpE
YXRhc2V0RE9NU3RyaW5nTWFwKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDEwLTA2LTI5ICBaaGVueWFv
IE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6
a292LgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQCBET01f
Q0xBU1NFUyA9IFwKICAgICBET01QYXJzZXIgXAogICAgIERPTVNlbGVjdGlvbiBcCiAgICAgRE9N
U3RyaW5nTGlzdCBcCisgICAgRE9NU3RyaW5nTWFwIFwKICAgICBET01XaW5kb3cgXAogICAgIERh
dGFiYXNlIFwKICAgICBEYXRhYmFzZUNhbGxiYWNrIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIyOSw2ICszMjIyOSwxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cRGF0YXNldERPTVN0cmluZ01hcC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRGF0YXNldERPTVN0cmluZ01hcC5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERv
Y3VtZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0zMjI4NSw2ICszMjI5MywxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cRE9NU3RyaW5nTWFwLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxET01TdHJpbmdNYXAuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEeW5hbWljTm9kZUxpc3Qu
Y3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQyMTQwLDYgKzQyMTU2LDYyIEBACiAJCQkJ
CT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19J
bnRlcm5hbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+
DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkv
Pg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJ
CQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVN0cmluZ01hcEN1c3RvbS5oIg0KKwkJ
CQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTRE9NV2luZG93QmFzZS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDUxNSw2ICs0NTE1LDEzIEBACiAJCUJDNjBEQjQ5
MEQyQTNEMUUwMEI5OTE4RiAvKiBKU1hQYXRoRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBEQjQ3MEQyQTNEMUUwMEI5OTE4RiAv
KiBKU1hQYXRoRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJQkM2MERCNEEwRDJBM0QxRTAwQjk5MThG
IC8qIEpTWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDNjBEQjQ4MEQyQTNEMUUwMEI5OTE4RiAvKiBKU1hQYXRoRXhjZXB0aW9u
LmggKi87IH07CiAJCUJDNjBFRkI3MEYzM0EwRTcwMDgxMkE5MyAvKiBSZW5kZXJPYmplY3RDaGls
ZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM2MEVGQjYwRjMzQTBFNzAwODEyQTkzIC8qIFJlbmRlck9iamVjdENoaWxkTGlzdC5jcHAgKi87
IH07CisJCUJDNjQ2NDA5MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY0MDcxMUQ3RjMw
NDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5jcHAgKi87IH07CisJCUJDNjQ2NDBBMTFEN0YzMDQw
MDY0NTVCMCAvKiBET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDA4MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAu
aCAqLzsgfTsKKwkJQkM2NDY0MUMxMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2
NDFBMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggKi87IH07CisJCUJD
NjQ2NDFEMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDFCMTFEN0Y0MTYw
MDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCAqLzsgfTsKKwkJQkM2NDY0OTcxMUQ4
MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDk1MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RP
TVN0cmluZ01hcC5jcHAgKi87IH07CisJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RP
TVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM2NDY0OTYxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmggKi87IH07CisJ
CUJDNjQ2NDlDMTFEODIzOEMwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQ5QjExRDgy
MzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwICovOyB9OwogCQlCQzY0QjRD
QjBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyogQ2Fj
aGVkRm9udC5jcHAgKi87IH07CiAJCUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRG
b250LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0
QjRDQTBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5oICovOyB9OwogCQlCQzY0QjRENTBD
QjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NEI0Q0QwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0Zv
bnRGYWNlLmNwcCAqLzsgfTsKQEAgLTEwMDc1LDYgKzEwMDgyLDE0IEBACiAJCUJDNjBEQjQ3MEQy
QTNEMUUwMEI5OTE4RiAvKiBKU1hQYXRoRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTWFBhdGhFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzYwREI0ODBEMkEzRDFFMDBCOTkxOEYgLyogSlNYUGF0aEV4Y2VwdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hQYXRoRXhjZXB0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjBFRkI2MEYzM0EwRTcwMDgxMkE5MyAv
KiBSZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkM2NDY0MDcxMUQ3RjMwNDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01TdHJpbmdNYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzY0NjQwODExRDdGMzA0MDA2NDU1QjAgLyogRE9N
U3RyaW5nTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVN0cmluZ01h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzY0NjQxQTExRDdGNDE2MDA2NDU1
QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEYXRhc2V0RE9NU3RyaW5nTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDNjQ2NDFCMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFzZXRET01TdHJpbmdNYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzY0NjQ3OTExRDgwMENEMDA2NDU1QjAg
LyogRE9NU3RyaW5nTWFwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01TdHJpbmdNYXAu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzY0NjQ5NTExRDgyMzQ5MDA2NDU1
QjAgLyogSlNET01TdHJpbmdNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01TdHJpbmdNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzY0NjQ5NjExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01TdHJpbmdNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkM2NDY0OUIxMUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2NEI0QzkwQ0I0
Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FjaGVkRm9udC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNjRCNENBMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZvbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM2NEI0Q0QwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRGYWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTAxLDYgKzE0NTE2LDggQEAKIAkJCQk2NURGMzFFNDA5
RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5oICovLAogCQkJCUM1MTM3Q0Yw
MTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwICovLAogCQkJCUM1MTM3Q0Yx
MTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuaCAqLywKKwkJCQlCQzY0NjQ5NTEx
RDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuY3BwICovLAorCQkJCUJDNjQ2NDk2MTFE
ODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oICovLAogCQkJCTY1REYzMUU1MDlEMUND
NjAwMDBCRTMyNSAvKiBKU0VsZW1lbnQuY3BwICovLAogCQkJCTY1REYzMUU2MDlEMUNDNjAwMDBC
RTMyNSAvKiBKU0VsZW1lbnQuaCAqLywKIAkJCQk2NURGMzIyRDA5RDFEREJDMDAwQkUzMjUgLyog
SlNFbnRpdHkuY3BwICovLApAQCAtMTU2MjgsNiArMTU2NDUsNyBAQAogCQkJCTQ5QzdCQThDMTA0
MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkxQUMyMjYxNjBE
QjY5Rjc0MDA4OUI2NjkgLyogSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcCAqLywKIAkJ
CQkyRTA4ODhFNTExNDg4NEUyMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgKi8s
CisJCQkJQkM2NDY0OUIxMUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20u
Y3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3Rv
bS5oICovLAogCQkJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0b20u
Y3BwICovLApAQCAtMTY3NzksNiArMTY3OTcsMTEgQEAKIAkJCQlDNTU2MTBGMDExQTcwNEVCMDBC
ODJEMjcgLyogRE9NU3RyaW5nTGlzdC5jcHAgKi8sCiAJCQkJQzU0NDI3NDkxMUE1N0U3QTAwNjNB
NzQ5IC8qIERPTVN0cmluZ0xpc3QuaCAqLywKIAkJCQlDNTQ0Mjc0QTExQTU3RTdBMDA2M0E3NDkg
LyogRE9NU3RyaW5nTGlzdC5pZGwgKi8sCisJCQkJQkM2NDY0MDcxMUQ3RjMwNDAwNjQ1NUIwIC8q
IERPTVN0cmluZ01hcC5jcHAgKi8sCisJCQkJQkM2NDY0MDgxMUQ3RjMwNDAwNjQ1NUIwIC8qIERP
TVN0cmluZ01hcC5oICovLAorCQkJCUJDNjQ2NDc5MTFEODAwQ0QwMDY0NTVCMCAvKiBET01TdHJp
bmdNYXAuaWRsICovLAorCQkJCUJDNjQ2NDFCMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcCAqLywKKwkJCQlCQzY0NjQxQTExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNl
dERPTVN0cmluZ01hcC5oICovLAogCQkJCUJDN0ZBNjFFMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5h
bWljTm9kZUxpc3QuY3BwICovLAogCQkJCUJDN0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5h
bWljTm9kZUxpc3QuaCAqLywKIAkJCQk2NTUwQjY5OTA5OURGMDI3MDA5MEQ3ODEgLyogRWRpdGlu
Z1RleHQuY3BwICovLApAQCAtMTk2MjgsNiArMTk2NTEsOSBAQAogCQkJCUUxQkU1MTJFMENGNkM1
MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0
RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDNjQ2NDBBMTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDNjQ2NDFDMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzY0NjQ5ODExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJp
bmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE5NTgsNiArMjE5ODQsMTAgQEAKIAkJCQk5M0Yx
OUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVk
aXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzY0NjQwOTExRDdGMzA0MDA2NDU1QjAgLyog
RE9NU3RyaW5nTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDNjQ2NDFEMTFEN0Y0MTYwMDY0
NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDNjQ2
NDk3MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlCQzY0NjQ5QzExRDgyMzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTVN0cmluZ01hcC5oIgor
CisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAiRE9NU3RyaW5nTWFwLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0RP
TVN0cmluZ01hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTVN0cmluZ01hcCog
aW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBpbXBs
LT5jb250YWlucyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cit9CisK
K0pTVmFsdWUgSlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNE
T01TdHJpbmdNYXAqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU0RPTVN0cmluZ01hcCo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNPYmotPmltcGwo
KS0+aXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworfQorCit2
b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQor
eworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOworICAgIG1faW1wbC0+Z2V0TmFtZXMobmFtZXMp
OworICAgIHNpemVfdCBsZW5ndGggPSBuYW1lcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBzdHJpbmdUb1VTdHJpbmcobmFtZXNbaV0pKSk7CisKKyAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCitib29sIEpTRE9N
U3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK3sKKyAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBkZWxl
dGUgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBu
YW1lLgorICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxpbmcgY2Fu
R2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjaworICAgIC8v
IHRoZSBuYXRpdmUgcHJvcGVydHkgc2xvdHMgbWFudWFsbHkuCisgICAgUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgaWYgKGdldFN0YXRpY1ZhbHVlU2xvdDxKU0RPTVN0cmluZ01hcCwgQmFzZT4oZXhl
Yywgc19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzLT5wcm90b3R5cGUoKTsKKyAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBs
LT5kZWxldGVJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBlYyk7CisgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK3sK
KyAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBwdXQgaWYgdGhlIG9iamVjdCBkb2Vzbid0
IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBuYW1lLgorICAgIC8vIFNpbmNlIGhhc1By
b3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxpbmcgY2FuR2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJl
IGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjaworICAgIC8vIHRoZSBuYXRpdmUgcHJvcGVydHkgc2xv
dHMgbWFudWFsbHkuCisgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgaWYgKGdldFN0YXRpY1Zh
bHVlU2xvdDxKU0RPTVN0cmluZ01hcCwgQmFzZT4oZXhlYywgc19pbmZvLnByb3BIYXNoVGFibGUo
ZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzLT5wcm90b3R5cGUoKTsKKyAg
ICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+aGFzUHJv
cGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhl
eGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCktPnNldEl0ZW0o
aWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CisgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z01hcEN1c3RvbS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0
cmluZ01hcEN1c3RvbS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBKU0RPTVN0cmluZ01hcEN1c3RvbV9oCisjZGVmaW5lIEpTRE9NU3RyaW5nTWFw
Q3VzdG9tX2gKKworI2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwLmgiCisKKyNlbmRpZiAvLyBKU0RP
TVN0cmluZ01hcEN1c3RvbV9oCkluZGV4OiBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVN0cmlu
Z01hcC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RPTVN0cmluZ01hcDo6fkRPTVN0cmlu
Z01hcCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9t
L0RPTVN0cmluZ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVN0cmluZ01hcF9oCisj
ZGVmaW5lIERPTVN0cmluZ01hcF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIERPTVN0cmluZ01hcCA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE9NU3RyaW5nTWFwKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcmVmKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBnZXROYW1lcyhWZWN0b3I8U3RyaW5nPiYpID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBpdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
b250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXRl
bShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgRE9NU3RyaW5nTWFwKCkKKyAg
ICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9N
U3RyaW5nTWFwX2gKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvZG9tL0RPTVN0cmluZ01hcC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBIYXNO
YW1lR2V0dGVyLAorICAgICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwKKyAgICAgICAgQ3VzdG9t
R2V0UHJvcGVydHlOYW1lcywKKyAgICAgICAgRGVsZWdhdGluZ1B1dEZ1bmN0aW9uLAorICAgIF0g
RE9NU3RyaW5nTWFwIHsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9EYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5n
TWFwLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCisKKyNpbmNsdWRl
ICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNU
eXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNWYWxpZEF0dHJp
YnV0ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmICghbmFtZS5zdGFydHNXaXRo
KCJkYXRhLSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVycyA9IG5hbWUuY2hhcmFjdGVycygpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUu
bGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gNTsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBTdHJpbmcg
Y29udmVydEF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgVmVjdG9yPFVDaGFyPiBuZXdTdHJpbmdCdWZmZXI7CisKKyAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycyA9IG5hbWUuY2hhcmFjdGVycygpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5h
bWUubGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gNTsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldICE9ICctJykKKyAgICAgICAgICAgIG5ld1N0cmlu
Z0J1ZmZlci5hcHBlbmQoY2hhcmFjdGVyc1tpXSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgaWYgKChpICsgMSA8IGxlbmd0aCkgJiYgaXNBU0NJSUxvd2VyKGNoYXJhY3RlcnNbaSArIDFd
KSkgeworICAgICAgICAgICAgICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQodG9BU0NJSVVwcGVy
KGNoYXJhY3RlcnNbaSArIDFdKSk7CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJz
W2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KG5ld1N0
cmluZ0J1ZmZlcik7Cit9CisKK3N0YXRpYyBib29sIHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1
dGVOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0
ZU5hbWUpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFibGUgdG8gbWF0Y2ggd2l0
aG91dCBjcmVhdGluZyBhIG5ldyBzdHJpbmcuCisKKyAgICBpZiAoIWlzVmFsaWRBdHRyaWJ1dGVO
YW1lKGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcg
Y29udmVydGVkTmFtZSA9IGNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eU5hbWUoYXR0cmli
dXRlTmFtZSk7CisgICAgcmV0dXJuIChjb252ZXJ0ZWROYW1lID09IHByb3BlcnR5TmFtZSk7Cit9
CisKK3N0YXRpYyBib29sIGlzVmFsaWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gbmFtZS5jaGFyYWN0ZXJzKCk7CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJy0nICYm
IChpICsgMSA8IGxlbmd0aCkgJiYgaXNBU0NJSUxvd2VyKGNoYXJhY3RlcnNbaSArIDFdKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBTdHJpbmcgY29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFtZShjb25zdCBTdHJp
bmcmIG5hbWUpCit7CisgICAgVmVjdG9yPFVDaGFyPiBuZXdTdHJpbmdCdWZmZXI7CisKKyAgICBu
ZXdTdHJpbmdCdWZmZXIuYXBwZW5kKCdkJyk7CisgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCgn
YScpOworICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQoJ3QnKTsKKyAgICBuZXdTdHJpbmdCdWZm
ZXIuYXBwZW5kKCdhJyk7CisgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCgnLScpOworCisgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBuYW1lLmNoYXJhY3RlcnMoKTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSBuYW1lLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSB7
CisgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBu
ZXdTdHJpbmdCdWZmZXIuYXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJz
W2ldKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChuZXdTdHJpbmdCdWZmZXIp
OworfQorCisKK3ZvaWQgRGF0YXNldERPTVN0cmluZ01hcDo6cmVmKCkKK3sKKyAgICBtX2VsZW1l
bnQtPnJlZigpOworfQorCit2b2lkIERhdGFzZXRET01TdHJpbmdNYXA6OmRlcmVmKCkKK3sKKyAg
ICBtX2VsZW1lbnQtPmRlcmVmKCk7Cit9CisKK3ZvaWQgRGF0YXNldERPTVN0cmluZ01hcDo6Z2V0
TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5hbWVzKQoreworICAgIE5hbWVkTm9kZU1hcCogYXR0cmli
dXRlTWFwID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKHRydWUpOworICAgIGlmIChhdHRyaWJ1dGVN
YXApIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShp
KTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkQXR0cmlidXRlTmFtZShhdHRyaWJ1dGUtPmxvY2Fs
TmFtZSgpKSkKKyAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoY29udmVydEF0dHJpYnV0ZU5h
bWVUb1Byb3BlcnR5TmFtZShhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK1N0cmluZyBEYXRhc2V0RE9NU3RyaW5nTWFwOjppdGVtKGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IG1fZWxlbWVudC0+YXR0
cmlidXRlcyh0cnVlKTsKKyAgICBpZiAoYXR0cmlidXRlTWFwKSB7CisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGF0dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBhdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBpZiAocHJv
cGVydHlOYW1lTWF0Y2hlc0F0dHJpYnV0ZU5hbWUobmFtZSwgYXR0cmlidXRlLT5sb2NhbE5hbWUo
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBEYXRhc2V0RE9NU3Ry
aW5nTWFwOjpjb250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgTmFtZWROb2RlTWFw
KiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXModHJ1ZSk7CisgICAgaWYgKGF0
dHJpYnV0ZU1hcCkgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVNYXAtPmxl
bmd0aCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1
dGVJdGVtKGkpOworICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVO
YW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBE
YXRhc2V0RE9NU3RyaW5nTWFwOjpzZXRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFpc1ZhbGlkUHJvcGVy
dHlOYW1lKG5hbWUpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNvbnZlcnRQcm9wZXJ0eU5h
bWVUb0F0dHJpYnV0ZU5hbWUobmFtZSksIHZhbHVlLCBlYyk7Cit9CisKK3ZvaWQgRGF0YXNldERP
TVN0cmluZ01hcDo6ZGVsZXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmICghaXNWYWxpZFByb3BlcnR5TmFtZShuYW1lKSkgeworICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFeGNlcHRpb25D
b2RlIGR1bW15OworICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZlcnRQcm9wZXJ0
eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFtZSksIGR1bW15KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGF0YXNldERPTVN0cmluZ01hcF9oCisjZGVm
aW5lIERhdGFzZXRET01TdHJpbmdNYXBfaAorCisjaW5jbHVkZSAiRE9NU3RyaW5nTWFwLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBFbGVtZW50OworCitjbGFzcyBEYXRhc2V0RE9NU3RyaW5nTWFwIDogcHVibGljIERPTVN0cmlu
Z01hcCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RGF0YXNldERPTVN0cmluZ01h
cD4gY3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IERh
dGFzZXRET01TdHJpbmdNYXAoZWxlbWVudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJl
ZigpOworICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpOworCisgICAgdmlydHVhbCB2b2lkIGdldE5h
bWVzKFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdmlydHVhbCBTdHJpbmcgaXRlbShjb25zdCBTdHJp
bmcmIG5hbWUpOworICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJdGVt
KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIERh
dGFzZXRET01TdHJpbmdNYXAoRWxlbWVudCogZWxlbWVudCkKKyAgICAgICAgOiBtX2VsZW1lbnQo
ZWxlbWVudCkKKyAgICB7CisgICAgfQorCisgICAgRWxlbWVudCogbV9lbGVtZW50OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRGF0YXNldERPTVN0cmluZ01hcF9o
CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2Vs
ZWN0b3IuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdExp
c3QuaCIKKyNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudFJh
cmVEYXRhLmgiCkBAIC0xNTIwLDYgKzE1MjEsMTQgQEAgYm9vbCBFbGVtZW50Ojp3ZWJraXRNYXRj
aGVzU2VsZWN0b3IoY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorRE9NU3RyaW5nTWFwKiBF
bGVtZW50OjpkYXRhc2V0KCkKK3sKKyAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbnN1cmVS
YXJlRGF0YSgpOworICAgIGlmICghZGF0YS0+bV9kYXRhc2V0RE9NU3RyaW5nTWFwKQorICAgICAg
ICBkYXRhLT5tX2RhdGFzZXRET01TdHJpbmdNYXAgPSBEYXRhc2V0RE9NU3RyaW5nTWFwOjpjcmVh
dGUodGhpcyk7CisgICAgcmV0dXJuIGRhdGEtPm1fZGF0YXNldERPTVN0cmluZ01hcC5nZXQoKTsK
K30KKwogS1VSTCBFbGVtZW50OjpnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3QKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECkluZGV4OiBXZWJDb3JlL2RvbS9F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA2
MjE0MCkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdHRyaWJ1dGU7CiBjbGFzcyBDbGll
bnRSZWN0OwogY2xhc3MgQ2xpZW50UmVjdExpc3Q7CitjbGFzcyBET01TdHJpbmdNYXA7CiBjbGFz
cyBFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBJbnRTaXplOwogCkBAIC0yNjIsNiArMjYzLDggQEAg
cHVibGljOgogCiAgICAgYm9vbCB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBz
ZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIERPTVN0cmluZ01hcCogZGF0YXNldCgp
OworCiAgICAgdmlydHVhbCBib29sIGlzRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHlGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gNjIxNDAp
CisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTks
OSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIC8vIEhUTUwgNQogICAgICAgICBOb2RlTGlzdCBn
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGluIERPTVN0cmluZyBuYW1lKTsKIAorI2lmIGRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTWFwIGRhdGFzZXQ7CisjZW5kaWYKICAgICAgICAgLy8g
Tm9kZVNlbGVjdG9yIC0gU2VsZWN0b3IgQVBJCiAgICAgICAgIEVsZW1lbnQgcXVlcnlTZWxlY3Rv
cihpbiBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3Jl
L2RvbS9FbGVtZW50UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsMTAgQEAK
ICNpZm5kZWYgRWxlbWVudFJhcmVEYXRhX2gKICNkZWZpbmUgRWxlbWVudFJhcmVEYXRhX2gKIAor
I2luY2x1ZGUgIkRhdGFzZXRET01TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgSW50U2l6
ZSBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2Nv
bXB1dGVkU3R5bGU7CisKKyAgICBPd25QdHI8RGF0YXNldERPTVN0cmluZ01hcD4gbV9kYXRhc2V0
RE9NU3RyaW5nTWFwOwogfTsKIAogaW5saW5lIEludFNpemUgZGVmYXVsdE1pbmltdW1TaXplRm9y
UmVzaXppbmcoKQpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDYyMTQwKQorKysgV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw2ICs0NTksOCBAQCBt
b2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD0zRF9DQU5WQVMs
RW5hYmxlZEF0UnVudGltZV0gV2ViR0xSZW5kZXJpbmdDb250ZXh0Q29uc3RydWN0b3IgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OwogICAgICAgICBhdHRyaWJ1dGUgVGV4dE1ldHJpY3NDb25zdHJ1Y3Rv
ciBUZXh0TWV0cmljczsKIAorICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nTWFwQ29uc3RydWN0
b3IgRE9NU3RyaW5nTWFwOworCiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyLENv
bmRpdGlvbmFsPTNEX0NBTlZBUyxFbmFibGVkQXRSdW50aW1lXSBBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yIEFycmF5QnVmZmVyOyAvLyBVc2FibGUgd2l0aCBuZXcgb3BlcmF0b3IKICAgICAgICAgYXR0
cmlidXRlIFtKU0NDdXN0b21HZXR0ZXIsQ29uZGl0aW9uYWw9M0RfQ0FOVkFTLEVuYWJsZWRBdFJ1
bnRpbWVdIEludDhBcnJheUNvbnN0cnVjdG9yIEludDhBcnJheTsgLy8gVXNhYmxlIHdpdGggbmV3
IG9wZXJhdG9yCiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyLENvbmRpdGlvbmFs
PTNEX0NBTlZBUyxFbmFibGVkQXRSdW50aW1lXSBVaW50OEFycmF5Q29uc3RydWN0b3IgVWludDhB
cnJheTsgLy8gVXNhYmxlIHdpdGggbmV3IG9wZXJhdG9yCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjE1
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDEwLTA2LTI5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBjaGFuZ2VzIGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNDYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzgxMjYwNjk+CisgICAgICAgIEltcGxlbWVudCB0aGUgLmRhdGFzZXQgRE9N
IHByb3BlcnR5CisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHkt
ZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL2RhdGFzZXQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9kYXRhc2V0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RhdGFzZXQuanM6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NjcmlwdC10ZXN0cy9kb21MaXN0RW51bWVyYXRpb24uanM6CisgICAgICAg
ICogZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wNi0y
OSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERp
bWl0cmkgR2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RhdGFzZXQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RhdGFzZXQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZGF0YXNldC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKK1RoaXMgdGVzdHMgZWxlbWVu
dC5kYXRhc2V0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0R2V0
KCdkYXRhLWZvbycsICdmb28nKSBpcyB0cnVlCitQQVNTIHRlc3RHZXQoJ2RhdGEtZm9vLWJhcics
ICdmb29CYXInKSBpcyB0cnVlCitQQVNTIHRlc3RHZXQoJ2RhdGEtLScsICctJykgaXMgdHJ1ZQor
UEFTUyB0ZXN0R2V0KCdkYXRhLS1mb28nLCAnRm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0R2V0KCdk
YXRhLS0tZm9vJywgJy1Gb28nKSBpcyB0cnVlCitQQVNTIHRlc3RHZXQoJ2RhdGEtRm9vJywgJ2Zv
bycpIGlzIHRydWUKKworUEFTUyBtYXRjaGVzTm90aGluZ0luRGF0YXNldCgnZGF0YUZvbycpIGlz
IHRydWUKKworUEFTUyB0ZXN0U2V0KCdmb28nLCAnZGF0YS1mb28nKSBpcyB0cnVlCitQQVNTIHRl
c3RTZXQoJ2Zvb0JhcicsICdkYXRhLWZvby1iYXInKSBpcyB0cnVlCitQQVNTIHRlc3RTZXQoJy0n
LCAnZGF0YS0tJykgaXMgdHJ1ZQorUEFTUyB0ZXN0U2V0KCdGb28nLCAnZGF0YS0tZm9vJykgaXMg
dHJ1ZQorUEFTUyB0ZXN0U2V0KCctRm9vJywgJ2RhdGEtLS1mb28nKSBpcyB0cnVlCisKK1BBU1Mg
dGVzdFNldCgnLWZvbycsICdkdW1teScpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1MgdGVzdFNldCgnLcODwrEnLCAnZHVtbXknKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1
LgorCitQQVNTIHRlc3REZWxldGUoJ2RhdGEtZm9vJywgJ2ZvbycpIGlzIHRydWUKK1BBU1MgdGVz
dERlbGV0ZSgnZGF0YS1mb28tYmFyJywgJ2Zvb0JhcicpIGlzIHRydWUKK1BBU1MgdGVzdERlbGV0
ZSgnZGF0YS0tJywgJy0nKSBpcyB0cnVlCitQQVNTIHRlc3REZWxldGUoJ2RhdGEtLWZvbycsICdG
b28nKSBpcyB0cnVlCitQQVNTIHRlc3REZWxldGUoJ2RhdGEtLS1mb28nLCAnLUZvbycpIGlzIHRy
dWUKKworUEFTUyB0ZXN0RGVsZXRlKCdkdW1teScsICctZm9vJykgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorCitQQVNTIHRlc3RGb3JJbihbJ2Rh
dGEtZm9vJywgJ2RhdGEtYmFyJywgJ2RhdGEtYmF6J10pIGlzIDMKK1BBU1MgdGVzdEZvckluKFsn
ZGF0YS1mb28nLCAnZGF0YS1iYXInLCAnZGF0YUZvbyddKSBpcyAyCitQQVNTIHRlc3RGb3JJbihb
J2RhdGEtZm9vJywgJ2RhdGEtYmFyJywgJ3N0eWxlJ10pIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9kYXRhc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZGF0
YXNldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZGF0YXNldC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RhdGFzZXQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0
aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21M
aXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MjE0MCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAgUEFTUyByZXN1bHRBcnJheVsyXS5pIGlzICcyJwogUEFTUyBy
ZXN1bHRBcnJheVsyXS5pdGVtIGlzIG5hbWVkTm9kZU1hcC5pdGVtKDIpCiAKIFtvYmplY3QgSFRN
TEZvcm1FbGVtZW50XQotUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTM1CitQQVNTIHJlc3Vs
dEFycmF5Lmxlbmd0aCBpcyAxMzYKIFBBU1MgcmVzdWx0QXJyYXlbMF0uaSBpcyAnMCcKIFBBU1Mg
cmVzdWx0QXJyYXlbMF0uaXRlbSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2Vs
ZWN0JylbMF0KIFBBU1MgcmVzdWx0QXJyYXlbMV0uaSBpcyAnMScKQEAgLTQxLDcgKzQxLDcgQEAg
UEFTUyByZXN1bHRBcnJheVsyXS5pIGlzICcyJwogUEFTUyByZXN1bHRBcnJheVsyXS5pdGVtIGlz
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKVsyXQogCiBbb2JqZWN0IEhU
TUxTZWxlY3RFbGVtZW50XQotUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTQzCitQQVNTIHJl
c3VsdEFycmF5Lmxlbmd0aCBpcyAxNDQKIFBBU1MgcmVzdWx0QXJyYXlbMF0uaSBpcyAnMCcKIFBB
U1MgcmVzdWx0QXJyYXlbMF0uaXRlbSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
b3B0aW9uJylbMF0KIFBBU1MgcmVzdWx0QXJyYXlbMV0uaSBpcyAnMScKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDYyMTQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90
eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3
NCw5IEBAIFBBU1MgRE9NQXBwbGljYXRpb25DYWNoZVByb3RvdHlwZSBmcm9tIGkKIFBBU1MgRE9N
SW1wbGVtZW50YXRpb24gZnJvbSBpbm5lci5kb2N1bWVudC5mb3Jtcy50ZXN0Rm9ybS4wLm93bmVy
RG9jdW1lbnQuaW1wbGVtZW50YXRpb24KIFBBU1MgRE9NSW1wbGVtZW50YXRpb25Db25zdHJ1Y3Rv
ciBmcm9tIGlubmVyLmRvY3VtZW50LmZvcm1zLnRlc3RGb3JtLjAub3duZXJEb2N1bWVudC5pbXBs
ZW1lbnRhdGlvbi5jb25zdHJ1Y3RvcgogUEFTUyBET01JbXBsZW1lbnRhdGlvblByb3RvdHlwZSBm
cm9tIGlubmVyLmRvY3VtZW50LmZvcm1zLnRlc3RGb3JtLjAub3duZXJEb2N1bWVudC5pbXBsZW1l
bnRhdGlvbi5fX3Byb3RvX18KK1BBU1MgRE9NU3RyaW5nTWFwIGZyb20gaW5uZXIuZG9jdW1lbnQu
Zm9ybXMudGVzdEZvcm0uMC5kYXRhc2V0CitQQVNTIERPTVN0cmluZ01hcENvbnN0cnVjdG9yIGZy
b20gaW5uZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5kYXRhc2V0LmNvbnN0cnVjdG9yCitQ
QVNTIERPTVN0cmluZ01hcFByb3RvdHlwZSBmcm9tIGlubmVyLmRvY3VtZW50LmZvcm1zLnRlc3RG
b3JtLjAuZGF0YXNldC5fX3Byb3RvX18KIFBBU1MgRE9NV2luZG93IGZyb20gaW5uZXIKIFBBU1Mg
RE9NV2luZG93UHJvdG90eXBlIGZyb20gaW5uZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5v
d25lckRvY3VtZW50LmRlZmF1bHRWaWV3Ll9fcHJvdG9fXwogUEFTUyBEb2N1bWVudFByb3RvdHlw
ZSBmcm9tIGlubmVyLmRvY3VtZW50LmZvcm1zLnRlc3RGb3JtLjAub3duZXJEb2N1bWVudC5fX3By
b3RvX18uX19wcm90b19fCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5o
ZXJpdGFuY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYyMTQwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsOCBAQCBQQVNTIGlubmVyLkRPTVBhcnNlci5pc0lu
bmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuRE9NUGFyc2VyLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMg
dHJ1ZQogUEFTUyBpbm5lci5ET01TdHJpbmdMaXN0LmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5l
ci5ET01TdHJpbmdMaXN0LmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5E
T01TdHJpbmdNYXAuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkRPTVN0cmluZ01hcC5jb25z
dHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuRG9jdW1lbnQuaXNJbm5lciBpcyB0
cnVlCiBQQVNTIGlubmVyLkRvY3VtZW50LmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFT
UyBpbm5lci5Eb2N1bWVudEZyYWdtZW50LmlzSW5uZXIgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA2MjE0MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU1OCw2
ICs1NTgsOCBAQCB3aW5kb3cuRE9NU3RyaW5nTGlzdCBbb2JqZWN0IERPTVN0cmluZ0xpCiB3aW5k
b3cuRE9NU3RyaW5nTGlzdC5wcm90b3R5cGUgW29iamVjdCBET01TdHJpbmdMaXN0UHJvdG90eXBl
XQogd2luZG93LkRPTVN0cmluZ0xpc3QucHJvdG90eXBlLmNvbnRhaW5zIFtmdW5jdGlvbl0KIHdp
bmRvdy5ET01TdHJpbmdMaXN0LnByb3RvdHlwZS5pdGVtIFtmdW5jdGlvbl0KK3dpbmRvdy5ET01T
dHJpbmdNYXAgW29iamVjdCBET01TdHJpbmdNYXBDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5ET01TdHJp
bmdNYXAucHJvdG90eXBlIFtvYmplY3QgRE9NU3RyaW5nTWFwUHJvdG90eXBlXQogd2luZG93LkRv
Y3VtZW50IFtvYmplY3QgRG9jdW1lbnRDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5Eb2N1bWVudC5wcm90
b3R5cGUgW29iamVjdCBEb2N1bWVudFByb3RvdHlwZV0KIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5
cGUuQVRUUklCVVRFX05PREUgW251bWJlcl0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRv
cnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MjE0MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXAKIFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2lu
ZG93LCAnRE9NSW1wbGVtZW50YXRpb24nKSBpcyAnb2JqZWN0JwogUEFTUyB0eXBlb2YgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdET01QYXJzZXInKSBpcyAnb2JqZWN0
JwogUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdE
T01TdHJpbmdMaXN0JykgaXMgJ29iamVjdCcKK1BBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnRE9NU3RyaW5nTWFwJykgaXMgJ29iamVjdCcKIFBBU1Mg
dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnRGF0ZScpIGlz
ICdvYmplY3QnCiBQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdp
bmRvdywgJ0RvY3VtZW50JykgaXMgJ29iamVjdCcKIFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnRG9jdW1lbnRGcmFnbWVudCcpIGlzICdvYmplY3Qn
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvZGF0YXNldC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvZGF0YXNldC5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kYXRhc2V0
LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyBlbGVtZW50LmRhdGFzZXQuIik7CisKK2Z1bmN0aW9uIHRlc3RHZXQoYXR0ciwgZXhwZWN0ZWQp
Cit7CisgICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkLnNl
dEF0dHJpYnV0ZShhdHRyLCAidmFsdWUiKTsKKyAgICByZXR1cm4gZC5kYXRhc2V0W2V4cGVjdGVk
XSA9PSAidmFsdWUiOworfQorCitzaG91bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtZm9vJywgJ2Zv
bycpIik7CitzaG91bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtZm9vLWJhcicsICdmb29CYXInKSIp
Oworc2hvdWxkQmVUcnVlKCJ0ZXN0R2V0KCdkYXRhLS0nLCAnLScpIik7CitzaG91bGRCZVRydWUo
InRlc3RHZXQoJ2RhdGEtLWZvbycsICdGb28nKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0R2V0KCdk
YXRhLS0tZm9vJywgJy1Gb28nKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0R2V0KCdkYXRhLUZvbycs
ICdmb28nKSIpOyAvLyBIVE1MIGxvd2VyY2FzZXMgYWxsIGF0dHJpYnV0ZXMuCisKK2RlYnVnKCIi
KTsKKworZnVuY3Rpb24gbWF0Y2hlc05vdGhpbmdJbkRhdGFzZXQoYXR0cikKK3sKKyAgICB2YXIg
ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGQuc2V0QXR0cmlidXRlKGF0
dHIsICJ2YWx1ZSIpOworCisgICAgdmFyIGNvdW50ID0gMDsKKyAgICBmb3IgKHZhciBpdGVtIGlu
IGQuZGF0YXNldCkKKyAgICAgICAgY291bnQrKzsKKyAgICByZXR1cm4gY291bnQgPT0gMDsKK30K
K3Nob3VsZEJlVHJ1ZSgibWF0Y2hlc05vdGhpbmdJbkRhdGFzZXQoJ2RhdGFGb28nKSIpOworZGVi
dWcoIiIpOworCitmdW5jdGlvbiB0ZXN0U2V0KHByb3AsIGV4cGVjdGVkKQoreworICAgIHZhciBk
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZC5kYXRhc2V0W3Byb3BdID0g
InZhbHVlIjsKKyAgICByZXR1cm4gZC5nZXRBdHRyaWJ1dGUoZXhwZWN0ZWQpID09ICJ2YWx1ZSI7
Cit9CisKK3Nob3VsZEJlVHJ1ZSgidGVzdFNldCgnZm9vJywgJ2RhdGEtZm9vJykiKTsKK3Nob3Vs
ZEJlVHJ1ZSgidGVzdFNldCgnZm9vQmFyJywgJ2RhdGEtZm9vLWJhcicpIik7CitzaG91bGRCZVRy
dWUoInRlc3RTZXQoJy0nLCAnZGF0YS0tJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNldCgnRm9v
JywgJ2RhdGEtLWZvbycpIik7CitzaG91bGRCZVRydWUoInRlc3RTZXQoJy1Gb28nLCAnZGF0YS0t
LWZvbycpIik7CitkZWJ1ZygiIik7CisKK3Nob3VsZFRocm93KCJ0ZXN0U2V0KCctZm9vJywgJ2R1
bW15JykiLCAiJ0Vycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyJyIpOworc2hvdWxk
VGhyb3coInRlc3RTZXQoJy3DsScsICdkdW1teScpIiwgIidFcnJvcjogSU5WQUxJRF9DSEFSQUNU
RVJfRVJSOiBET00gRXhjZXB0aW9uIDUnIik7CitkZWJ1ZygiIik7CisKK2Z1bmN0aW9uIHRlc3RE
ZWxldGUoYXR0ciwgcHJvcCkKK3sKKyAgICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGQuc2V0QXR0cmlidXRlKGF0dHIsICJ2YWx1ZSIpOworICAgIGRlbGV0ZSBk
LmRhdGFzZXRbcHJvcF07CisgICAgcmV0dXJuIGQuZ2V0QXR0cmlidXRlKGF0dHIpICE9ICJ2YWx1
ZSI7Cit9CisKK3Nob3VsZEJlVHJ1ZSgidGVzdERlbGV0ZSgnZGF0YS1mb28nLCAnZm9vJykiKTsK
K3Nob3VsZEJlVHJ1ZSgidGVzdERlbGV0ZSgnZGF0YS1mb28tYmFyJywgJ2Zvb0JhcicpIik7Citz
aG91bGRCZVRydWUoInRlc3REZWxldGUoJ2RhdGEtLScsICctJykiKTsKK3Nob3VsZEJlVHJ1ZSgi
dGVzdERlbGV0ZSgnZGF0YS0tZm9vJywgJ0ZvbycpIik7CitzaG91bGRCZVRydWUoInRlc3REZWxl
dGUoJ2RhdGEtLS1mb28nLCAnLUZvbycpIik7CitkZWJ1ZygiIik7CisKK3Nob3VsZFRocm93KCJ0
ZXN0RGVsZXRlKCdkdW1teScsICctZm9vJykiLCAiJ0Vycm9yOiBTWU5UQVhfRVJSOiBET00gRXhj
ZXB0aW9uIDEyJyIpOworZGVidWcoIiIpOworCitmdW5jdGlvbiB0ZXN0Rm9ySW4oYXJyYXkpCit7
CisgICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGQuc2V0QXR0cmlidXRl
KGFycmF5W2ldLCAidmFsdWUiKTsKKyAgICB9CisKKyAgICB2YXIgY291bnQgPSAwOworICAgIGZv
ciAodmFyIGl0ZW0gaW4gZC5kYXRhc2V0KQorICAgICAgICBjb3VudCsrOworCisgICAgcmV0dXJu
IGNvdW50OworfQorCitzaG91bGRCZSgidGVzdEZvckluKFsnZGF0YS1mb28nLCAnZGF0YS1iYXIn
LCAnZGF0YS1iYXonXSkiLCAiMyIpOworc2hvdWxkQmUoInRlc3RGb3JJbihbJ2RhdGEtZm9vJywg
J2RhdGEtYmFyJywgJ2RhdGFGb28nXSkiLCAiMiIpOworc2hvdWxkQmUoInRlc3RGb3JJbihbJ2Rh
dGEtZm9vJywgJ2RhdGEtYmFyJywgJ3N0eWxlJ10pIiwgIjIiKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMv
ZG9tTGlzdEVudW1lcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3NjcmlwdC10ZXN0cy9kb21MaXN0RW51bWVyYXRpb24uanMJKHJldmlzaW9uIDYyMTQwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RvbUxpc3RFbnVtZXJhdGlvbi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHNob3VsZEJlKCJyZXN1bHRBcnJheVsy
XS5pdGVtIiwgIm5hbWVkTm8KIC8vIEhUTUxGb3JtRWxlbWVudAogdmFyIGh0bWxGb3JtRWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJylbMF07CiByZXN1bHRBcnJh
eSA9IGl0ZXJhdGVMaXN0KGh0bWxGb3JtRWxlbWVudCk7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXku
bGVuZ3RoIiwgIjEzNSIpOworc2hvdWxkQmUoInJlc3VsdEFycmF5Lmxlbmd0aCIsICIxMzYiKTsK
IHNob3VsZEJlKCJyZXN1bHRBcnJheVswXS5pIiwgIicwJyIpOwogc2hvdWxkQmUoInJlc3VsdEFy
cmF5WzBdLml0ZW0iLCAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBd
Iik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaSIsICInMSciKTsKQEAgLTE0MSw3ICsxNDEs
NyBAQCBzaG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaXRlbSIsICJkb2N1bWVuCiAvLyBIVE1MU2Vs
ZWN0RWxlbWVudAogdmFyIGh0bWxTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3NlbGVjdCcpWzBdOwogcmVzdWx0QXJyYXkgPSBpdGVyYXRlTGlzdChodG1sU2Vs
ZWN0RWxlbWVudCk7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXkubGVuZ3RoIiwgIjE0MyIpOworc2hv
dWxkQmUoInJlc3VsdEFycmF5Lmxlbmd0aCIsICIxNDQiKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJh
eVswXS5pIiwgIicwJyIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLml0ZW0iLCAiZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29wdGlvbicpWzBdIik7CiBzaG91bGRCZSgicmVzdWx0
QXJyYXlbMV0uaSIsICInMSciKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjIxNDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIFBBU1MgRE9NRXhjZXB0aW9uLnRvU3RyaW5nKCkg
aXMgJ1tvYmplY3QKIFBBU1MgRE9NSW1wbGVtZW50YXRpb24udG9TdHJpbmcoKSBpcyAnW29iamVj
dCBET01JbXBsZW1lbnRhdGlvbkNvbnN0cnVjdG9yXScKIFBBU1MgRE9NUGFyc2VyLnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3QgRE9NUGFyc2VyQ29uc3RydWN0b3JdJwogUEFTUyBET01TdHJpbmdMaXN0
LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRE9NU3RyaW5nTGlzdENvbnN0cnVjdG9yXScKK1BBU1Mg
RE9NU3RyaW5nTWFwLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRE9NU3RyaW5nTWFwQ29uc3RydWN0
b3JdJwogUEFTUyBEb2N1bWVudC50b1N0cmluZygpIGlzICdbb2JqZWN0IERvY3VtZW50Q29uc3Ry
dWN0b3JdJwogUEFTUyBEb2N1bWVudEZyYWdtZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRG9j
dW1lbnRGcmFnbWVudENvbnN0cnVjdG9yXScKIFBBU1MgRG9jdW1lbnRUeXBlLnRvU3RyaW5nKCkg
aXMgJ1tvYmplY3QgRG9jdW1lbnRUeXBlQ29uc3RydWN0b3JdJwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60087</attachid>
            <date>2010-06-29 23:17:26 -0700</date>
            <delta_ts>2010-06-30 13:01:26 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>dataset2.diff</filename>
            <type>text/plain</type>
            <size>55733</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjE2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMTAtMDYtMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTQ2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84MTI2MDY5PgorICAgICAgICBJbXBsZW1lbnQgdGhlIC5kYXRhc2V0
IERPTSBwcm9wZXJ0eQorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2RhdGFzZXQuaHRtbAorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01TdHJpbmdNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVN0cmluZ01hcDo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01TdHJpbmdNYXA6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ01hcEN1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTWFwLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01TdHJpbmdNYXA6On5ET01TdHJpbmdNYXAp
OgorICAgICAgICAqIGRvbS9ET01TdHJpbmdNYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpET01TdHJpbmdNYXA6OkRPTVN0cmluZ01hcCk6CisgICAgICAgICogZG9tL0RPTVN0cmluZ01h
cC5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0QXR0cmlidXRlTmFtZVRvUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OnByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzVmFsaWRQcm9wZXJ0eU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFByb3Bl
cnR5TmFtZVRvQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0RE9NU3Ry
aW5nTWFwOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6ZGVy
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6Z2V0TmFtZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6aXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhc2V0RE9NU3RyaW5nTWFwOjpjb250YWlucyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhc2V0RE9NU3RyaW5nTWFwOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFz
ZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0pOgorICAgICAgICAqIGRvbS9EYXRhc2V0RE9NU3Ry
aW5nTWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OkRhdGFzZXRE
T01TdHJpbmdNYXApOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmRhdGFzZXQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMTAtMDYtMjkgIEFiaGluYXYgTWl0aGFs
IDxhYmhpbmF2Lm1pdGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxv
IEdvbWJvcy4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA2MjE0MCkKKysrIFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBACiAjaW5j
bHVkZSAiSlNET01QYXJzZXIuY3BwIgogI2luY2x1ZGUgIkpTRE9NU2VsZWN0aW9uLmNwcCIKICNp
bmNsdWRlICJKU0RPTVN0cmluZ0xpc3QuY3BwIgorI2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwLmNw
cCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5jcHAiCiAjaW5jbHVkZSAiSlNFbGVtZW50LmNwcCIK
ICNpbmNsdWRlICJKU0VudGl0eS5jcHAiCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA2
MjE0MCkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MTE2LDYgKzExNiw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIERPTVBhcnNlciBcCiAgICAgRE9N
U2VsZWN0aW9uIFwKICAgICBET01TdHJpbmdMaXN0IFwKKyAgICBET01TdHJpbmdNYXAgXAogICAg
IERPTVdpbmRvdyBcCiAgICAgRGF0YWJhc2UgXAogICAgIERhdGFiYXNlQ2FsbGJhY2sgXApJbmRl
eDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCShyZXZpc2lvbiA2MjE0MCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTQyNiw2ICs0MjYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0
b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmggXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAgXApAQCAtNzc4LDYgKzc4MCwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmggXAogCVdlYkNvcmUvZG9tL0RPTVN0
cmluZ0xpc3QuY3BwIFwKIAlXZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmggXAorCVdlYkNvcmUv
ZG9tL0RPTVN0cmluZ01hcC5jcHAgXAorCVdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5oIFwKKwlX
ZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBcCisJV2ViQ29yZS9kb20vRGF0YXNl
dERPTVN0cmluZ01hcC5oIFwKIAlXZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcCBcCiAJV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbi5jcHAgXApAQCAtNDA1NCw2ICs0MDYwLDcgQEAgSURM
X0JJTkRJTkdTX0dET00gKz0gXAogCVdlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5pZGwgXAogCVdl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbCBcCiAJV2ViQ29yZS9kb20vRE9NU3RyaW5n
TGlzdC5pZGwgXAorCVdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwgXAogCVdlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsIFwKIAlXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaWRsIFwKIAlXZWJD
b3JlL2RvbS9FdmVudC5pZGwgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDYyMTQwKQorKysgV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAgICAgICAg
ICdkb20vRE9NQ29yZUV4Y2VwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2RvbS9ET01TdHJpbmdMaXN0LmlkbCcsCisgICAg
ICAgICAgICAnZG9tL0RPTVN0cmluZ01hcC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50LmlkbCcsCiAg
ICAgICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsJywKQEAgLTU0Myw2ICs1NDQsOCBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCcsCkBAIC0xMTA2
LDYgKzExMDksMTAgQEAKICAgICAgICAgICAgICdkb20vRE9NSW1wbGVtZW50YXRpb24uaCcsCiAg
ICAgICAgICAgICAnZG9tL0RPTVN0cmluZ0xpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vRE9N
U3RyaW5nTGlzdC5oJywKKyAgICAgICAgICAgICdkb20vRE9NU3RyaW5nTWFwLmNwcCcsCisgICAg
ICAgICAgICAnZG9tL0RPTVN0cmluZ01hcC5oJywKKyAgICAgICAgICAgICdkb20vRGF0YXNldERP
TVN0cmluZ01hcC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmgn
LAogICAgICAgICAgICAgJ2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAn
ZG9tL0RldmljZU9yaWVudGF0aW9uLmNwcCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDYyMTQwKQorKysgV2Vi
Q29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIFwKICAgICBiaW5k
aW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5j
cHAgXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAogICAgIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHAgXApAQCAtNDgzLDYgKzQ4NCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Eb2N1
bWVudFR5cGUuY3BwIFwKICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwKICAgICBkb20v
RE9NU3RyaW5nTGlzdC5jcHAgXAorICAgIGRvbS9ET01TdHJpbmdNYXAuY3BwIFwKKyAgICBkb20v
RGF0YXNldERPTVN0cmluZ01hcC5jcHAgXAogICAgIGRvbS9EeW5hbWljTm9kZUxpc3QuY3BwIFwK
ICAgICBkb20vRWRpdGluZ1RleHQuY3BwIFwKICAgICBkb20vRWxlbWVudC5jcHAgXApAQCAtMTA3
OSw3ICsxMDgyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNEZWJ1Z1dyYXBw
ZXJTZXQuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggXAogICAgIGJpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggXAotICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5oIFwKICAgICBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIFwKQEAgLTEyMzEs
NiArMTIzNCw4IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9Eb2N1bWVudFR5cGUuaCBcCiAgICAg
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmggXAogICAgIGRvbS9ET01TdHJpbmdMaXN0LmggXAorICAg
IGRvbS9ET01TdHJpbmdNYXAuaCBcCisgICAgZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuaCBcCiAg
ICAgZG9tL0R5bmFtaWNOb2RlTGlzdC5oIFwKICAgICBkb20vRWRpdGluZ1RleHQuaCBcCiAgICAg
ZG9tL0VsZW1lbnQuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHJldmlzaW9uIDYyMTQwKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzUxMyw2ICszNTEzLDYyIEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01TdHJpbmdNYXAuY3BwIg0KKwkJCQk+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRl
cm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJ
CQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1l
PSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NU3RyaW5nTWFwLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NV2luZG93LmNwcCIN
CiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0zMjIyOSw2ICszMjI4NSwxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cRGF0YXNldERPTVN0cmluZ01hcC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRGF0YXNldERPTVN0cmluZ01hcC5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERv
Y3VtZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0zMjI4NSw2ICszMjM0OSwxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cRE9NU3RyaW5nTWFwLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxET01TdHJpbmdNYXAuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEeW5hbWljTm9kZUxpc3Qu
Y3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQyMTQwLDYgKzQyMjEyLDYyIEBACiAJCQkJ
CT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19J
bnRlcm5hbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+
DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkv
Pg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJ
CQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVN0cmluZ01hcEN1c3RvbS5oIg0KKwkJ
CQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTRE9NV2luZG93QmFzZS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDUxNSw2ICs0NTE1LDEzIEBACiAJCUJDNjBEQjQ5
MEQyQTNEMUUwMEI5OTE4RiAvKiBKU1hQYXRoRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBEQjQ3MEQyQTNEMUUwMEI5OTE4RiAv
KiBKU1hQYXRoRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJQkM2MERCNEEwRDJBM0QxRTAwQjk5MThG
IC8qIEpTWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDNjBEQjQ4MEQyQTNEMUUwMEI5OTE4RiAvKiBKU1hQYXRoRXhjZXB0aW9u
LmggKi87IH07CiAJCUJDNjBFRkI3MEYzM0EwRTcwMDgxMkE5MyAvKiBSZW5kZXJPYmplY3RDaGls
ZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM2MEVGQjYwRjMzQTBFNzAwODEyQTkzIC8qIFJlbmRlck9iamVjdENoaWxkTGlzdC5jcHAgKi87
IH07CisJCUJDNjQ2NDA5MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY0MDcxMUQ3RjMw
NDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5jcHAgKi87IH07CisJCUJDNjQ2NDBBMTFEN0YzMDQw
MDY0NTVCMCAvKiBET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDA4MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAu
aCAqLzsgfTsKKwkJQkM2NDY0MUMxMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2
NDFBMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggKi87IH07CisJCUJD
NjQ2NDFEMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDFCMTFEN0Y0MTYw
MDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCAqLzsgfTsKKwkJQkM2NDY0OTcxMUQ4
MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDk1MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RP
TVN0cmluZ01hcC5jcHAgKi87IH07CisJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RP
TVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM2NDY0OTYxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmggKi87IH07CisJ
CUJDNjQ2NDlDMTFEODIzOEMwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQ5QjExRDgy
MzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwICovOyB9OwogCQlCQzY0QjRD
QjBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyogQ2Fj
aGVkRm9udC5jcHAgKi87IH07CiAJCUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRG
b250LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0
QjRDQTBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5oICovOyB9OwogCQlCQzY0QjRENTBD
QjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NEI0Q0QwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0Zv
bnRGYWNlLmNwcCAqLzsgfTsKQEAgLTEwMDc1LDYgKzEwMDgyLDE0IEBACiAJCUJDNjBEQjQ3MEQy
QTNEMUUwMEI5OTE4RiAvKiBKU1hQYXRoRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTWFBhdGhFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzYwREI0ODBEMkEzRDFFMDBCOTkxOEYgLyogSlNYUGF0aEV4Y2VwdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hQYXRoRXhjZXB0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjBFRkI2MEYzM0EwRTcwMDgxMkE5MyAv
KiBSZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkM2NDY0MDcxMUQ3RjMwNDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01TdHJpbmdNYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzY0NjQwODExRDdGMzA0MDA2NDU1QjAgLyogRE9N
U3RyaW5nTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVN0cmluZ01h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzY0NjQxQTExRDdGNDE2MDA2NDU1
QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEYXRhc2V0RE9NU3RyaW5nTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDNjQ2NDFCMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFzZXRET01TdHJpbmdNYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzY0NjQ3OTExRDgwMENEMDA2NDU1QjAg
LyogRE9NU3RyaW5nTWFwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01TdHJpbmdNYXAu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzY0NjQ5NTExRDgyMzQ5MDA2NDU1
QjAgLyogSlNET01TdHJpbmdNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01TdHJpbmdNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzY0NjQ5NjExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01TdHJpbmdNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkM2NDY0OUIxMUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2NEI0QzkwQ0I0
Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FjaGVkRm9udC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNjRCNENBMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZvbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM2NEI0Q0QwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRGYWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTAxLDYgKzE0NTE2LDggQEAKIAkJCQk2NURGMzFFNDA5
RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5oICovLAogCQkJCUM1MTM3Q0Yw
MTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwICovLAogCQkJCUM1MTM3Q0Yx
MTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuaCAqLywKKwkJCQlCQzY0NjQ5NTEx
RDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuY3BwICovLAorCQkJCUJDNjQ2NDk2MTFE
ODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oICovLAogCQkJCTY1REYzMUU1MDlEMUND
NjAwMDBCRTMyNSAvKiBKU0VsZW1lbnQuY3BwICovLAogCQkJCTY1REYzMUU2MDlEMUNDNjAwMDBC
RTMyNSAvKiBKU0VsZW1lbnQuaCAqLywKIAkJCQk2NURGMzIyRDA5RDFEREJDMDAwQkUzMjUgLyog
SlNFbnRpdHkuY3BwICovLApAQCAtMTU2MjgsNiArMTU2NDUsNyBAQAogCQkJCTQ5QzdCQThDMTA0
MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkxQUMyMjYxNjBE
QjY5Rjc0MDA4OUI2NjkgLyogSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcCAqLywKIAkJ
CQkyRTA4ODhFNTExNDg4NEUyMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgKi8s
CisJCQkJQkM2NDY0OUIxMUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20u
Y3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3Rv
bS5oICovLAogCQkJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0b20u
Y3BwICovLApAQCAtMTY3NzksNiArMTY3OTcsMTEgQEAKIAkJCQlDNTU2MTBGMDExQTcwNEVCMDBC
ODJEMjcgLyogRE9NU3RyaW5nTGlzdC5jcHAgKi8sCiAJCQkJQzU0NDI3NDkxMUE1N0U3QTAwNjNB
NzQ5IC8qIERPTVN0cmluZ0xpc3QuaCAqLywKIAkJCQlDNTQ0Mjc0QTExQTU3RTdBMDA2M0E3NDkg
LyogRE9NU3RyaW5nTGlzdC5pZGwgKi8sCisJCQkJQkM2NDY0MDcxMUQ3RjMwNDAwNjQ1NUIwIC8q
IERPTVN0cmluZ01hcC5jcHAgKi8sCisJCQkJQkM2NDY0MDgxMUQ3RjMwNDAwNjQ1NUIwIC8qIERP
TVN0cmluZ01hcC5oICovLAorCQkJCUJDNjQ2NDc5MTFEODAwQ0QwMDY0NTVCMCAvKiBET01TdHJp
bmdNYXAuaWRsICovLAorCQkJCUJDNjQ2NDFCMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcCAqLywKKwkJCQlCQzY0NjQxQTExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNl
dERPTVN0cmluZ01hcC5oICovLAogCQkJCUJDN0ZBNjFFMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5h
bWljTm9kZUxpc3QuY3BwICovLAogCQkJCUJDN0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5h
bWljTm9kZUxpc3QuaCAqLywKIAkJCQk2NTUwQjY5OTA5OURGMDI3MDA5MEQ3ODEgLyogRWRpdGlu
Z1RleHQuY3BwICovLApAQCAtMTk2MjgsNiArMTk2NTEsOSBAQAogCQkJCUUxQkU1MTJFMENGNkM1
MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0
RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDNjQ2NDBBMTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDNjQ2NDFDMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzY0NjQ5ODExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJp
bmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE5NTgsNiArMjE5ODQsMTAgQEAKIAkJCQk5M0Yx
OUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVk
aXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzY0NjQwOTExRDdGMzA0MDA2NDU1QjAgLyog
RE9NU3RyaW5nTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDNjQ2NDFEMTFEN0Y0MTYwMDY0
NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDNjQ2
NDk3MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlCQzY0NjQ5QzExRDgyMzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTVN0cmluZ01hcC5oIgor
CisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAiRE9NU3RyaW5nTWFwLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0RP
TVN0cmluZ01hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTVN0cmluZ01hcCog
aW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBpbXBs
LT5jb250YWlucyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cit9CisK
K0pTVmFsdWUgSlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNE
T01TdHJpbmdNYXAqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU0RPTVN0cmluZ01hcCo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNPYmotPmltcGwo
KS0+aXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOworfQorCit2
b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQor
eworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOworICAgIG1faW1wbC0+Z2V0TmFtZXMobmFtZXMp
OworICAgIHNpemVfdCBsZW5ndGggPSBuYW1lcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBzdHJpbmdUb1VTdHJpbmcobmFtZXNbaV0pKSk7CisKKyAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCitib29sIEpTRE9N
U3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKK3sKKyAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBkZWxl
dGUgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBu
YW1lLgorICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxpbmcgY2Fu
R2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjaworICAgIC8v
IHRoZSBuYXRpdmUgcHJvcGVydHkgc2xvdHMgbWFudWFsbHkuCisgICAgUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgaWYgKGdldFN0YXRpY1ZhbHVlU2xvdDxKU0RPTVN0cmluZ01hcCwgQmFzZT4oZXhl
Yywgc19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzLT5wcm90b3R5cGUoKTsKKyAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBs
LT5kZWxldGVJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBlYyk7CisgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEpTRE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK3sK
KyAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGN1c3RvbSBwdXQgaWYgdGhlIG9iamVjdCBkb2Vzbid0
IGhhdmUgYSBuYXRpdmUgcHJvcGVydHkgYnkgdGhpcyBuYW1lLgorICAgIC8vIFNpbmNlIGhhc1By
b3BlcnR5KCkgd291bGQgZW5kIHVwIGNhbGxpbmcgY2FuR2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJl
IGZvb2xlZCwgd2UgbmVlZCB0byBjaGVjaworICAgIC8vIHRoZSBuYXRpdmUgcHJvcGVydHkgc2xv
dHMgbWFudWFsbHkuCisgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgaWYgKGdldFN0YXRpY1Zh
bHVlU2xvdDxKU0RPTVN0cmluZ01hcCwgQmFzZT4oZXhlYywgc19pbmZvLnByb3BIYXNoVGFibGUo
ZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzLT5wcm90b3R5cGUoKTsKKyAg
ICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+aGFzUHJv
cGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhl
eGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCktPnNldEl0ZW0o
aWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSksIHN0cmluZ1ZhbHVlLCBlYyk7CisgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z01hcEN1c3RvbS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0
cmluZ01hcEN1c3RvbS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBKU0RPTVN0cmluZ01hcEN1c3RvbV9oCisjZGVmaW5lIEpTRE9NU3RyaW5nTWFw
Q3VzdG9tX2gKKworI2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwLmgiCisKKyNlbmRpZiAvLyBKU0RP
TVN0cmluZ01hcEN1c3RvbV9oCkluZGV4OiBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVN0cmlu
Z01hcC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RPTVN0cmluZ01hcDo6fkRPTVN0cmlu
Z01hcCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9t
L0RPTVN0cmluZ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVN0cmluZ01hcF9oCisj
ZGVmaW5lIERPTVN0cmluZ01hcF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIERPTVN0cmluZ01hcCA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE9NU3RyaW5nTWFwKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcmVmKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBnZXROYW1lcyhWZWN0b3I8U3RyaW5nPiYpID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBpdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
b250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXRl
bShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgRE9NU3RyaW5nTWFwKCkKKyAg
ICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9N
U3RyaW5nTWFwX2gKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvZG9tL0RPTVN0cmluZ01hcC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBIYXNO
YW1lR2V0dGVyLAorICAgICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwKKyAgICAgICAgQ3VzdG9t
R2V0UHJvcGVydHlOYW1lcywKKyAgICAgICAgRGVsZWdhdGluZ1B1dEZ1bmN0aW9uLAorICAgIF0g
RE9NU3RyaW5nTWFwIHsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9EYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5n
TWFwLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCisKKyNpbmNsdWRl
ICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNU
eXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNWYWxpZEF0dHJp
YnV0ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmICghbmFtZS5zdGFydHNXaXRo
KCJkYXRhLSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVycyA9IG5hbWUuY2hhcmFjdGVycygpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUu
bGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gNTsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBTdHJpbmcg
Y29udmVydEF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgVmVjdG9yPFVDaGFyPiBuZXdTdHJpbmdCdWZmZXI7CisKKyAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycyA9IG5hbWUuY2hhcmFjdGVycygpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5h
bWUubGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gNTsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldICE9ICctJykKKyAgICAgICAgICAgIG5ld1N0cmlu
Z0J1ZmZlci5hcHBlbmQoY2hhcmFjdGVyc1tpXSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgaWYgKChpICsgMSA8IGxlbmd0aCkgJiYgaXNBU0NJSUxvd2VyKGNoYXJhY3RlcnNbaSArIDFd
KSkgeworICAgICAgICAgICAgICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQodG9BU0NJSVVwcGVy
KGNoYXJhY3RlcnNbaSArIDFdKSk7CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJz
W2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KG5ld1N0
cmluZ0J1ZmZlcik7Cit9CisKK3N0YXRpYyBib29sIHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1
dGVOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0
ZU5hbWUpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFibGUgdG8gbWF0Y2ggd2l0
aG91dCBjcmVhdGluZyBhIG5ldyBzdHJpbmcuCisKKyAgICBpZiAoIWlzVmFsaWRBdHRyaWJ1dGVO
YW1lKGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcg
Y29udmVydGVkTmFtZSA9IGNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eU5hbWUoYXR0cmli
dXRlTmFtZSk7CisgICAgcmV0dXJuIChjb252ZXJ0ZWROYW1lID09IHByb3BlcnR5TmFtZSk7Cit9
CisKK3N0YXRpYyBib29sIGlzVmFsaWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gbmFtZS5jaGFyYWN0ZXJzKCk7CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJy0nICYm
IChpICsgMSA8IGxlbmd0aCkgJiYgaXNBU0NJSUxvd2VyKGNoYXJhY3RlcnNbaSArIDFdKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBTdHJpbmcgY29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFtZShjb25zdCBTdHJp
bmcmIG5hbWUpCit7CisgICAgVmVjdG9yPFVDaGFyPiBuZXdTdHJpbmdCdWZmZXI7CisKKyAgICBu
ZXdTdHJpbmdCdWZmZXIuYXBwZW5kKCdkJyk7CisgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCgn
YScpOworICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQoJ3QnKTsKKyAgICBuZXdTdHJpbmdCdWZm
ZXIuYXBwZW5kKCdhJyk7CisgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCgnLScpOworCisgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBuYW1lLmNoYXJhY3RlcnMoKTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSBuYW1lLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSB7
CisgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBu
ZXdTdHJpbmdCdWZmZXIuYXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJz
W2ldKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChuZXdTdHJpbmdCdWZmZXIp
OworfQorCisKK3ZvaWQgRGF0YXNldERPTVN0cmluZ01hcDo6cmVmKCkKK3sKKyAgICBtX2VsZW1l
bnQtPnJlZigpOworfQorCit2b2lkIERhdGFzZXRET01TdHJpbmdNYXA6OmRlcmVmKCkKK3sKKyAg
ICBtX2VsZW1lbnQtPmRlcmVmKCk7Cit9CisKK3ZvaWQgRGF0YXNldERPTVN0cmluZ01hcDo6Z2V0
TmFtZXMoVmVjdG9yPFN0cmluZz4mIG5hbWVzKQoreworICAgIE5hbWVkTm9kZU1hcCogYXR0cmli
dXRlTWFwID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKHRydWUpOworICAgIGlmIChhdHRyaWJ1dGVN
YXApIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlTWFwLT5sZW5ndGgoKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShp
KTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkQXR0cmlidXRlTmFtZShhdHRyaWJ1dGUtPmxvY2Fs
TmFtZSgpKSkKKyAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoY29udmVydEF0dHJpYnV0ZU5h
bWVUb1Byb3BlcnR5TmFtZShhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK1N0cmluZyBEYXRhc2V0RE9NU3RyaW5nTWFwOjppdGVtKGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IG1fZWxlbWVudC0+YXR0
cmlidXRlcyh0cnVlKTsKKyAgICBpZiAoYXR0cmlidXRlTWFwKSB7CisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGF0dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBhdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgICAgICBpZiAocHJv
cGVydHlOYW1lTWF0Y2hlc0F0dHJpYnV0ZU5hbWUobmFtZSwgYXR0cmlidXRlLT5sb2NhbE5hbWUo
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBEYXRhc2V0RE9NU3Ry
aW5nTWFwOjpjb250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgTmFtZWROb2RlTWFw
KiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXModHJ1ZSk7CisgICAgaWYgKGF0
dHJpYnV0ZU1hcCkgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVNYXAtPmxl
bmd0aCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1
dGVJdGVtKGkpOworICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVO
YW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBE
YXRhc2V0RE9NU3RyaW5nTWFwOjpzZXRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFpc1ZhbGlkUHJvcGVy
dHlOYW1lKG5hbWUpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNvbnZlcnRQcm9wZXJ0eU5h
bWVUb0F0dHJpYnV0ZU5hbWUobmFtZSksIHZhbHVlLCBlYyk7Cit9CisKK3ZvaWQgRGF0YXNldERP
TVN0cmluZ01hcDo6ZGVsZXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmICghaXNWYWxpZFByb3BlcnR5TmFtZShuYW1lKSkgeworICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFeGNlcHRpb25D
b2RlIGR1bW15OworICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZlcnRQcm9wZXJ0
eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFtZSksIGR1bW15KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGF0YXNldERPTVN0cmluZ01hcF9oCisjZGVm
aW5lIERhdGFzZXRET01TdHJpbmdNYXBfaAorCisjaW5jbHVkZSAiRE9NU3RyaW5nTWFwLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBFbGVtZW50OworCitjbGFzcyBEYXRhc2V0RE9NU3RyaW5nTWFwIDogcHVibGljIERPTVN0cmlu
Z01hcCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RGF0YXNldERPTVN0cmluZ01h
cD4gY3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IERh
dGFzZXRET01TdHJpbmdNYXAoZWxlbWVudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJl
ZigpOworICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpOworCisgICAgdmlydHVhbCB2b2lkIGdldE5h
bWVzKFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdmlydHVhbCBTdHJpbmcgaXRlbShjb25zdCBTdHJp
bmcmIG5hbWUpOworICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIG5hbWUp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJdGVt
KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIERh
dGFzZXRET01TdHJpbmdNYXAoRWxlbWVudCogZWxlbWVudCkKKyAgICAgICAgOiBtX2VsZW1lbnQo
ZWxlbWVudCkKKyAgICB7CisgICAgfQorCisgICAgRWxlbWVudCogbV9lbGVtZW50OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRGF0YXNldERPTVN0cmluZ01hcF9o
CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2Vs
ZWN0b3IuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdExp
c3QuaCIKKyNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudFJh
cmVEYXRhLmgiCkBAIC0xNTIwLDYgKzE1MjEsMTQgQEAgYm9vbCBFbGVtZW50Ojp3ZWJraXRNYXRj
aGVzU2VsZWN0b3IoY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorRE9NU3RyaW5nTWFwKiBF
bGVtZW50OjpkYXRhc2V0KCkKK3sKKyAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbnN1cmVS
YXJlRGF0YSgpOworICAgIGlmICghZGF0YS0+bV9kYXRhc2V0RE9NU3RyaW5nTWFwKQorICAgICAg
ICBkYXRhLT5tX2RhdGFzZXRET01TdHJpbmdNYXAgPSBEYXRhc2V0RE9NU3RyaW5nTWFwOjpjcmVh
dGUodGhpcyk7CisgICAgcmV0dXJuIGRhdGEtPm1fZGF0YXNldERPTVN0cmluZ01hcC5nZXQoKTsK
K30KKwogS1VSTCBFbGVtZW50OjpnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3QKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECkluZGV4OiBXZWJDb3JlL2RvbS9F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA2
MjE0MCkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdHRyaWJ1dGU7CiBjbGFzcyBDbGll
bnRSZWN0OwogY2xhc3MgQ2xpZW50UmVjdExpc3Q7CitjbGFzcyBET01TdHJpbmdNYXA7CiBjbGFz
cyBFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBJbnRTaXplOwogCkBAIC0yNjIsNiArMjYzLDggQEAg
cHVibGljOgogCiAgICAgYm9vbCB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBz
ZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIERPTVN0cmluZ01hcCogZGF0YXNldCgp
OworCiAgICAgdmlydHVhbCBib29sIGlzRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHlGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gNjIxNDAp
CisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTks
OSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIC8vIEhUTUwgNQogICAgICAgICBOb2RlTGlzdCBn
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGluIERPTVN0cmluZyBuYW1lKTsKIAorI2lmIGRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTWFwIGRhdGFzZXQ7CisjZW5kaWYKICAgICAgICAgLy8g
Tm9kZVNlbGVjdG9yIC0gU2VsZWN0b3IgQVBJCiAgICAgICAgIEVsZW1lbnQgcXVlcnlTZWxlY3Rv
cihpbiBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3Jl
L2RvbS9FbGVtZW50UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsMTAgQEAK
ICNpZm5kZWYgRWxlbWVudFJhcmVEYXRhX2gKICNkZWZpbmUgRWxlbWVudFJhcmVEYXRhX2gKIAor
I2luY2x1ZGUgIkRhdGFzZXRET01TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgSW50U2l6
ZSBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2Nv
bXB1dGVkU3R5bGU7CisKKyAgICBPd25QdHI8RGF0YXNldERPTVN0cmluZ01hcD4gbV9kYXRhc2V0
RE9NU3RyaW5nTWFwOwogfTsKIAogaW5saW5lIEludFNpemUgZGVmYXVsdE1pbmltdW1TaXplRm9y
UmVzaXppbmcoKQpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDYyMTQwKQorKysgV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw2ICs0NTksOCBAQCBt
b2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD0zRF9DQU5WQVMs
RW5hYmxlZEF0UnVudGltZV0gV2ViR0xSZW5kZXJpbmdDb250ZXh0Q29uc3RydWN0b3IgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OwogICAgICAgICBhdHRyaWJ1dGUgVGV4dE1ldHJpY3NDb25zdHJ1Y3Rv
ciBUZXh0TWV0cmljczsKIAorICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nTWFwQ29uc3RydWN0
b3IgRE9NU3RyaW5nTWFwOworCiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyLENv
bmRpdGlvbmFsPTNEX0NBTlZBUyxFbmFibGVkQXRSdW50aW1lXSBBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yIEFycmF5QnVmZmVyOyAvLyBVc2FibGUgd2l0aCBuZXcgb3BlcmF0b3IKICAgICAgICAgYXR0
cmlidXRlIFtKU0NDdXN0b21HZXR0ZXIsQ29uZGl0aW9uYWw9M0RfQ0FOVkFTLEVuYWJsZWRBdFJ1
bnRpbWVdIEludDhBcnJheUNvbnN0cnVjdG9yIEludDhBcnJheTsgLy8gVXNhYmxlIHdpdGggbmV3
IG9wZXJhdG9yCiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyLENvbmRpdGlvbmFs
PTNEX0NBTlZBUyxFbmFibGVkQXRSdW50aW1lXSBVaW50OEFycmF5Q29uc3RydWN0b3IgVWludDhB
cnJheTsgLy8gVXNhYmxlIHdpdGggbmV3IG9wZXJhdG9yCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjE1
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDEwLTA2LTI5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBjaGFuZ2VzIGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNDYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzgxMjYwNjk+CisgICAgICAgIEltcGxlbWVudCB0aGUgLmRhdGFzZXQgRE9N
IHByb3BlcnR5CisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHkt
ZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL2RhdGFzZXQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9kYXRhc2V0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RhdGFzZXQuanM6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NjcmlwdC10ZXN0cy9kb21MaXN0RW51bWVyYXRpb24uanM6CisgICAgICAg
ICogZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wNi0y
OSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERp
bWl0cmkgR2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RhdGFzZXQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RhdGFzZXQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZGF0YXNldC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKK1RoaXMgdGVzdHMgZWxlbWVu
dC5kYXRhc2V0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0R2V0
KCdkYXRhLWZvbycsICdmb28nKSBpcyB0cnVlCitQQVNTIHRlc3RHZXQoJ2RhdGEtZm9vLWJhcics
ICdmb29CYXInKSBpcyB0cnVlCitQQVNTIHRlc3RHZXQoJ2RhdGEtLScsICctJykgaXMgdHJ1ZQor
UEFTUyB0ZXN0R2V0KCdkYXRhLS1mb28nLCAnRm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0R2V0KCdk
YXRhLS0tZm9vJywgJy1Gb28nKSBpcyB0cnVlCitQQVNTIHRlc3RHZXQoJ2RhdGEtRm9vJywgJ2Zv
bycpIGlzIHRydWUKK1BBU1MgdGVzdEdldCgnZGF0YS0nLCAnJykgaXMgdHJ1ZQorCitQQVNTIG1h
dGNoZXNOb3RoaW5nSW5EYXRhc2V0KCdkYXRhRm9vJykgaXMgdHJ1ZQorCitQQVNTIHRlc3RTZXQo
J2ZvbycsICdkYXRhLWZvbycpIGlzIHRydWUKK1BBU1MgdGVzdFNldCgnZm9vQmFyJywgJ2RhdGEt
Zm9vLWJhcicpIGlzIHRydWUKK1BBU1MgdGVzdFNldCgnLScsICdkYXRhLS0nKSBpcyB0cnVlCitQ
QVNTIHRlc3RTZXQoJ0ZvbycsICdkYXRhLS1mb28nKSBpcyB0cnVlCitQQVNTIHRlc3RTZXQoJy1G
b28nLCAnZGF0YS0tLWZvbycpIGlzIHRydWUKK1BBU1MgdGVzdFNldCgnJywgJ2RhdGEtJykgaXMg
dHJ1ZQorCitQQVNTIHRlc3RTZXQoJy1mb28nLCAnZHVtbXknKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIHRlc3RTZXQoJy3Dg8KxJywg
J2R1bW15JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERP
TSBFeGNlcHRpb24gNS4KKworUEFTUyB0ZXN0RGVsZXRlKCdkYXRhLWZvbycsICdmb28nKSBpcyB0
cnVlCitQQVNTIHRlc3REZWxldGUoJ2RhdGEtZm9vLWJhcicsICdmb29CYXInKSBpcyB0cnVlCitQ
QVNTIHRlc3REZWxldGUoJ2RhdGEtLScsICctJykgaXMgdHJ1ZQorUEFTUyB0ZXN0RGVsZXRlKCdk
YXRhLS1mb28nLCAnRm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0RGVsZXRlKCdkYXRhLS0tZm9vJywg
Jy1Gb28nKSBpcyB0cnVlCitQQVNTIHRlc3REZWxldGUoJ2RhdGEtJywgJycpIGlzIHRydWUKKwor
UEFTUyB0ZXN0RGVsZXRlKCdkdW1teScsICctZm9vJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorCitQQVNTIHRlc3RGb3JJbihbJ2RhdGEtZm9v
JywgJ2RhdGEtYmFyJywgJ2RhdGEtYmF6J10pIGlzIDMKK1BBU1MgdGVzdEZvckluKFsnZGF0YS1m
b28nLCAnZGF0YS1iYXInLCAnZGF0YUZvbyddKSBpcyAyCitQQVNTIHRlc3RGb3JJbihbJ2RhdGEt
Zm9vJywgJ2RhdGEtYmFyJywgJ3N0eWxlJ10pIGlzIDIKK1BBU1MgdGVzdEZvckluKFsnZGF0YS1m
b28nLCAnZGF0YS1iYXInLCAnZGF0YS0nXSkgaXMgMworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Rh
dGFzZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kYXRhc2V0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kYXRhc2V0Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGF0YXNldC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVt
ZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYyMTQwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQCBQQVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzInCiBQQVNTIHJlc3VsdEFy
cmF5WzJdLml0ZW0gaXMgbmFtZWROb2RlTWFwLml0ZW0oMikKIAogW29iamVjdCBIVE1MRm9ybUVs
ZW1lbnRdCi1QQVNTIHJlc3VsdEFycmF5Lmxlbmd0aCBpcyAxMzUKK1BBU1MgcmVzdWx0QXJyYXku
bGVuZ3RoIGlzIDEzNgogUEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwogUEFTUyByZXN1bHRB
cnJheVswXS5pdGVtIGlzIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKVsw
XQogUEFTUyByZXN1bHRBcnJheVsxXS5pIGlzICcxJwpAQCAtNDEsNyArNDEsNyBAQCBQQVNTIHJl
c3VsdEFycmF5WzJdLmkgaXMgJzInCiBQQVNTIHJlc3VsdEFycmF5WzJdLml0ZW0gaXMgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzJdCiAKIFtvYmplY3QgSFRNTFNlbGVj
dEVsZW1lbnRdCi1QQVNTIHJlc3VsdEFycmF5Lmxlbmd0aCBpcyAxNDMKK1BBU1MgcmVzdWx0QXJy
YXkubGVuZ3RoIGlzIDE0NAogUEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwogUEFTUyByZXN1
bHRBcnJheVswXS5pdGVtIGlzIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdvcHRpb24n
KVswXQogUEFTUyByZXN1bHRBcnJheVsxXS5pIGlzICcxJwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjIxNDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5o
ZXJpdGFuY2UtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDkgQEAg
UEFTUyBET01BcHBsaWNhdGlvbkNhY2hlUHJvdG90eXBlIGZyb20gaQogUEFTUyBET01JbXBsZW1l
bnRhdGlvbiBmcm9tIGlubmVyLmRvY3VtZW50LmZvcm1zLnRlc3RGb3JtLjAub3duZXJEb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbgogUEFTUyBET01JbXBsZW1lbnRhdGlvbkNvbnN0cnVjdG9yIGZyb20g
aW5uZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5vd25lckRvY3VtZW50LmltcGxlbWVudGF0
aW9uLmNvbnN0cnVjdG9yCiBQQVNTIERPTUltcGxlbWVudGF0aW9uUHJvdG90eXBlIGZyb20gaW5u
ZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5vd25lckRvY3VtZW50LmltcGxlbWVudGF0aW9u
Ll9fcHJvdG9fXworUEFTUyBET01TdHJpbmdNYXAgZnJvbSBpbm5lci5kb2N1bWVudC5mb3Jtcy50
ZXN0Rm9ybS4wLmRhdGFzZXQKK1BBU1MgRE9NU3RyaW5nTWFwQ29uc3RydWN0b3IgZnJvbSBpbm5l
ci5kb2N1bWVudC5mb3Jtcy50ZXN0Rm9ybS4wLmRhdGFzZXQuY29uc3RydWN0b3IKK1BBU1MgRE9N
U3RyaW5nTWFwUHJvdG90eXBlIGZyb20gaW5uZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5k
YXRhc2V0Ll9fcHJvdG9fXwogUEFTUyBET01XaW5kb3cgZnJvbSBpbm5lcgogUEFTUyBET01XaW5k
b3dQcm90b3R5cGUgZnJvbSBpbm5lci5kb2N1bWVudC5mb3Jtcy50ZXN0Rm9ybS4wLm93bmVyRG9j
dW1lbnQuZGVmYXVsdFZpZXcuX19wcm90b19fCiBQQVNTIERvY3VtZW50UHJvdG90eXBlIGZyb20g
aW5uZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5vd25lckRvY3VtZW50Ll9fcHJvdG9fXy5f
X3Byb3RvX18KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5j
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90
eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjIxNDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIFBBU1MgaW5uZXIuRE9NUGFyc2VyLmlzSW5uZXIgaXMg
dHJ1ZQogUEFTUyBpbm5lci5ET01QYXJzZXIuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQ
QVNTIGlubmVyLkRPTVN0cmluZ0xpc3QuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLkRPTVN0
cmluZ0xpc3QuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkRPTVN0cmlu
Z01hcC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuRE9NU3RyaW5nTWFwLmNvbnN0cnVjdG9y
LmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5Eb2N1bWVudC5pc0lubmVyIGlzIHRydWUKIFBB
U1MgaW5uZXIuRG9jdW1lbnQuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVy
LkRvY3VtZW50RnJhZ21lbnQuaXNJbm5lciBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDYyMTQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTU4LDYgKzU1OCw4
IEBAIHdpbmRvdy5ET01TdHJpbmdMaXN0IFtvYmplY3QgRE9NU3RyaW5nTGkKIHdpbmRvdy5ET01T
dHJpbmdMaXN0LnByb3RvdHlwZSBbb2JqZWN0IERPTVN0cmluZ0xpc3RQcm90b3R5cGVdCiB3aW5k
b3cuRE9NU3RyaW5nTGlzdC5wcm90b3R5cGUuY29udGFpbnMgW2Z1bmN0aW9uXQogd2luZG93LkRP
TVN0cmluZ0xpc3QucHJvdG90eXBlLml0ZW0gW2Z1bmN0aW9uXQord2luZG93LkRPTVN0cmluZ01h
cCBbb2JqZWN0IERPTVN0cmluZ01hcENvbnN0cnVjdG9yXQord2luZG93LkRPTVN0cmluZ01hcC5w
cm90b3R5cGUgW29iamVjdCBET01TdHJpbmdNYXBQcm90b3R5cGVdCiB3aW5kb3cuRG9jdW1lbnQg
W29iamVjdCBEb2N1bWVudENvbnN0cnVjdG9yXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZSBb
b2JqZWN0IERvY3VtZW50UHJvdG90eXBlXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5BVFRS
SUJVVEVfTk9ERSBbbnVtYmVyXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDYyMTQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAgUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cAogUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdE
T01JbXBsZW1lbnRhdGlvbicpIGlzICdvYmplY3QnCiBQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ0RPTVBhcnNlcicpIGlzICdvYmplY3QnCiBQQVNT
IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ0RPTVN0cmlu
Z0xpc3QnKSBpcyAnb2JqZWN0JworUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3aW5kb3csICdET01TdHJpbmdNYXAnKSBpcyAnb2JqZWN0JwogUEFTUyB0eXBlb2Yg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdEYXRlJykgaXMgJ29iamVj
dCcKIFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAn
RG9jdW1lbnQnKSBpcyAnb2JqZWN0JwogUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3aW5kb3csICdEb2N1bWVudEZyYWdtZW50JykgaXMgJ29iamVjdCcKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kYXRhc2V0LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kYXRhc2V0LmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RhdGFzZXQuanMJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGVsZW1l
bnQuZGF0YXNldC4iKTsKKworZnVuY3Rpb24gdGVzdEdldChhdHRyLCBleHBlY3RlZCkKK3sKKyAg
ICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGQuc2V0QXR0cmli
dXRlKGF0dHIsICJ2YWx1ZSIpOworICAgIHJldHVybiBkLmRhdGFzZXRbZXhwZWN0ZWRdID09ICJ2
YWx1ZSI7Cit9CisKK3Nob3VsZEJlVHJ1ZSgidGVzdEdldCgnZGF0YS1mb28nLCAnZm9vJykiKTsK
K3Nob3VsZEJlVHJ1ZSgidGVzdEdldCgnZGF0YS1mb28tYmFyJywgJ2Zvb0JhcicpIik7CitzaG91
bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtLScsICctJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdEdl
dCgnZGF0YS0tZm9vJywgJ0ZvbycpIik7CitzaG91bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtLS1m
b28nLCAnLUZvbycpIik7CitzaG91bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtRm9vJywgJ2Zvbycp
Iik7IC8vIEhUTUwgbG93ZXJjYXNlcyBhbGwgYXR0cmlidXRlcy4KK3Nob3VsZEJlVHJ1ZSgidGVz
dEdldCgnZGF0YS0nLCAnJykiKTsKKworZGVidWcoIiIpOworCitmdW5jdGlvbiBtYXRjaGVzTm90
aGluZ0luRGF0YXNldChhdHRyKQoreworICAgIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgZC5zZXRBdHRyaWJ1dGUoYXR0ciwgInZhbHVlIik7CisKKyAgICB2YXIg
Y291bnQgPSAwOworICAgIGZvciAodmFyIGl0ZW0gaW4gZC5kYXRhc2V0KQorICAgICAgICBjb3Vu
dCsrOworICAgIHJldHVybiBjb3VudCA9PSAwOworfQorc2hvdWxkQmVUcnVlKCJtYXRjaGVzTm90
aGluZ0luRGF0YXNldCgnZGF0YUZvbycpIik7CitkZWJ1ZygiIik7CisKK2Z1bmN0aW9uIHRlc3RT
ZXQocHJvcCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICBkLmRhdGFzZXRbcHJvcF0gPSAidmFsdWUiOworICAgIHJldHVybiBkLmdl
dEF0dHJpYnV0ZShleHBlY3RlZCkgPT0gInZhbHVlIjsKK30KKworc2hvdWxkQmVUcnVlKCJ0ZXN0
U2V0KCdmb28nLCAnZGF0YS1mb28nKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0U2V0KCdmb29CYXIn
LCAnZGF0YS1mb28tYmFyJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNldCgnLScsICdkYXRhLS0n
KSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0U2V0KCdGb28nLCAnZGF0YS0tZm9vJykiKTsKK3Nob3Vs
ZEJlVHJ1ZSgidGVzdFNldCgnLUZvbycsICdkYXRhLS0tZm9vJykiKTsKK3Nob3VsZEJlVHJ1ZSgi
dGVzdFNldCgnJywgJ2RhdGEtJykiKTsKK2RlYnVnKCIiKTsKKworc2hvdWxkVGhyb3coInRlc3RT
ZXQoJy1mb28nLCAnZHVtbXknKSIsICInRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24g
MTInIik7CitzaG91bGRUaHJvdygidGVzdFNldCgnLcOxJywgJ2R1bW15JykiLCAiJ0Vycm9yOiBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNSciKTsKK2RlYnVnKCIiKTsKKwor
ZnVuY3Rpb24gdGVzdERlbGV0ZShhdHRyLCBwcm9wKQoreworICAgIHZhciBkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZC5zZXRBdHRyaWJ1dGUoYXR0ciwgInZhbHVlIik7
CisgICAgZGVsZXRlIGQuZGF0YXNldFtwcm9wXTsKKyAgICByZXR1cm4gZC5nZXRBdHRyaWJ1dGUo
YXR0cikgIT0gInZhbHVlIjsKK30KKworc2hvdWxkQmVUcnVlKCJ0ZXN0RGVsZXRlKCdkYXRhLWZv
bycsICdmb28nKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0RGVsZXRlKCdkYXRhLWZvby1iYXInLCAn
Zm9vQmFyJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdERlbGV0ZSgnZGF0YS0tJywgJy0nKSIpOwor
c2hvdWxkQmVUcnVlKCJ0ZXN0RGVsZXRlKCdkYXRhLS1mb28nLCAnRm9vJykiKTsKK3Nob3VsZEJl
VHJ1ZSgidGVzdERlbGV0ZSgnZGF0YS0tLWZvbycsICctRm9vJykiKTsKK3Nob3VsZEJlVHJ1ZSgi
dGVzdERlbGV0ZSgnZGF0YS0nLCAnJykiKTsKK2RlYnVnKCIiKTsKKworc2hvdWxkVGhyb3coInRl
c3REZWxldGUoJ2R1bW15JywgJy1mb28nKSIsICInRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNl
cHRpb24gMTInIik7CitkZWJ1ZygiIik7CisKK2Z1bmN0aW9uIHRlc3RGb3JJbihhcnJheSkKK3sK
KyAgICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZC5zZXRBdHRyaWJ1dGUo
YXJyYXlbaV0sICJ2YWx1ZSIpOworICAgIH0KKworICAgIHZhciBjb3VudCA9IDA7CisgICAgZm9y
ICh2YXIgaXRlbSBpbiBkLmRhdGFzZXQpCisgICAgICAgIGNvdW50Kys7CisKKyAgICByZXR1cm4g
Y291bnQ7Cit9CisKK3Nob3VsZEJlKCJ0ZXN0Rm9ySW4oWydkYXRhLWZvbycsICdkYXRhLWJhcics
ICdkYXRhLWJheiddKSIsICIzIik7CitzaG91bGRCZSgidGVzdEZvckluKFsnZGF0YS1mb28nLCAn
ZGF0YS1iYXInLCAnZGF0YUZvbyddKSIsICIyIik7CitzaG91bGRCZSgidGVzdEZvckluKFsnZGF0
YS1mb28nLCAnZGF0YS1iYXInLCAnc3R5bGUnXSkiLCAiMiIpOworc2hvdWxkQmUoInRlc3RGb3JJ
bihbJ2RhdGEtZm9vJywgJ2RhdGEtYmFyJywgJ2RhdGEtJ10pIiwgIjMiKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQt
dGVzdHMvZG9tTGlzdEVudW1lcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL3NjcmlwdC10ZXN0cy9kb21MaXN0RW51bWVyYXRpb24uanMJKHJldmlzaW9uIDYyMTQw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RvbUxpc3RFbnVtZXJhdGlv
bi5qcwkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHNob3VsZEJlKCJyZXN1bHRB
cnJheVsyXS5pdGVtIiwgIm5hbWVkTm8KIC8vIEhUTUxGb3JtRWxlbWVudAogdmFyIGh0bWxGb3Jt
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJylbMF07CiByZXN1
bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGh0bWxGb3JtRWxlbWVudCk7Ci1zaG91bGRCZSgicmVzdWx0
QXJyYXkubGVuZ3RoIiwgIjEzNSIpOworc2hvdWxkQmUoInJlc3VsdEFycmF5Lmxlbmd0aCIsICIx
MzYiKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVswXS5pIiwgIicwJyIpOwogc2hvdWxkQmUoInJl
c3VsdEFycmF5WzBdLml0ZW0iLCAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVj
dCcpWzBdIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaSIsICInMSciKTsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBzaG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaXRlbSIsICJkb2N1bWVuCiAvLyBI
VE1MU2VsZWN0RWxlbWVudAogdmFyIGh0bWxTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdOwogcmVzdWx0QXJyYXkgPSBpdGVyYXRlTGlzdCho
dG1sU2VsZWN0RWxlbWVudCk7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXkubGVuZ3RoIiwgIjE0MyIp
Oworc2hvdWxkQmUoInJlc3VsdEFycmF5Lmxlbmd0aCIsICIxNDQiKTsKIHNob3VsZEJlKCJyZXN1
bHRBcnJheVswXS5pIiwgIicwJyIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLml0ZW0iLCAi
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29wdGlvbicpWzBdIik7CiBzaG91bGRCZSgi
cmVzdWx0QXJyYXlbMV0uaSIsICInMSciKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZ2xv
YmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjIxNDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIFBBU1MgRE9NRXhjZXB0aW9uLnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QKIFBBU1MgRE9NSW1wbGVtZW50YXRpb24udG9TdHJpbmcoKSBpcyAn
W29iamVjdCBET01JbXBsZW1lbnRhdGlvbkNvbnN0cnVjdG9yXScKIFBBU1MgRE9NUGFyc2VyLnRv
U3RyaW5nKCkgaXMgJ1tvYmplY3QgRE9NUGFyc2VyQ29uc3RydWN0b3JdJwogUEFTUyBET01TdHJp
bmdMaXN0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRE9NU3RyaW5nTGlzdENvbnN0cnVjdG9yXScK
K1BBU1MgRE9NU3RyaW5nTWFwLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRE9NU3RyaW5nTWFwQ29u
c3RydWN0b3JdJwogUEFTUyBEb2N1bWVudC50b1N0cmluZygpIGlzICdbb2JqZWN0IERvY3VtZW50
Q29uc3RydWN0b3JdJwogUEFTUyBEb2N1bWVudEZyYWdtZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmpl
Y3QgRG9jdW1lbnRGcmFnbWVudENvbnN0cnVjdG9yXScKIFBBU1MgRG9jdW1lbnRUeXBlLnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QgRG9jdW1lbnRUeXBlQ29uc3RydWN0b3JdJwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60143</attachid>
            <date>2010-06-30 13:01:26 -0700</date>
            <delta_ts>2010-06-30 14:55:16 -0700</delta_ts>
            <desc>Patch 3 - More tests</desc>
            <filename>dataset3.diff</filename>
            <type>text/plain</type>
            <size>62864</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjE2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMTAtMDYtMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTQ2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84MTI2MDY5PgorICAgICAgICBJbXBsZW1lbnQgdGhlIC5kYXRhc2V0
IERPTSBwcm9wZXJ0eQorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9kYXRhc2V0LXhodG1sLnho
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9kYXRhc2V0Lmh0bWwKKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01TdHJpbmdNYXA6Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01T
dHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5n
TWFwOjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBD
dXN0b20uaDogQWRkZWQuCisgICAgICAgICogZG9tL0RPTVN0cmluZ01hcC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NU3RyaW5nTWFwOjp+RE9NU3RyaW5nTWFwKToKKyAgICAgICAg
KiBkb20vRE9NU3RyaW5nTWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NU3RyaW5n
TWFwOjpET01TdHJpbmdNYXApOgorICAgICAgICAqIGRvbS9ET01TdHJpbmdNYXAuaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6aXNWYWxpZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydEF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm9w
ZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
UHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0
dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERPTVN0cmluZ01hcDo6cmVm
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmdldE5hbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YXNldERPTVN0cmluZ01hcDo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YXNldERP
TVN0cmluZ01hcDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0RE9NU3RyaW5n
TWFwOjpkZWxldGVJdGVtKToKKyAgICAgICAgKiBkb20vRGF0YXNldERPTVN0cmluZ01hcC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhc2V0RE9NU3RyaW5nTWFwOjpEYXRhc2V0RE9NU3RyaW5nTWFw
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpkYXRhc2V0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaWRsOgorCiAyMDEwLTA2LTI5ICBBYmhpbmF2IE1pdGhhbCA8YWJoaW5hdi5t
aXRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCklu
ZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQAogI2luY2x1ZGUgIkpTRE9N
UGFyc2VyLmNwcCIKICNpbmNsdWRlICJKU0RPTVNlbGVjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNE
T01TdHJpbmdMaXN0LmNwcCIKKyNpbmNsdWRlICJKU0RPTVN0cmluZ01hcC5jcHAiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3cuY3BwIgogI2luY2x1ZGUgIkpTRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAi
SlNFbnRpdHkuY3BwIgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNjIxNDApCisrKyBX
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYs
NyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBET01QYXJzZXIgXAogICAgIERPTVNlbGVjdGlvbiBc
CiAgICAgRE9NU3RyaW5nTGlzdCBcCisgICAgRE9NU3RyaW5nTWFwIFwKICAgICBET01XaW5kb3cg
XAogICAgIERhdGFiYXNlIFwKICAgICBEYXRhYmFzZUNhbGxiYWNrIFwKSW5kZXg6IFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2
aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC00MjYsNiArNDI2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBcCisJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5oIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwIFwKQEAgLTc3OCw2ICs3ODAsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmNw
cCBcCiAJV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oIFwKKwlXZWJDb3JlL2RvbS9ET01TdHJp
bmdNYXAuY3BwIFwKKwlXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaCBcCisJV2ViQ29yZS9kb20v
RGF0YXNldERPTVN0cmluZ01hcC5jcHAgXAorCVdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdN
YXAuaCBcCiAJV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgXAogCVdl
YkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBcCiAJV2ViQ29yZS9kb20vRGV2
aWNlT3JpZW50YXRpb24uY3BwIFwKQEAgLTQwNTQsNiArNDA2MCw3IEBAIElETF9CSU5ESU5HU19H
RE9NICs9IFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaWRsIFwKIAlXZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5pZGwgXAogCVdlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRsIFwK
KwlXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaWRsIFwKIAlXZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bCBcCiAJV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmlkbCBcCiAJV2ViQ29yZS9kb20vRXZl
bnQuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2MjE0MCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgICAgICAgICAnZG9tL0RPTUNv
cmVFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdkb20vRE9NSW1wbGVtZW50YXRpb24uaWRs
JywKICAgICAgICAgICAgICdkb20vRE9NU3RyaW5nTGlzdC5pZGwnLAorICAgICAgICAgICAgJ2Rv
bS9ET01TdHJpbmdNYXAuaWRsJywKICAgICAgICAgICAgICdkb20vRGV2aWNlT3JpZW50YXRpb25F
dmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudC5pZGwnLAogICAgICAgICAgICAg
J2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbCcsCkBAIC01NDMsNiArNTQ0LDggQEAKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01h
cEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAnLApAQCAtMTEwNiw2ICsxMTA5LDEw
IEBACiAgICAgICAgICAgICAnZG9tL0RPTUltcGxlbWVudGF0aW9uLmgnLAogICAgICAgICAgICAg
J2RvbS9ET01TdHJpbmdMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RPTVN0cmluZ0xpc3Qu
aCcsCisgICAgICAgICAgICAnZG9tL0RPTVN0cmluZ01hcC5jcHAnLAorICAgICAgICAgICAgJ2Rv
bS9ET01TdHJpbmdNYXAuaCcsCisgICAgICAgICAgICAnZG9tL0RhdGFzZXRET01TdHJpbmdNYXAu
Y3BwJywKKyAgICAgICAgICAgICdkb20vRGF0YXNldERPTVN0cmluZ01hcC5oJywKICAgICAgICAg
ICAgICdkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VP
cmllbnRhdGlvbi5jcHAnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUucHJpCShyZXZpc2lvbiA2MjE0MCkKKysrIFdlYkNvcmUvV2ViQ29y
ZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw2ICsyODgsNyBAQCBJRExfQklORElOR1MgKz0g
XAogICAgIGRvbS9ET01Db3JlRXhjZXB0aW9uLmlkbCBcCiAgICAgZG9tL0RPTUltcGxlbWVudGF0
aW9uLmlkbCBcCiAgICAgZG9tL0RPTVN0cmluZ0xpc3QuaWRsIFwKKyAgICBkb20vRE9NU3RyaW5n
TWFwLmlkbCBcCiAgICAgZG9tL0VsZW1lbnQuaWRsIFwKICAgICBkb20vRW50aXR5LmlkbCBcCiAg
ICAgZG9tL0VudGl0eVJlZmVyZW5jZS5pZGwgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA2MjE0MCkKKysrIFdl
YkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCBcCiAgICAgYmlu
ZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcCBcCisgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKICAgICBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuY3BwIFwKQEAgLTQ4Myw2ICs0ODQsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRG9j
dW1lbnRUeXBlLmNwcCBcCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBcCiAgICAgZG9t
L0RPTVN0cmluZ0xpc3QuY3BwIFwKKyAgICBkb20vRE9NU3RyaW5nTWFwLmNwcCBcCisgICAgZG9t
L0RhdGFzZXRET01TdHJpbmdNYXAuY3BwIFwKICAgICBkb20vRHluYW1pY05vZGVMaXN0LmNwcCBc
CiAgICAgZG9tL0VkaXRpbmdUZXh0LmNwcCBcCiAgICAgZG9tL0VsZW1lbnQuY3BwIFwKQEAgLTEw
NzksNyArMTA4Miw3IEBAIEhFQURFUlMgKz0gXAogICAgIGJpbmRpbmdzL2pzL0pTRGVidWdXcmFw
cGVyU2V0LmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIFwKICAgICBiaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIFwKLSAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaCBcCisgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uaCBcCiAgICAgYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBcCkBAIC0xMjMx
LDYgKzEyMzQsOCBAQCBIRUFERVJTICs9IFwKICAgICBkb20vRG9jdW1lbnRUeXBlLmggXAogICAg
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oIFwKICAgICBkb20vRE9NU3RyaW5nTGlzdC5oIFwKKyAg
ICBkb20vRE9NU3RyaW5nTWFwLmggXAorICAgIGRvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmggXAog
ICAgIGRvbS9EeW5hbWljTm9kZUxpc3QuaCBcCiAgICAgZG9tL0VkaXRpbmdUZXh0LmggXAogICAg
IGRvbS9FbGVtZW50LmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiA2MjE0MCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM1MTMsNiArMzUxMyw2MiBAQAogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NU3RyaW5nTWFwLmNwcCINCisJCQkJ
Pg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIi
DQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50
ZXJuYWx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJ
CQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTVN0cmluZ01hcC5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRw
dXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTVdpbmRvdy5jcHAi
DQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMzIyMjksNiArMzIyODUsMTQg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXERhdGFzZXRET01TdHJpbmdNYXAuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERhdGFzZXRET01TdHJpbmdNYXAuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxE
b2N1bWVudC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzIyODUsNiArMzIzNDksMTQg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXERPTVN0cmluZ01hcC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRE9NU3RyaW5nTWFwLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRHluYW1pY05vZGVMaXN0
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC00MjE0MCw2ICs0MjIxMiw2MiBAQAogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdf
SW50ZXJuYWx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJ
Pg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJ
Lz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJ
CQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01TdHJpbmdNYXBDdXN0b20uaCINCisJ
CQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xKU0RPTVdpbmRvd0Jhc2UuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDYyMTQwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1MTUsNiArNDUxNSwxMyBAQAogCQlCQzYwREI0
OTBEMkEzRDFFMDBCOTkxOEYgLyogSlNYUGF0aEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzYwREI0NzBEMkEzRDFFMDBCOTkxOEYg
LyogSlNYUGF0aEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUJDNjBEQjRBMEQyQTNEMUUwMEI5OTE4
RiAvKiBKU1hQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzYwREI0ODBEMkEzRDFFMDBCOTkxOEYgLyogSlNYUGF0aEV4Y2VwdGlv
bi5oICovOyB9OwogCQlCQzYwRUZCNzBGMzNBMEU3MDA4MTJBOTMgLyogUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNjBFRkI2MEYzM0EwRTcwMDgxMkE5MyAvKiBSZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwICov
OyB9OworCQlCQzY0NjQwOTExRDdGMzA0MDA2NDU1QjAgLyogRE9NU3RyaW5nTWFwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDA3MTFEN0Yz
MDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuY3BwICovOyB9OworCQlCQzY0NjQwQTExRDdGMzA0
MDA2NDU1QjAgLyogRE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQwODExRDdGMzA0MDA2NDU1QjAgLyogRE9NU3RyaW5nTWFw
LmggKi87IH07CisJCUJDNjQ2NDFDMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5n
TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0
NjQxQTExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5oICovOyB9OworCQlC
QzY0NjQxRDExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQxQjExRDdGNDE2
MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5jcHAgKi87IH07CisJCUJDNjQ2NDk3MTFE
ODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQ5NTExRDgyMzQ5MDA2NDU1QjAgLyogSlNE
T01TdHJpbmdNYXAuY3BwICovOyB9OworCQlCQzY0NjQ5ODExRDgyMzQ5MDA2NDU1QjAgLyogSlNE
T01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNjQ2NDk2MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oICovOyB9Owor
CQlCQzY0NjQ5QzExRDgyMzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY0OUIxMUQ4
MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCAqLzsgfTsKIAkJQkM2NEI0
Q0IwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NEI0QzkwQ0I0Mjk1RDAwNUYyQjYyIC8qIENh
Y2hlZEZvbnQuY3BwICovOyB9OwogCQlCQzY0QjRDQzBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVk
Rm9udC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2
NEI0Q0EwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCAqLzsgfTsKIAkJQkM2NEI0RDUw
Q0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjRCNENEMENCNDI5OEEwMDVGMkI2MiAvKiBDU1NG
b250RmFjZS5jcHAgKi87IH07CkBAIC0xMDA3NSw2ICsxMDA4MiwxNCBAQAogCQlCQzYwREI0NzBE
MkEzRDFFMDBCOTkxOEYgLyogSlNYUGF0aEV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1hQYXRoRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM2MERCNDgwRDJBM0QxRTAwQjk5MThGIC8qIEpTWFBhdGhFeGNlcHRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYUGF0aEV4Y2VwdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzYwRUZCNjBGMzNBMEU3MDA4MTJBOTMg
LyogUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlck9iamVjdENoaWxkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDNjQ2NDA3MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NU3RyaW5nTWFwLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDY0MDgxMUQ3RjMwNDAwNjQ1NUIwIC8qIERP
TVN0cmluZ01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TdHJpbmdN
YXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDY0MUExMUQ3RjQxNjAwNjQ1
NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YXNldERPTVN0cmluZ01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzY0NjQxQjExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhc2V0RE9NU3RyaW5nTWFwLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDY0NzkxMUQ4MDBDRDAwNjQ1NUIw
IC8qIERPTVN0cmluZ01hcC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NU3RyaW5nTWFw
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDY0OTUxMUQ4MjM0OTAwNjQ1
NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRE9NU3RyaW5nTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkM2NDY0OTYxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NU3RyaW5nTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDNjQ2NDlCMTFEODIzOEMwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVN0cmlu
Z01hcEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjRCNEM5MENC
NDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhY2hlZEZvbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzY0QjRDQTBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDNjRCNENEMENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250RmFjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUwMSw2ICsxNDUxNiw4IEBACiAJCQkJNjVERjMxRTQw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTRE9NSW1wbGVtZW50YXRpb24uaCAqLywKIAkJCQlDNTEzN0NG
MDExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmNwcCAqLywKIAkJCQlDNTEzN0NG
MTExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmggKi8sCisJCQkJQkM2NDY0OTUx
MUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmNwcCAqLywKKwkJCQlCQzY0NjQ5NjEx
RDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCAqLywKIAkJCQk2NURGMzFFNTA5RDFD
QzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmNwcCAqLywKIAkJCQk2NURGMzFFNjA5RDFDQzYwMDAw
QkUzMjUgLyogSlNFbGVtZW50LmggKi8sCiAJCQkJNjVERjMyMkQwOUQxRERCQzAwMEJFMzI1IC8q
IEpTRW50aXR5LmNwcCAqLywKQEAgLTE1NjI4LDYgKzE1NjQ1LDcgQEAKIAkJCQk0OUM3QkE4QzEw
NDJGNUIxMDAwOUQ0NDcgLyogSlNEb2N1bWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFDMjI2MTYw
REI2OUY3NDAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAgKi8sCiAJ
CQkJMkUwODg4RTUxMTQ4ODRFMjAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGFDdXN0b20uY3BwICov
LAorCQkJCUJDNjQ2NDlCMTFEODIzOEMwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcEN1c3RvbS5j
cHAgKi8sCiAJCQkJQkNEOUMyNUUwQzE3QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9t
LmNwcCAqLywKIAkJCQk2NTJGQkJCQjBERTI3Q0I2MDAwMUQzODYgLyogSlNET01XaW5kb3dDdXN0
b20uaCAqLywKIAkJCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9t
LmNwcCAqLywKQEAgLTE2Nzc5LDYgKzE2Nzk3LDExIEBACiAJCQkJQzU1NjEwRjAxMUE3MDRFQjAw
QjgyRDI3IC8qIERPTVN0cmluZ0xpc3QuY3BwICovLAogCQkJCUM1NDQyNzQ5MTFBNTdFN0EwMDYz
QTc0OSAvKiBET01TdHJpbmdMaXN0LmggKi8sCiAJCQkJQzU0NDI3NEExMUE1N0U3QTAwNjNBNzQ5
IC8qIERPTVN0cmluZ0xpc3QuaWRsICovLAorCQkJCUJDNjQ2NDA3MTFEN0YzMDQwMDY0NTVCMCAv
KiBET01TdHJpbmdNYXAuY3BwICovLAorCQkJCUJDNjQ2NDA4MTFEN0YzMDQwMDY0NTVCMCAvKiBE
T01TdHJpbmdNYXAuaCAqLywKKwkJCQlCQzY0NjQ3OTExRDgwMENEMDA2NDU1QjAgLyogRE9NU3Ry
aW5nTWFwLmlkbCAqLywKKwkJCQlCQzY0NjQxQjExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERP
TVN0cmluZ01hcC5jcHAgKi8sCisJCQkJQkM2NDY0MUExMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFz
ZXRET01TdHJpbmdNYXAuaCAqLywKIAkJCQlCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogRHlu
YW1pY05vZGVMaXN0LmNwcCAqLywKIAkJCQlCQzdGQTYxRjBEMUYwQ0JEMDBEQjIyQTkgLyogRHlu
YW1pY05vZGVMaXN0LmggKi8sCiAJCQkJNjU1MEI2OTkwOTlERjAyNzAwOTBENzgxIC8qIEVkaXRp
bmdUZXh0LmNwcCAqLywKQEAgLTE5NjI4LDYgKzE5NjUxLDkgQEAKIAkJCQlFMUJFNTEyRTBDRjZD
NTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RE
NEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzY0NjQwQTExRDdGMzA0MDA2NDU1QjAgLyogRE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkM2NDY0OTgxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3Ry
aW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxOTU4LDYgKzIxOTg0LDEwIEBACiAJCQkJOTNG
MTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM2NDY0MDkxMUQ3RjMwNDAwNjQ1NUIwIC8q
IERPTVN0cmluZ01hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzY0NjQxRDExRDdGNDE2MDA2
NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzY0
NjQ5NzExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQkM2NDY0OUMxMUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01h
cEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z01hcEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTWFwQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNET01TdHJpbmdNYXAuaCIK
KworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIkRPTVN0cmluZ01hcC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNE
T01TdHJpbmdNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01TdHJpbmdNYXAq
IGltcGwsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gaW1w
bC0+Y29udGFpbnMoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworfQor
CitKU1ZhbHVlIEpTRE9NU3RyaW5nTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQoreworICAgIEpT
RE9NU3RyaW5nTWFwKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNET01TdHJpbmdNYXAqPihhc09i
amVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5pbXBs
KCktPml0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKK30KKwor
dm9pZCBKU0RPTVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkK
K3sKKyAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKKyAgICBtX2ltcGwtPmdldE5hbWVzKG5hbWVz
KTsKKyAgICBzaXplX3QgbGVuZ3RoID0gbmFtZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKG5hbWVzW2ldKSkpOworCisgICAgQmFzZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBKU0RP
TVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgLy8gT25seSBwZXJmb3JtIHRoZSBjdXN0b20gZGVs
ZXRlIGlmIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGEgbmF0aXZlIHByb3BlcnR5IGJ5IHRoaXMg
bmFtZS4KKyAgICAvLyBTaW5jZSBoYXNQcm9wZXJ0eSgpIHdvdWxkIGVuZCB1cCBjYWxsaW5nIGNh
bkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBmb29sZWQsIHdlIG5lZWQgdG8gY2hlY2sKKyAgICAv
LyB0aGUgbmF0aXZlIHByb3BlcnR5IHNsb3RzIG1hbnVhbGx5LgorICAgIFByb3BlcnR5U2xvdCBz
bG90OworICAgIGlmIChnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNET01TdHJpbmdNYXAsIEJhc2U+KGV4
ZWMsIHNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpcy0+cHJvdG90eXBlKCk7CisgICAgaWYgKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1faW1w
bC0+ZGVsZXRlSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgZWMpOworICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCit7
CisgICAgLy8gT25seSBwZXJmb3JtIHRoZSBjdXN0b20gcHV0IGlmIHRoZSBvYmplY3QgZG9lc24n
dCBoYXZlIGEgbmF0aXZlIHByb3BlcnR5IGJ5IHRoaXMgbmFtZS4KKyAgICAvLyBTaW5jZSBoYXNQ
cm9wZXJ0eSgpIHdvdWxkIGVuZCB1cCBjYWxsaW5nIGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBi
ZSBmb29sZWQsIHdlIG5lZWQgdG8gY2hlY2sKKyAgICAvLyB0aGUgbmF0aXZlIHByb3BlcnR5IHNs
b3RzIG1hbnVhbGx5LgorICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgIGlmIChnZXRTdGF0aWNW
YWx1ZVNsb3Q8SlNET01TdHJpbmdNYXAsIEJhc2U+KGV4ZWMsIHNfaW5mby5wcm9wSGFzaFRhYmxl
KGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpcy0+cHJvdG90eXBlKCk7Cisg
ICAgaWYgKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmhhc1By
b3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmco
ZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLT5zZXRJdGVt
KGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBzdHJpbmdWYWx1ZSwgZWMpOworICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z01hcEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJp
bmdNYXBDdXN0b20uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSlNET01TdHJpbmdNYXBDdXN0b21faAorI2RlZmluZSBKU0RPTVN0cmluZ01h
cEN1c3RvbV9oCisKKyNpbmNsdWRlICJKU0RPTVN0cmluZ01hcC5oIgorCisjZW5kaWYgLy8gSlNE
T01TdHJpbmdNYXBDdXN0b21faApJbmRleDogV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuY3BwCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01TdHJp
bmdNYXAuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitET01TdHJpbmdNYXA6On5ET01TdHJp
bmdNYXAoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Rv
bS9ET01TdHJpbmdNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01TdHJpbmdNYXBfaAor
I2RlZmluZSBET01TdHJpbmdNYXBfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBET01TdHJpbmdNYXAgOiBwdWJsaWMgTm9uY29w
eWFibGUgeworcHVibGljOgorICAgIHZpcnR1YWwgfkRPTVN0cmluZ01hcCgpOworCisgICAgdmly
dHVhbCB2b2lkIHJlZigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZXMoVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgaXRlbShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnMoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEl0
ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2Rl
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKKworcHJvdGVjdGVkOgorICAgIERPTVN0cmluZ01hcCgpCisg
ICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERP
TVN0cmluZ01hcF9oCkluZGV4OiBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9ET01TdHJpbmdNYXAuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgSGFz
TmFtZUdldHRlciwKKyAgICAgICAgQ3VzdG9tRGVsZXRlUHJvcGVydHksCisgICAgICAgIEN1c3Rv
bUdldFByb3BlcnR5TmFtZXMsCisgICAgICAgIERlbGVnYXRpbmdQdXRGdW5jdGlvbiwKKyAgICBd
IERPTVN0cmluZ01hcCB7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9kb20vRGF0YXNldERP
TVN0cmluZ01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmlu
Z01hcC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFw
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgorCisjaW5jbHVk
ZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIGlzVmFsaWRBdHRy
aWJ1dGVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAoIW5hbWUuc3RhcnRzV2l0
aCgiZGF0YS0iKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMgPSBuYW1lLmNoYXJhY3RlcnMoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBuYW1l
Lmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDU7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgU3RyaW5n
IGNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIFZlY3RvcjxVQ2hhcj4gbmV3U3RyaW5nQnVmZmVyOworCisgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMgPSBuYW1lLmNoYXJhY3RlcnMoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBu
YW1lLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDU7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSAhPSAnLScpCisgICAgICAgICAgICBuZXdTdHJp
bmdCdWZmZXIuYXBwZW5kKGNoYXJhY3RlcnNbaV0pOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICgoaSArIDEgPCBsZW5ndGgpICYmIGlzQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2kgKyAx
XSkpIHsKKyAgICAgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKHRvQVNDSUlVcHBl
cihjaGFyYWN0ZXJzW2kgKyAxXSkpOworICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQoY2hhcmFjdGVy
c1tpXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChuZXdT
dHJpbmdCdWZmZXIpOworfQorCitzdGF0aWMgYm9vbCBwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmli
dXRlTmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1
dGVOYW1lKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhYmxlIHRvIG1hdGNoIHdp
dGhvdXQgY3JlYXRpbmcgYSBuZXcgc3RyaW5nLgorCisgICAgaWYgKCFpc1ZhbGlkQXR0cmlidXRl
TmFtZShhdHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5n
IGNvbnZlcnRlZE5hbWUgPSBjb252ZXJ0QXR0cmlidXRlTmFtZVRvUHJvcGVydHlOYW1lKGF0dHJp
YnV0ZU5hbWUpOworICAgIHJldHVybiAoY29udmVydGVkTmFtZSA9PSBwcm9wZXJ0eU5hbWUpOwor
fQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IG5hbWUuY2hhcmFjdGVycygpOworICAg
IHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUubGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICctJyAm
JiAoaSArIDEgPCBsZW5ndGgpICYmIGlzQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2kgKyAxXSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitz
dGF0aWMgU3RyaW5nIGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIFZlY3RvcjxVQ2hhcj4gbmV3U3RyaW5nQnVmZmVyOworCisgICAg
bmV3U3RyaW5nQnVmZmVyLmFwcGVuZCgnZCcpOworICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQo
J2EnKTsKKyAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKCd0Jyk7CisgICAgbmV3U3RyaW5nQnVm
ZmVyLmFwcGVuZCgnYScpOworICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQoJy0nKTsKKworICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gbmFtZS5jaGFyYWN0ZXJzKCk7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkg
eworICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCgnLScpOworICAgICAgICAgICAg
bmV3U3RyaW5nQnVmZmVyLmFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQoY2hhcmFjdGVy
c1tpXSk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQobmV3U3RyaW5nQnVmZmVy
KTsKK30KKworCit2b2lkIERhdGFzZXRET01TdHJpbmdNYXA6OnJlZigpCit7CisgICAgbV9lbGVt
ZW50LT5yZWYoKTsKK30KKwordm9pZCBEYXRhc2V0RE9NU3RyaW5nTWFwOjpkZXJlZigpCit7Cisg
ICAgbV9lbGVtZW50LT5kZXJlZigpOworfQorCit2b2lkIERhdGFzZXRET01TdHJpbmdNYXA6Omdl
dE5hbWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1lcykKK3sKKyAgICBOYW1lZE5vZGVNYXAqIGF0dHJp
YnV0ZU1hcCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcyh0cnVlKTsKKyAgICBpZiAoYXR0cmlidXRl
TWFwKSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZU1hcC0+bGVuZ3RoKCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAg
ICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVNYXAtPmF0dHJpYnV0ZUl0ZW0o
aSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRlLT5sb2Nh
bE5hbWUoKSkpCisgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKGNvbnZlcnRBdHRyaWJ1dGVO
YW1lVG9Qcm9wZXJ0eU5hbWUoYXR0cmlidXRlLT5sb2NhbE5hbWUoKSkpOworICAgICAgICB9Cisg
ICAgfQorfQorCitTdHJpbmcgRGF0YXNldERPTVN0cmluZ01hcDo6aXRlbShjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSBtX2VsZW1lbnQtPmF0
dHJpYnV0ZXModHJ1ZSk7CisgICAgaWYgKGF0dHJpYnV0ZU1hcCkgeworICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBhdHRyaWJ1dGVNYXAtPmxlbmd0aCgpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmli
dXRlID0gYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1l
KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgRGF0YXNldERPTVN0
cmluZ01hcDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIE5hbWVkTm9kZU1h
cCogYXR0cmlidXRlTWFwID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKHRydWUpOworICAgIGlmIChh
dHRyaWJ1dGVNYXApIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlTWFwLT5s
ZW5ndGgoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZU1hcC0+YXR0cmli
dXRlSXRlbShpKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRl
TmFtZShuYW1lLCBhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
RGF0YXNldERPTVN0cmluZ01hcDo6c2V0SXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghaXNWYWxpZFByb3Bl
cnR5TmFtZShuYW1lKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjb252ZXJ0UHJvcGVydHlO
YW1lVG9BdHRyaWJ1dGVOYW1lKG5hbWUpLCB2YWx1ZSwgZWMpOworfQorCit2b2lkIERhdGFzZXRE
T01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIWlzVmFsaWRQcm9wZXJ0eU5hbWUobmFtZSkpIHsKKyAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhjZXB0aW9u
Q29kZSBkdW1teTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShjb252ZXJ0UHJvcGVy
dHlOYW1lVG9BdHRyaWJ1dGVOYW1lKG5hbWUpLCBkdW1teSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERhdGFzZXRET01TdHJpbmdNYXBfaAorI2Rl
ZmluZSBEYXRhc2V0RE9NU3RyaW5nTWFwX2gKKworI2luY2x1ZGUgIkRPTVN0cmluZ01hcC5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRWxlbWVudDsKKworY2xhc3MgRGF0YXNldERPTVN0cmluZ01hcCA6IHB1YmxpYyBET01TdHJp
bmdNYXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPERhdGFzZXRET01TdHJpbmdN
YXA+IGNyZWF0ZShFbGVtZW50KiBlbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBE
YXRhc2V0RE9NU3RyaW5nTWFwKGVsZW1lbnQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBy
ZWYoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZXRO
YW1lcyhWZWN0b3I8U3RyaW5nPiYpOworICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0oY29uc3QgU3Ry
aW5nJiBuYW1lKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSXRl
bShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBE
YXRhc2V0RE9NU3RyaW5nTWFwKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgICAgIDogbV9lbGVtZW50
KGVsZW1lbnQpCisgICAgeworICAgIH0KKworICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERhdGFzZXRET01TdHJpbmdNYXBf
aApJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDYyMTQwKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RM
aXN0LmgiCisjaW5jbHVkZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRS
YXJlRGF0YS5oIgpAQCAtMTUyMCw2ICsxNTIxLDE0IEBAIGJvb2wgRWxlbWVudDo6d2Via2l0TWF0
Y2hlc1NlbGVjdG9yKGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0RPTVN0cmluZ01hcCog
RWxlbWVudDo6ZGF0YXNldCgpCit7CisgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0gZW5zdXJl
UmFyZURhdGEoKTsKKyAgICBpZiAoIWRhdGEtPm1fZGF0YXNldERPTVN0cmluZ01hcCkKKyAgICAg
ICAgZGF0YS0+bV9kYXRhc2V0RE9NU3RyaW5nTWFwID0gRGF0YXNldERPTVN0cmluZ01hcDo6Y3Jl
YXRlKHRoaXMpOworICAgIHJldHVybiBkYXRhLT5tX2RhdGFzZXRET01TdHJpbmdNYXAuZ2V0KCk7
Cit9CisKIEtVUkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpIGNvbnN0CiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDogV2ViQ29yZS9kb20v
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24g
NjIxNDApCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXR0cmlidXRlOwogY2xhc3MgQ2xp
ZW50UmVjdDsKIGNsYXNzIENsaWVudFJlY3RMaXN0OworY2xhc3MgRE9NU3RyaW5nTWFwOwogY2xh
c3MgRWxlbWVudFJhcmVEYXRhOwogY2xhc3MgSW50U2l6ZTsKIApAQCAtMjYyLDYgKzI2Myw4IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgd2Via2l0TWF0Y2hlc1NlbGVjdG9yKGNvbnN0IFN0cmluZyYg
c2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBET01TdHJpbmdNYXAqIGRhdGFzZXQo
KTsKKwogICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5Rm9ybUNvbnRy
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDYyMTQw
KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5
LDEyIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgLy8gSFRNTCA1CiAgICAgICAgIE5vZGVMaXN0
IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoaW4gRE9NU3RyaW5nIG5hbWUpOwogCisjaWYgZGVmaW5l
ZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCisjaWYgIWRlZmlu
ZWQoVjhfQklORElORykgfHwgIVY4X0JJTkRJTkcKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZ01hcCBkYXRhc2V0OworI2VuZGlmCisjZW5kaWYKKwogICAgICAgICAvLyBOb2Rl
U2VsZWN0b3IgLSBTZWxlY3RvciBBUEkKICAgICAgICAgRWxlbWVudCBxdWVyeVNlbGVjdG9yKGlu
IERPTVN0cmluZyBzZWxlY3RvcnMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
SW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCShyZXZpc2lvbiA2MjE0MCkKKysrIFdlYkNvcmUvZG9t
L0VsZW1lbnRSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiwxMCBAQAogI2lm
bmRlZiBFbGVtZW50UmFyZURhdGFfaAogI2RlZmluZSBFbGVtZW50UmFyZURhdGFfaAogCisjaW5j
bHVkZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNs
dWRlICJOb2RlUmFyZURhdGEuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzgsNiArNDAsOCBAQCBwdWJsaWM6CiAKICAgICBJbnRTaXplIG1f
bWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fY29tcHV0
ZWRTdHlsZTsKKworICAgIE93blB0cjxEYXRhc2V0RE9NU3RyaW5nTWFwPiBtX2RhdGFzZXRET01T
dHJpbmdNYXA7CiB9OwogCiBpbmxpbmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNp
emluZygpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gNjIxNDApCisrKyBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDYgKzQ1OSw4IEBAIG1vZHVs
ZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPTNEX0NBTlZBUyxFbmFi
bGVkQXRSdW50aW1lXSBXZWJHTFJlbmRlcmluZ0NvbnRleHRDb25zdHJ1Y3RvciBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ7CiAgICAgICAgIGF0dHJpYnV0ZSBUZXh0TWV0cmljc0NvbnN0cnVjdG9yIFRl
eHRNZXRyaWNzOwogCisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmdNYXBDb25zdHJ1Y3RvciBE
T01TdHJpbmdNYXA7CisKICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXIsQ29uZGl0
aW9uYWw9M0RfQ0FOVkFTLEVuYWJsZWRBdFJ1bnRpbWVdIEFycmF5QnVmZmVyQ29uc3RydWN0b3Ig
QXJyYXlCdWZmZXI7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRyaWJ1
dGUgW0pTQ0N1c3RvbUdldHRlcixDb25kaXRpb25hbD0zRF9DQU5WQVMsRW5hYmxlZEF0UnVudGlt
ZV0gSW50OEFycmF5Q29uc3RydWN0b3IgSW50OEFycmF5OyAvLyBVc2FibGUgd2l0aCBuZXcgb3Bl
cmF0b3IKICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXIsQ29uZGl0aW9uYWw9M0Rf
Q0FOVkFTLEVuYWJsZWRBdFJ1bnRpbWVdIFVpbnQ4QXJyYXlDb25zdHJ1Y3RvciBVaW50OEFycmF5
OyAvLyBVc2FibGUgd2l0aCBuZXcgb3BlcmF0b3IKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMTYxKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDYtMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGNoYW5nZXMgZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE0NgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODEyNjA2OT4KKyAgICAgICAgSW1wbGVtZW50IHRoZSAuZGF0YXNldCBET00gcHJv
cGVydHkKKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNj
cmlwdG9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vZGF0YXNldC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2RhdGFzZXQteGh0bWwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9kYXRhc2V0LXhodG1sLnhodG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9kYXRhc2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9k
b20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
ZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9k
b20vc2NyaXB0LXRlc3RzL2RhdGFzZXQteGh0bWwuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NjcmlwdC10ZXN0cy9kYXRhc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9z
Y3JpcHQtdGVzdHMvZG9tTGlzdEVudW1lcmF0aW9uLmpzOgorICAgICAgICAqIGZhc3QvanMvZ2xv
YmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDYtMzAgIFl1em8gRnVqaXNo
aW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3Rl
aW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kYXRhc2V0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kYXRhc2V0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2RhdGFzZXQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACitUaGlzIHRlc3RzIGVsZW1lbnQuZGF0YXNldC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdEdldCgnZGF0YS1mb28n
LCAnZm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0R2V0KCdkYXRhLWZvby1iYXInLCAnZm9vQmFyJykg
aXMgdHJ1ZQorUEFTUyB0ZXN0R2V0KCdkYXRhLS0nLCAnLScpIGlzIHRydWUKK1BBU1MgdGVzdEdl
dCgnZGF0YS0tZm9vJywgJ0ZvbycpIGlzIHRydWUKK1BBU1MgdGVzdEdldCgnZGF0YS0tLWZvbycs
ICctRm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0R2V0KCdkYXRhLUZvbycsICdmb28nKSBpcyB0cnVl
CitQQVNTIHRlc3RHZXQoJ2RhdGEtJywgJycpIGlzIHRydWUKK1BBU1MgdGVzdEdldCgnZGF0YS3D
oCcsICfDoCcpIGlzIHRydWUKKworUEFTUyBtYXRjaGVzTm90aGluZ0luRGF0YXNldCgnZGF0YUZv
bycpIGlzIHRydWUKKworUEFTUyB0ZXN0U2V0KCdmb28nLCAnZGF0YS1mb28nKSBpcyB0cnVlCitQ
QVNTIHRlc3RTZXQoJ2Zvb0JhcicsICdkYXRhLWZvby1iYXInKSBpcyB0cnVlCitQQVNTIHRlc3RT
ZXQoJy0nLCAnZGF0YS0tJykgaXMgdHJ1ZQorUEFTUyB0ZXN0U2V0KCdGb28nLCAnZGF0YS0tZm9v
JykgaXMgdHJ1ZQorUEFTUyB0ZXN0U2V0KCctRm9vJywgJ2RhdGEtLS1mb28nKSBpcyB0cnVlCitQ
QVNTIHRlc3RTZXQoJycsICdkYXRhLScpIGlzIHRydWUKK1BBU1MgdGVzdFNldCgnw6AnLCAnZGF0
YS3DoCcpIGlzIHRydWUKKworUEFTUyB0ZXN0U2V0KCctZm9vJywgJ2R1bW15JykgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyB0ZXN0U2V0
KCdmb28gJywgJ2R1bW15JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlI6IERPTSBFeGNlcHRpb24gNS4KK1BBU1MgdGVzdFNldCgnZm9v76SAJywgJ2R1bW15Jykg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRp
b24gNS4KKworUEFTUyB0ZXN0RGVsZXRlKCdkYXRhLWZvbycsICdmb28nKSBpcyB0cnVlCitQQVNT
IHRlc3REZWxldGUoJ2RhdGEtZm9vLWJhcicsICdmb29CYXInKSBpcyB0cnVlCitQQVNTIHRlc3RE
ZWxldGUoJ2RhdGEtLScsICctJykgaXMgdHJ1ZQorUEFTUyB0ZXN0RGVsZXRlKCdkYXRhLS1mb28n
LCAnRm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0RGVsZXRlKCdkYXRhLS0tZm9vJywgJy1Gb28nKSBp
cyB0cnVlCitQQVNTIHRlc3REZWxldGUoJ2RhdGEtJywgJycpIGlzIHRydWUKK1BBU1MgdGVzdERl
bGV0ZSgnZGF0YS3DoCcsICfDoCcpIGlzIHRydWUKKworUEFTUyB0ZXN0RGVsZXRlKCdkdW1teScs
ICctZm9vJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9u
IDEyLgorCitQQVNTIHRlc3RGb3JJbihbJ2RhdGEtZm9vJywgJ2RhdGEtYmFyJywgJ2RhdGEtYmF6
J10pIGlzIDMKK1BBU1MgdGVzdEZvckluKFsnZGF0YS1mb28nLCAnZGF0YS1iYXInLCAnZGF0YUZv
byddKSBpcyAyCitQQVNTIHRlc3RGb3JJbihbJ2RhdGEtZm9vJywgJ2RhdGEtYmFyJywgJ3N0eWxl
J10pIGlzIDIKK1BBU1MgdGVzdEZvckluKFsnZGF0YS1mb28nLCAnZGF0YS1iYXInLCAnZGF0YS0n
XSkgaXMgMworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RhdGFzZXQteGh0bWwtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RhdGFzZXQteGh0bWwtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZGF0YXNldC14aHRt
bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKK1RoaXMgdGVzdHMg
ZWxlbWVudC5kYXRhc2V0IGZvciBYSFRNTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgdGVzdEdldCgnZGF0YS1mb28nLCAnZm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0R2V0
KCdkYXRhLWZvby1iYXInLCAnZm9vQmFyJykgaXMgdHJ1ZQorUEFTUyB0ZXN0R2V0KCdkYXRhLS0n
LCAnLScpIGlzIHRydWUKK1BBU1MgdGVzdEdldCgnZGF0YS0tZm9vJywgJ0ZvbycpIGlzIHRydWUK
K1BBU1MgdGVzdEdldCgnZGF0YS0tLWZvbycsICctRm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0R2V0
KCdkYXRhLScsICcnKSBpcyB0cnVlCitQQVNTIHRlc3RHZXQoJ2RhdGEtw6AnLCAnw6AnKSBpcyB0
cnVlCisKK1BBU1MgbWF0Y2hlc05vdGhpbmdJbkRhdGFzZXQoJ2RhdGFGb28nKSBpcyB0cnVlCitQ
QVNTIG1hdGNoZXNOb3RoaW5nSW5EYXRhc2V0KCdkYXRhLUZvbycpIGlzIHRydWUKKworUEFTUyB0
ZXN0U2V0KCdmb28nLCAnZGF0YS1mb28nKSBpcyB0cnVlCitQQVNTIHRlc3RTZXQoJ2Zvb0Jhcics
ICdkYXRhLWZvby1iYXInKSBpcyB0cnVlCitQQVNTIHRlc3RTZXQoJy0nLCAnZGF0YS0tJykgaXMg
dHJ1ZQorUEFTUyB0ZXN0U2V0KCdGb28nLCAnZGF0YS0tZm9vJykgaXMgdHJ1ZQorUEFTUyB0ZXN0
U2V0KCctRm9vJywgJ2RhdGEtLS1mb28nKSBpcyB0cnVlCitQQVNTIHRlc3RTZXQoJycsICdkYXRh
LScpIGlzIHRydWUKK1BBU1MgdGVzdFNldCgnw6AnLCAnZGF0YS3DoCcpIGlzIHRydWUKKworUEFT
UyB0ZXN0U2V0KCctZm9vJywgJ2R1bW15JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhf
RVJSOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyB0ZXN0U2V0KCdmb28gJywgJ2R1bW15JykgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24g
NS4KK1BBU1MgdGVzdFNldCgnZm9v76SAJywgJ2R1bW15JykgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNS4KKworUEFTUyB0ZXN0RGVs
ZXRlKCdkYXRhLWZvbycsICdmb28nKSBpcyB0cnVlCitQQVNTIHRlc3REZWxldGUoJ2RhdGEtZm9v
LWJhcicsICdmb29CYXInKSBpcyB0cnVlCitQQVNTIHRlc3REZWxldGUoJ2RhdGEtLScsICctJykg
aXMgdHJ1ZQorUEFTUyB0ZXN0RGVsZXRlKCdkYXRhLS1mb28nLCAnRm9vJykgaXMgdHJ1ZQorUEFT
UyB0ZXN0RGVsZXRlKCdkYXRhLS0tZm9vJywgJy1Gb28nKSBpcyB0cnVlCitQQVNTIHRlc3REZWxl
dGUoJ2RhdGEtJywgJycpIGlzIHRydWUKK1BBU1MgdGVzdERlbGV0ZSgnZGF0YS3DoCcsICfDoCcp
IGlzIHRydWUKKworUEFTUyB0ZXN0RGVsZXRlKCdkdW1teScsICctZm9vJykgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorCitQQVNTIHRlc3RGb3JJ
bihbJ2RhdGEtZm9vJywgJ2RhdGEtYmFyJywgJ2RhdGEtYmF6J10pIGlzIDMKK1BBU1MgdGVzdEZv
ckluKFsnZGF0YS1mb28nLCAnZGF0YS1iYXInLCAnZGF0YUZvbyddKSBpcyAyCitQQVNTIHRlc3RG
b3JJbihbJ2RhdGEtZm9vJywgJ2RhdGEtYmFyJywgJ3N0eWxlJ10pIGlzIDIKK1BBU1MgdGVzdEZv
ckluKFsnZGF0YS1mb28nLCAnZGF0YS1iYXInLCAnZGF0YS0nXSkgaXMgMworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2RhdGFzZXQteGh0bWwueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZGF0YXNldC14aHRtbC54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2RhdGFzZXQteGh0bWwueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgaHRt
bCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9U
Ui94aHRtbDExL0RURC94aHRtbDExLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIj4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPjwvbGluaz4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kYXRhc2V0LXhodG1sLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RhdGFz
ZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kYXRhc2V0Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kYXRhc2V0Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvZGF0YXNldC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJh
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYyMTQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQCBQQVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzInCiBQQVNTIHJlc3VsdEFycmF5
WzJdLml0ZW0gaXMgbmFtZWROb2RlTWFwLml0ZW0oMikKIAogW29iamVjdCBIVE1MRm9ybUVsZW1l
bnRdCi1QQVNTIHJlc3VsdEFycmF5Lmxlbmd0aCBpcyAxMzUKK1BBU1MgcmVzdWx0QXJyYXkubGVu
Z3RoIGlzIDEzNgogUEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwogUEFTUyByZXN1bHRBcnJh
eVswXS5pdGVtIGlzIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKVswXQog
UEFTUyByZXN1bHRBcnJheVsxXS5pIGlzICcxJwpAQCAtNDEsNyArNDEsNyBAQCBQQVNTIHJlc3Vs
dEFycmF5WzJdLmkgaXMgJzInCiBQQVNTIHJlc3VsdEFycmF5WzJdLml0ZW0gaXMgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzJdCiAKIFtvYmplY3QgSFRNTFNlbGVjdEVs
ZW1lbnRdCi1QQVNTIHJlc3VsdEFycmF5Lmxlbmd0aCBpcyAxNDMKK1BBU1MgcmVzdWx0QXJyYXku
bGVuZ3RoIGlzIDE0NAogUEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwogUEFTUyByZXN1bHRB
cnJheVswXS5pdGVtIGlzIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdvcHRpb24nKVsw
XQogUEFTUyByZXN1bHRBcnJheVsxXS5pIGlzICcxJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNjIxNDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJp
dGFuY2UtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDkgQEAgUEFT
UyBET01BcHBsaWNhdGlvbkNhY2hlUHJvdG90eXBlIGZyb20gaQogUEFTUyBET01JbXBsZW1lbnRh
dGlvbiBmcm9tIGlubmVyLmRvY3VtZW50LmZvcm1zLnRlc3RGb3JtLjAub3duZXJEb2N1bWVudC5p
bXBsZW1lbnRhdGlvbgogUEFTUyBET01JbXBsZW1lbnRhdGlvbkNvbnN0cnVjdG9yIGZyb20gaW5u
ZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5vd25lckRvY3VtZW50LmltcGxlbWVudGF0aW9u
LmNvbnN0cnVjdG9yCiBQQVNTIERPTUltcGxlbWVudGF0aW9uUHJvdG90eXBlIGZyb20gaW5uZXIu
ZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5vd25lckRvY3VtZW50LmltcGxlbWVudGF0aW9uLl9f
cHJvdG9fXworUEFTUyBET01TdHJpbmdNYXAgZnJvbSBpbm5lci5kb2N1bWVudC5mb3Jtcy50ZXN0
Rm9ybS4wLmRhdGFzZXQKK1BBU1MgRE9NU3RyaW5nTWFwQ29uc3RydWN0b3IgZnJvbSBpbm5lci5k
b2N1bWVudC5mb3Jtcy50ZXN0Rm9ybS4wLmRhdGFzZXQuY29uc3RydWN0b3IKK1BBU1MgRE9NU3Ry
aW5nTWFwUHJvdG90eXBlIGZyb20gaW5uZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5kYXRh
c2V0Ll9fcHJvdG9fXwogUEFTUyBET01XaW5kb3cgZnJvbSBpbm5lcgogUEFTUyBET01XaW5kb3dQ
cm90b3R5cGUgZnJvbSBpbm5lci5kb2N1bWVudC5mb3Jtcy50ZXN0Rm9ybS4wLm93bmVyRG9jdW1l
bnQuZGVmYXVsdFZpZXcuX19wcm90b19fCiBQQVNTIERvY3VtZW50UHJvdG90eXBlIGZyb20gaW5u
ZXIuZG9jdW1lbnQuZm9ybXMudGVzdEZvcm0uMC5vd25lckRvY3VtZW50Ll9fcHJvdG9fXy5fX3By
b3RvX18KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBl
LWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjIxNDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw4IEBAIFBBU1MgaW5uZXIuRE9NUGFyc2VyLmlzSW5uZXIgaXMgdHJ1
ZQogUEFTUyBpbm5lci5ET01QYXJzZXIuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNT
IGlubmVyLkRPTVN0cmluZ0xpc3QuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLkRPTVN0cmlu
Z0xpc3QuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkRPTVN0cmluZ01h
cC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuRE9NU3RyaW5nTWFwLmNvbnN0cnVjdG9yLmlz
SW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5Eb2N1bWVudC5pc0lubmVyIGlzIHRydWUKIFBBU1Mg
aW5uZXIuRG9jdW1lbnQuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLkRv
Y3VtZW50RnJhZ21lbnQuaXNJbm5lciBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDYyMTQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTU4LDYgKzU1OCw4IEBA
IHdpbmRvdy5ET01TdHJpbmdMaXN0IFtvYmplY3QgRE9NU3RyaW5nTGkKIHdpbmRvdy5ET01TdHJp
bmdMaXN0LnByb3RvdHlwZSBbb2JqZWN0IERPTVN0cmluZ0xpc3RQcm90b3R5cGVdCiB3aW5kb3cu
RE9NU3RyaW5nTGlzdC5wcm90b3R5cGUuY29udGFpbnMgW2Z1bmN0aW9uXQogd2luZG93LkRPTVN0
cmluZ0xpc3QucHJvdG90eXBlLml0ZW0gW2Z1bmN0aW9uXQord2luZG93LkRPTVN0cmluZ01hcCBb
b2JqZWN0IERPTVN0cmluZ01hcENvbnN0cnVjdG9yXQord2luZG93LkRPTVN0cmluZ01hcC5wcm90
b3R5cGUgW29iamVjdCBET01TdHJpbmdNYXBQcm90b3R5cGVdCiB3aW5kb3cuRG9jdW1lbnQgW29i
amVjdCBEb2N1bWVudENvbnN0cnVjdG9yXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZSBbb2Jq
ZWN0IERvY3VtZW50UHJvdG90eXBlXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5BVFRSSUJV
VEVfTk9ERSBbbnVtYmVyXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDYyMTQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAgUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcAog
UEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdET01J
bXBsZW1lbnRhdGlvbicpIGlzICdvYmplY3QnCiBQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ0RPTVBhcnNlcicpIGlzICdvYmplY3QnCiBQQVNTIHR5
cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ0RPTVN0cmluZ0xp
c3QnKSBpcyAnb2JqZWN0JworUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcih3aW5kb3csICdET01TdHJpbmdNYXAnKSBpcyAnb2JqZWN0JwogUEFTUyB0eXBlb2YgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdEYXRlJykgaXMgJ29iamVjdCcK
IFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnRG9j
dW1lbnQnKSBpcyAnb2JqZWN0JwogUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3aW5kb3csICdEb2N1bWVudEZyYWdtZW50JykgaXMgJ29iamVjdCcKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kYXRhc2V0LXhodG1sLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kYXRhc2V0LXhodG1sLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RhdGFz
ZXQteGh0bWwuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIGVsZW1lbnQuZGF0YXNldCBmb3IgWEhUTUwuIik7CisKK2Z1bmN0aW9uIHRlc3RH
ZXQoYXR0ciwgZXhwZWN0ZWQpCit7CisgICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICBkLnNldEF0dHJpYnV0ZShhdHRyLCAidmFsdWUiKTsKKyAgICByZXR1cm4g
ZC5kYXRhc2V0W2V4cGVjdGVkXSA9PSAidmFsdWUiOworfQorCitzaG91bGRCZVRydWUoInRlc3RH
ZXQoJ2RhdGEtZm9vJywgJ2ZvbycpIik7CitzaG91bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtZm9v
LWJhcicsICdmb29CYXInKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0R2V0KCdkYXRhLS0nLCAnLScp
Iik7CitzaG91bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtLWZvbycsICdGb28nKSIpOworc2hvdWxk
QmVUcnVlKCJ0ZXN0R2V0KCdkYXRhLS0tZm9vJywgJy1Gb28nKSIpOworc2hvdWxkQmVUcnVlKCJ0
ZXN0R2V0KCdkYXRhLScsICcnKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0R2V0KCdkYXRhLVx4RTAn
LCAnXHhFMCcpIik7CitkZWJ1ZygiIik7CisKK2Z1bmN0aW9uIG1hdGNoZXNOb3RoaW5nSW5EYXRh
c2V0KGF0dHIpCit7CisgICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICBkLnNldEF0dHJpYnV0ZShhdHRyLCAidmFsdWUiKTsKKworICAgIHZhciBjb3VudCA9IDA7
CisgICAgZm9yICh2YXIgaXRlbSBpbiBkLmRhdGFzZXQpCisgICAgICAgIGNvdW50Kys7CisgICAg
cmV0dXJuIGNvdW50ID09IDA7Cit9CisKK3Nob3VsZEJlVHJ1ZSgibWF0Y2hlc05vdGhpbmdJbkRh
dGFzZXQoJ2RhdGFGb28nKSIpOworc2hvdWxkQmVUcnVlKCJtYXRjaGVzTm90aGluZ0luRGF0YXNl
dCgnZGF0YS1Gb28nKSIpOworZGVidWcoIiIpOworCitmdW5jdGlvbiB0ZXN0U2V0KHByb3AsIGV4
cGVjdGVkKQoreworICAgIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgZC5kYXRhc2V0W3Byb3BdID0gInZhbHVlIjsKKyAgICByZXR1cm4gZC5nZXRBdHRyaWJ1dGUo
ZXhwZWN0ZWQpID09ICJ2YWx1ZSI7Cit9CisKK3Nob3VsZEJlVHJ1ZSgidGVzdFNldCgnZm9vJywg
J2RhdGEtZm9vJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNldCgnZm9vQmFyJywgJ2RhdGEtZm9v
LWJhcicpIik7CitzaG91bGRCZVRydWUoInRlc3RTZXQoJy0nLCAnZGF0YS0tJykiKTsKK3Nob3Vs
ZEJlVHJ1ZSgidGVzdFNldCgnRm9vJywgJ2RhdGEtLWZvbycpIik7CitzaG91bGRCZVRydWUoInRl
c3RTZXQoJy1Gb28nLCAnZGF0YS0tLWZvbycpIik7CitzaG91bGRCZVRydWUoInRlc3RTZXQoJycs
ICdkYXRhLScpIik7CitzaG91bGRCZVRydWUoInRlc3RTZXQoJ1x4RTAnLCAnZGF0YS1ceEUwJyki
KTsKK2RlYnVnKCIiKTsKKworc2hvdWxkVGhyb3coInRlc3RTZXQoJy1mb28nLCAnZHVtbXknKSIs
ICInRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTInIik7CitzaG91bGRUaHJvdygi
dGVzdFNldCgnZm9vXHgyMCcsICdkdW1teScpIiwgIidFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJf
RVJSOiBET00gRXhjZXB0aW9uIDUnIik7CitzaG91bGRUaHJvdygidGVzdFNldCgnZm9vXHVGOTAw
JywgJ2R1bW15JykiLCAiJ0Vycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRp
b24gNSciKTsKK2RlYnVnKCIiKTsKKworZnVuY3Rpb24gdGVzdERlbGV0ZShhdHRyLCBwcm9wKQor
eworICAgIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZC5zZXRB
dHRyaWJ1dGUoYXR0ciwgInZhbHVlIik7CisgICAgZGVsZXRlIGQuZGF0YXNldFtwcm9wXTsKKyAg
ICByZXR1cm4gZC5nZXRBdHRyaWJ1dGUoYXR0cikgIT0gInZhbHVlIjsKK30KKworc2hvdWxkQmVU
cnVlKCJ0ZXN0RGVsZXRlKCdkYXRhLWZvbycsICdmb28nKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0
RGVsZXRlKCdkYXRhLWZvby1iYXInLCAnZm9vQmFyJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdERl
bGV0ZSgnZGF0YS0tJywgJy0nKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0RGVsZXRlKCdkYXRhLS1m
b28nLCAnRm9vJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdERlbGV0ZSgnZGF0YS0tLWZvbycsICct
Rm9vJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdERlbGV0ZSgnZGF0YS0nLCAnJykiKTsKK3Nob3Vs
ZEJlVHJ1ZSgidGVzdERlbGV0ZSgnZGF0YS1ceEUwJywgJ1x4RTAnKSIpOworZGVidWcoIiIpOwor
CitzaG91bGRUaHJvdygidGVzdERlbGV0ZSgnZHVtbXknLCAnLWZvbycpIiwgIidFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKK2RlYnVnKCIiKTsKKworZnVuY3Rpb24gdGVz
dEZvckluKGFycmF5KQoreworICAgIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAg
ICBkLnNldEF0dHJpYnV0ZShhcnJheVtpXSwgInZhbHVlIik7CisgICAgfQorCisgICAgdmFyIGNv
dW50ID0gMDsKKyAgICBmb3IgKHZhciBpdGVtIGluIGQuZGF0YXNldCkKKyAgICAgICAgY291bnQr
KzsKKworICAgIHJldHVybiBjb3VudDsKK30KKworc2hvdWxkQmUoInRlc3RGb3JJbihbJ2RhdGEt
Zm9vJywgJ2RhdGEtYmFyJywgJ2RhdGEtYmF6J10pIiwgIjMiKTsKK3Nob3VsZEJlKCJ0ZXN0Rm9y
SW4oWydkYXRhLWZvbycsICdkYXRhLWJhcicsICdkYXRhRm9vJ10pIiwgIjIiKTsKK3Nob3VsZEJl
KCJ0ZXN0Rm9ySW4oWydkYXRhLWZvbycsICdkYXRhLWJhcicsICdzdHlsZSddKSIsICIyIik7Citz
aG91bGRCZSgidGVzdEZvckluKFsnZGF0YS1mb28nLCAnZGF0YS1iYXInLCAnZGF0YS0nXSkiLCAi
MyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kYXRhc2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kYXRhc2V0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RhdGFzZXQuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTQgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGVsZW1lbnQuZGF0YXNldC4i
KTsKKworZnVuY3Rpb24gdGVzdEdldChhdHRyLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgZCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGQuc2V0QXR0cmlidXRlKGF0dHIsICJ2
YWx1ZSIpOworICAgIHJldHVybiBkLmRhdGFzZXRbZXhwZWN0ZWRdID09ICJ2YWx1ZSI7Cit9CisK
K3Nob3VsZEJlVHJ1ZSgidGVzdEdldCgnZGF0YS1mb28nLCAnZm9vJykiKTsKK3Nob3VsZEJlVHJ1
ZSgidGVzdEdldCgnZGF0YS1mb28tYmFyJywgJ2Zvb0JhcicpIik7CitzaG91bGRCZVRydWUoInRl
c3RHZXQoJ2RhdGEtLScsICctJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdEdldCgnZGF0YS0tZm9v
JywgJ0ZvbycpIik7CitzaG91bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtLS1mb28nLCAnLUZvbycp
Iik7CitzaG91bGRCZVRydWUoInRlc3RHZXQoJ2RhdGEtRm9vJywgJ2ZvbycpIik7IC8vIEhUTUwg
bG93ZXJjYXNlcyBhbGwgYXR0cmlidXRlcy4KK3Nob3VsZEJlVHJ1ZSgidGVzdEdldCgnZGF0YS0n
LCAnJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdEdldCgnZGF0YS1ceEUwJywgJ1x4RTAnKSIpOwor
ZGVidWcoIiIpOworCitmdW5jdGlvbiBtYXRjaGVzTm90aGluZ0luRGF0YXNldChhdHRyKQorewor
ICAgIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZC5zZXRBdHRy
aWJ1dGUoYXR0ciwgInZhbHVlIik7CisKKyAgICB2YXIgY291bnQgPSAwOworICAgIGZvciAodmFy
IGl0ZW0gaW4gZC5kYXRhc2V0KQorICAgICAgICBjb3VudCsrOworICAgIHJldHVybiBjb3VudCA9
PSAwOworfQorCitzaG91bGRCZVRydWUoIm1hdGNoZXNOb3RoaW5nSW5EYXRhc2V0KCdkYXRhRm9v
JykiKTsKK2RlYnVnKCIiKTsKKworZnVuY3Rpb24gdGVzdFNldChwcm9wLCBleHBlY3RlZCkKK3sK
KyAgICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGQuZGF0YXNl
dFtwcm9wXSA9ICJ2YWx1ZSI7CisgICAgcmV0dXJuIGQuZ2V0QXR0cmlidXRlKGV4cGVjdGVkKSA9
PSAidmFsdWUiOworfQorCitzaG91bGRCZVRydWUoInRlc3RTZXQoJ2ZvbycsICdkYXRhLWZvbycp
Iik7CitzaG91bGRCZVRydWUoInRlc3RTZXQoJ2Zvb0JhcicsICdkYXRhLWZvby1iYXInKSIpOwor
c2hvdWxkQmVUcnVlKCJ0ZXN0U2V0KCctJywgJ2RhdGEtLScpIik7CitzaG91bGRCZVRydWUoInRl
c3RTZXQoJ0ZvbycsICdkYXRhLS1mb28nKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0U2V0KCctRm9v
JywgJ2RhdGEtLS1mb28nKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0U2V0KCcnLCAnZGF0YS0nKSIp
Oworc2hvdWxkQmVUcnVlKCJ0ZXN0U2V0KCdceEUwJywgJ2RhdGEtXHhFMCcpIik7CitkZWJ1Zygi
Iik7CisKK3Nob3VsZFRocm93KCJ0ZXN0U2V0KCctZm9vJywgJ2R1bW15JykiLCAiJ0Vycm9yOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyJyIpOworc2hvdWxkVGhyb3coInRlc3RTZXQoJ2Zv
b1x4MjAnLCAnZHVtbXknKSIsICInRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4
Y2VwdGlvbiA1JyIpOworc2hvdWxkVGhyb3coInRlc3RTZXQoJ2Zvb1x1RjkwMCcsICdkdW1teScp
IiwgIidFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUnIik7Citk
ZWJ1ZygiIik7CisKK2Z1bmN0aW9uIHRlc3REZWxldGUoYXR0ciwgcHJvcCkKK3sKKyAgICB2YXIg
ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGQuc2V0QXR0cmlidXRlKGF0
dHIsICJ2YWx1ZSIpOworICAgIGRlbGV0ZSBkLmRhdGFzZXRbcHJvcF07CisgICAgcmV0dXJuIGQu
Z2V0QXR0cmlidXRlKGF0dHIpICE9ICJ2YWx1ZSI7Cit9CisKK3Nob3VsZEJlVHJ1ZSgidGVzdERl
bGV0ZSgnZGF0YS1mb28nLCAnZm9vJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdERlbGV0ZSgnZGF0
YS1mb28tYmFyJywgJ2Zvb0JhcicpIik7CitzaG91bGRCZVRydWUoInRlc3REZWxldGUoJ2RhdGEt
LScsICctJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdERlbGV0ZSgnZGF0YS0tZm9vJywgJ0Zvbycp
Iik7CitzaG91bGRCZVRydWUoInRlc3REZWxldGUoJ2RhdGEtLS1mb28nLCAnLUZvbycpIik7Citz
aG91bGRCZVRydWUoInRlc3REZWxldGUoJ2RhdGEtJywgJycpIik7CitzaG91bGRCZVRydWUoInRl
c3REZWxldGUoJ2RhdGEtXHhFMCcsICdceEUwJykiKTsKK2RlYnVnKCIiKTsKKworc2hvdWxkVGhy
b3coInRlc3REZWxldGUoJ2R1bW15JywgJy1mb28nKSIsICInRXJyb3I6IFNZTlRBWF9FUlI6IERP
TSBFeGNlcHRpb24gMTInIik7CitkZWJ1ZygiIik7CisKK2Z1bmN0aW9uIHRlc3RGb3JJbihhcnJh
eSkKK3sKKyAgICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZC5zZXRBdHRy
aWJ1dGUoYXJyYXlbaV0sICJ2YWx1ZSIpOworICAgIH0KKworICAgIHZhciBjb3VudCA9IDA7Cisg
ICAgZm9yICh2YXIgaXRlbSBpbiBkLmRhdGFzZXQpCisgICAgICAgIGNvdW50Kys7CisKKyAgICBy
ZXR1cm4gY291bnQ7Cit9CisKK3Nob3VsZEJlKCJ0ZXN0Rm9ySW4oWydkYXRhLWZvbycsICdkYXRh
LWJhcicsICdkYXRhLWJheiddKSIsICIzIik7CitzaG91bGRCZSgidGVzdEZvckluKFsnZGF0YS1m
b28nLCAnZGF0YS1iYXInLCAnZGF0YUZvbyddKSIsICIyIik7CitzaG91bGRCZSgidGVzdEZvcklu
KFsnZGF0YS1mb28nLCAnZGF0YS1iYXInLCAnc3R5bGUnXSkiLCAiMiIpOworc2hvdWxkQmUoInRl
c3RGb3JJbihbJ2RhdGEtZm9vJywgJ2RhdGEtYmFyJywgJ2RhdGEtJ10pIiwgIjMiKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9z
Y3JpcHQtdGVzdHMvZG9tTGlzdEVudW1lcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kb21MaXN0RW51bWVyYXRpb24uanMJKHJldmlzaW9u
IDYyMTQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RvbUxpc3RFbnVt
ZXJhdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHNob3VsZEJlKCJy
ZXN1bHRBcnJheVsyXS5pdGVtIiwgIm5hbWVkTm8KIC8vIEhUTUxGb3JtRWxlbWVudAogdmFyIGh0
bWxGb3JtRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJylbMF07
CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGh0bWxGb3JtRWxlbWVudCk7Ci1zaG91bGRCZSgi
cmVzdWx0QXJyYXkubGVuZ3RoIiwgIjEzNSIpOworc2hvdWxkQmUoInJlc3VsdEFycmF5Lmxlbmd0
aCIsICIxMzYiKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVswXS5pIiwgIicwJyIpOwogc2hvdWxk
QmUoInJlc3VsdEFycmF5WzBdLml0ZW0iLCAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J3NlbGVjdCcpWzBdIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaSIsICInMSciKTsKQEAg
LTE0MSw3ICsxNDEsNyBAQCBzaG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaXRlbSIsICJkb2N1bWVu
CiAvLyBIVE1MU2VsZWN0RWxlbWVudAogdmFyIGh0bWxTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdOwogcmVzdWx0QXJyYXkgPSBpdGVyYXRl
TGlzdChodG1sU2VsZWN0RWxlbWVudCk7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXkubGVuZ3RoIiwg
IjE0MyIpOworc2hvdWxkQmUoInJlc3VsdEFycmF5Lmxlbmd0aCIsICIxNDQiKTsKIHNob3VsZEJl
KCJyZXN1bHRBcnJheVswXS5pIiwgIicwJyIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLml0
ZW0iLCAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29wdGlvbicpWzBdIik7CiBzaG91
bGRCZSgicmVzdWx0QXJyYXlbMV0uaSIsICInMSciKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NjIxNDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIFBBU1MgRE9NRXhjZXB0aW9u
LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QKIFBBU1MgRE9NSW1wbGVtZW50YXRpb24udG9TdHJpbmco
KSBpcyAnW29iamVjdCBET01JbXBsZW1lbnRhdGlvbkNvbnN0cnVjdG9yXScKIFBBU1MgRE9NUGFy
c2VyLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRE9NUGFyc2VyQ29uc3RydWN0b3JdJwogUEFTUyBE
T01TdHJpbmdMaXN0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRE9NU3RyaW5nTGlzdENvbnN0cnVj
dG9yXScKK1BBU1MgRE9NU3RyaW5nTWFwLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRE9NU3RyaW5n
TWFwQ29uc3RydWN0b3JdJwogUEFTUyBEb2N1bWVudC50b1N0cmluZygpIGlzICdbb2JqZWN0IERv
Y3VtZW50Q29uc3RydWN0b3JdJwogUEFTUyBEb2N1bWVudEZyYWdtZW50LnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgRG9jdW1lbnRGcmFnbWVudENvbnN0cnVjdG9yXScKIFBBU1MgRG9jdW1lbnRUeXBl
LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRG9jdW1lbnRUeXBlQ29uc3RydWN0b3JdJwo=
</data>
<flag name="review"
          id="47451"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>