<?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>60746</bug_id>
          
          <creation_ts>2011-05-12 19:07:19 -0700</creation_ts>
          <short_desc>IndexedDB chooses wrong record on PREV_NO_DUPLICATE index cursor</short_desc>
          <delta_ts>2012-04-17 16:26:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>hans</cc>
    
    <cc>jsbell</cc>
    
    <cc>pilgrim</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>403321</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-05-12 19:07:19 -0700</bug_when>
    <thetext>Original test: http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/test_indexes.html?force=1

This is an adapation of part of a test from Mozilla&apos;s IndexedDB test suite. It creates an object store with several rows, creates indexes on each key, and iterates through an index cursor from end to start using the PREV_NO_DUPLICATE flag. Of two records that contain the same key in the index, the cursor chooses the wrong one. Or, at least, a different one than Mozilla chooses. Here&apos;s the spec text that pertains to PREV_NO_DUPLICATE:

&quot;&quot;&quot;
PREV_NO_DUPLICATE of type unsigned short
indicates that this cursor should yield all records, not including duplicates and its direction is monotonically decreasing order of keys. For every key with duplicate values, only the first record is yielded.
&quot;&quot;&quot;

It&apos;s not clear whether &quot;the first record&quot; means &quot;the first record in decreasing order&quot; or &quot;the first record in increasing order.&quot; Mozilla chooses one interpretation and WebKit chooses the other.

Test case attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403323</commentid>
    <comment_count>1</comment_count>
      <attachid>93388</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-05-12 19:09:04 -0700</bug_when>
    <thetext>Created attachment 93388
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403324</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-05-12 19:10:43 -0700</bug_when>
    <thetext>In this test case, Joe and Pat have the same height. In an index cursor on the &apos;height&apos; key, starting at the end and moving backward with PREV_NO_DUPLICATE, the test expects to find Joe, but WebKit finds Pat instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405126</commentid>
    <comment_count>3</comment_count>
      <attachid>93785</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-05-17 10:21:19 -0700</bug_when>
    <thetext>Created attachment 93785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406693</commentid>
    <comment_count>4</comment_count>
      <attachid>93785</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-05-19 15:28:45 -0700</bug_when>
    <thetext>Comment on attachment 93785
Patch

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

It would be prudent to ask about this (and your other similar patch) on public-webapps but syncing our behavior with firefox is probably good enough.

&gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:62
&gt; +        { name: &quot;height&quot;, keyPath: &quot;height&quot;, options: { } },

This test only uses the height index, right?

&gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:119
&gt; +            if (&apos;weight&apos; in cursor.value) {

When doesn&apos;t it have a weight?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406960</commentid>
    <comment_count>5</comment_count>
      <attachid>93785</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-20 02:07:34 -0700</bug_when>
    <thetext>Comment on attachment 93785
Patch

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

&gt; Source/WebCore/storage/IDBSQLiteBackingStore.cpp:972
&gt; +        sql += &quot;IndexData.keyString DESC, IndexData.keyDate DESC, IndexData.keyNumber DESC, IndexData.id ASC&quot;;

This will be hard to do for the LeveLDB back-end, and that makes me wonder if it&apos;s worth matching Mozilla on this if it&apos;s not specified how it should work.

Also, for an index cursor that allows duplicates, doesn&apos;t this change mean that the order in which a reverse iterator sees the keys is not the reverse of what a forwarding iterator would see? That seems a little bit odd to me at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407031</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-05-20 06:27:58 -0700</bug_when>
    <thetext>Suspending this bug until I get an answer from public-webapps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516345</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-06 16:26:03 -0800</bug_when>
    <thetext>Consensus on the list: http://lists.w3.org/Archives/Public/public-webapps/2010OctDec/0599.html

Summary: PREV_NO_DUPLICATE should end up returning the same set of entries as NEXT_NO_DUPLICATE, just in reverse order. So PREV_NO_DUPLICATE should return the lowest (by primary key) of the duplicate entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602235</commentid>
    <comment_count>8</comment_count>
      <attachid>137106</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-13 11:09:06 -0700</bug_when>
    <thetext>Created attachment 137106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602240</commentid>
    <comment_count>9</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-13 11:11:16 -0700</bug_when>
    <thetext>jsbell@ - quick review before off to webkit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602357</commentid>
    <comment_count>10</comment_count>
      <attachid>137106</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-13 13:27:33 -0700</bug_when>
    <thetext>Comment on attachment 137106
Patch

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=60746

This also fixes 60763 so mention that in the comment block and/or mark that bug as a duplicate if there&apos;s no distinct code/test.

&gt; Source/WebCore/ChangeLog:10
&gt; +        When iterating backwards with PREV_NO_DUPLICATE, keep walking past

These comments should appear before the Test: line(s)

&gt; Source/WebCore/ChangeLog:12
&gt; +        covers the index and non-index (objectStore) case.

Nit: just write &quot;object store and index cases&quot;

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1045
&gt; +    RefPtr&lt;IDBKey&gt; previousDupKey;

Avoid abbreviations.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1058
&gt; +                // We need to turn around because we hit the end of

&quot;turn around&quot; or simply &quot;back up&quot;? This doesn&apos;t appear to repeat or change the iteration direction.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1065
&gt; +

Remove at least one of these blank lines

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1069
&gt; +

Remove blank line.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1072
&gt;          if (!m_transaction-&gt;get(m_iterator-&gt;key(), trash))

This implies that there are rows that should be skipped over during iteration. What happens if one of these is the last seen before the iterator ends (case above and case below) or a non-dupe is seen? Would the if (prevDupKey.get()) { m_iterator-&gt;next(); } cases back up to the row that can&apos;t be loaded? (In that case, the notion of &quot;turning around&quot; makes more sense as multiple next() calls may be necessary.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1112
&gt; +                // We need to turn around because we hit the boundary

This comment seems to apply to the next if() block

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1120
&gt; +                    //

Remove empty comment.

&gt; LayoutTests/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=60746

If not resolving 60763 as a duplicate, mention in the comment block.

&gt; LayoutTests/ChangeLog:10
&gt; +        * storage/indexeddb/cursor-reverse-bug-expected.txt:

Is there a cursor-reverse-bug.html that is missing from the patch?

&gt; LayoutTests/storage/indexeddb/cursor-prev-no-duplicate-expected.txt:27
&gt; +runTest(store.openCursor(IDBKeyRange.upperBound(7, false), 2)...

The setting up the test (starting the transaction, opening the cursor) and checking the results (cursor.key etc) are separated, which makes this logging not very useful in understanding the test. Either drop this logging or try and move the setup and results closer together (one transaction per test?)

&gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:20
&gt; +&lt;script&gt;

Should the JS be factored out of this test to match the others?

&gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:6
&gt; +description(&quot;Test IndexedDB keys ordering and readback from cursors.&quot;);

Description could be more specific.

&gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:59
&gt; +    // help us distinguish the queuing of the tests from the execution

Restructure the tests so this isn&apos;t necessary, otherwise the logging isn&apos;t valuable.

&gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:63
&gt; +

Too many blank lines.

&gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:67
&gt; +    // upper bound is well out of range, results always the same,

Prefer debug() statements to script comments, so the intent of the test is captured in the log if it isn&apos;t inherently clear.

&gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:136
&gt; +function makeOpenCursor(obj, upperBound, open, direction)

I think use of these functions make the test harder to read vs. just putting the string inline.

&gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:179
&gt; +        debug(&quot;     cursor.key = &quot; + cursor.key);

To make this take less space and improve the readability in the log, I&apos;ve been using this style:
shouldBe(&quot;cursor.key&quot;, JSON.stringify(expectation.expectedKey));

&gt; LayoutTests/storage/indexeddb/resources/shared.js:116
&gt; +// take an unspecified number of callback-like objects, wait for each

Capitalize.
Also, I&apos;d refer to these as &quot;request-like&quot; or &quot;promise-like&quot; or &quot;future-like&quot; rather than &quot;callback-like&quot;. Probably settle on &quot;request&quot; since this is an IDB-specific utility file (even though the function is generic, it&apos;s a good name)

&gt; LayoutTests/storage/indexeddb/resources/shared.js:119
&gt; +// appropriate onerror/onabort immediately.

Will onerror/onabort be called more than once? (Looks like yes.) Do we care? (Probably not.)

&gt; LayoutTests/storage/indexeddb/resources/shared.js:122
&gt; +

Remove blank line.

&gt; LayoutTests/storage/indexeddb/resources/shared.js:137
&gt; +        var event = arguments[i];

I&apos;d name this something other than event - request/future/promise.

&gt; LayoutTests/storage/indexeddb/resources/shared.js:146
&gt; +function waitFor_onsuccess(index, successes, eventResult)

Move this function inside the definition of waitFor() since it won&apos;t be called elsewhere.
If that is done, the successes argument can just become the progress var via the closure, and ditto for eventResult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602449</commentid>
    <comment_count>11</comment_count>
      <attachid>137161</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-13 15:21:42 -0700</bug_when>
    <thetext>Created attachment 137161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602454</commentid>
    <comment_count>12</comment_count>
      <attachid>137164</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-13 15:23:42 -0700</bug_when>
    <thetext>Created attachment 137164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602456</commentid>
    <comment_count>13</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-13 15:25:14 -0700</bug_when>
    <thetext>jsbell@ - take two. We now do iterate back in the opposite direction (forward) rather than just calling m_iterator-&gt;next() once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602475</commentid>
    <comment_count>14</comment_count>
      <attachid>137164</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-13 15:53:47 -0700</bug_when>
    <thetext>Comment on attachment 137164
Patch

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

The logic looks sound to me now, just nitpicks.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1045
&gt; +    RefPtr&lt;IDBKey&gt; prevDuplicateKey;

Suggest &quot;lastDuplicateKey&quot;

Also, the comment could be tightened up and include some of the rationale from the ChangeLog, e.g. &quot;When iterating with PREV_NO_DUPLICATE the spec requires that the first duplicate (in forwards order) is yielded.&quot;

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1125
&gt; +                // prevDuplicateKey == m_currentKey, so keep walking.

This is implied, no comment needed.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1131
&gt;  

Can we assert !prevDuplicateKey.get() || (forward &amp;&amp; prevDuplicateKey-&gt;isEqual(m_currentKey.get())) ? before we return?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604163</commentid>
    <comment_count>15</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-17 11:16:43 -0700</bug_when>
    <thetext>*** Bug 60763 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604172</commentid>
    <comment_count>16</comment_count>
      <attachid>137566</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-17 11:26:42 -0700</bug_when>
    <thetext>Created attachment 137566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604177</commentid>
    <comment_count>17</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-17 11:30:12 -0700</bug_when>
    <thetext>jsbell@ - ok final issues addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604186</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-17 11:38:00 -0700</bug_when>
    <thetext>It looks like these issues still need addressing in the tests:

(In reply to comment #10)

&gt; &gt; LayoutTests/storage/indexeddb/cursor-prev-no-duplicate-expected.txt:27
&gt; &gt; +runTest(store.openCursor(IDBKeyRange.upperBound(7, false), 2)...
&gt; 
&gt; The setting up the test (starting the transaction, opening the cursor) and checking the results (cursor.key etc) are separated, which makes this logging not very useful in understanding the test. Either drop this logging or try and move the setup and results closer together (one transaction per test?)
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:20
&gt; &gt; +&lt;script&gt;
&gt; 
&gt; Should the JS be factored out of this test to match the others?
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:6
&gt; &gt; +description(&quot;Test IndexedDB keys ordering and readback from cursors.&quot;);
&gt; 
&gt; Description could be more specific.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:59
&gt; &gt; +    // help us distinguish the queuing of the tests from the execution
&gt; 
&gt; Restructure the tests so this isn&apos;t necessary, otherwise the logging isn&apos;t valuable.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:63
&gt; &gt; +
&gt; 
&gt; Too many blank lines.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:67
&gt; &gt; +    // upper bound is well out of range, results always the same,
&gt; 
&gt; Prefer debug() statements to script comments, so the intent of the test is captured in the log if it isn&apos;t inherently clear.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:136
&gt; &gt; +function makeOpenCursor(obj, upperBound, open, direction)
&gt; 
&gt; I think use of these functions make the test harder to read vs. just putting the string inline.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/cursor-prev-no-duplicate.js:179
&gt; &gt; +        debug(&quot;     cursor.key = &quot; + cursor.key);
&gt; 
&gt; To make this take less space and improve the readability in the log, I&apos;ve been using this style:
&gt; shouldBe(&quot;cursor.key&quot;, JSON.stringify(expectation.expectedKey));
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/shared.js:116
&gt; &gt; +// take an unspecified number of callback-like objects, wait for each
&gt; 
&gt; Capitalize.
&gt; Also, I&apos;d refer to these as &quot;request-like&quot; or &quot;promise-like&quot; or &quot;future-like&quot; rather than &quot;callback-like&quot;. Probably settle on &quot;request&quot; since this is an IDB-specific utility file (even though the function is generic, it&apos;s a good name)
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/shared.js:119
&gt; &gt; +// appropriate onerror/onabort immediately.
&gt; 
&gt; Will onerror/onabort be called more than once? (Looks like yes.) Do we care? (Probably not.)
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/shared.js:122
&gt; &gt; +
&gt; 
&gt; Remove blank line.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/shared.js:137
&gt; &gt; +        var event = arguments[i];
&gt; 
&gt; I&apos;d name this something other than event - request/future/promise.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/shared.js:146
&gt; &gt; +function waitFor_onsuccess(index, successes, eventResult)
&gt; 
&gt; Move this function inside the definition of waitFor() since it won&apos;t be called elsewhere.
&gt; If that is done, the successes argument can just become the progress var via the closure, and ditto for eventResult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604353</commentid>
    <comment_count>19</comment_count>
      <attachid>137609</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-17 14:35:53 -0700</bug_when>
    <thetext>Created attachment 137609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604355</commentid>
    <comment_count>20</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-17 14:37:16 -0700</bug_when>
    <thetext>jsbell@ - ok, tests adjusted. I got rid of the waitFor() bit because of the totally async nature which, as you point out, makes the test output kind of hard to follow. I tried to make a generalized in-order mechanism but it got way more complicated, so I gave up. now all the test cases are just chained together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604373</commentid>
    <comment_count>21</comment_count>
      <attachid>137609</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-17 14:54:04 -0700</bug_when>
    <thetext>Comment on attachment 137609
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604393</commentid>
    <comment_count>22</comment_count>
      <attachid>137609</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-17 15:13:58 -0700</bug_when>
    <thetext>Comment on attachment 137609
Patch

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

&gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:10
&gt; +&lt;link rel=&quot;stylesheet&quot; href=&quot;../../../fast/js/resources/js-test-style.css&quot;&gt;

Nit: you don&apos;t need this. js-test-pre inserts the stylesheet for you.

&gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:19
&gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

Nit: you don&apos;t need these elements. js-test-pre will insert them for you.

&gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:118
&gt; +function testPrev() {

Nit: here and blow the style is inconsistent with the above. Curly brace should be on the next line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604437</commentid>
    <comment_count>23</comment_count>
      <attachid>137624</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-17 16:04:00 -0700</bug_when>
    <thetext>Created attachment 137624
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604439</commentid>
    <comment_count>24</comment_count>
      <attachid>137624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 16:04:40 -0700</bug_when>
    <thetext>Comment on attachment 137624
Patch for landing

Rejecting attachment 137624 from commit-queue.

alecflett@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604457</commentid>
    <comment_count>25</comment_count>
      <attachid>137624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 16:26:18 -0700</bug_when>
    <thetext>Comment on attachment 137624
Patch for landing

Clearing flags on attachment: 137624

Committed r114464: &lt;http://trac.webkit.org/changeset/114464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604458</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 16:26:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>93388</attachid>
            <date>2011-05-12 19:09:04 -0700</date>
            <delta_ts>2011-05-17 10:21:42 -0700</delta_ts>
            <desc>test case</desc>
            <filename>index-prev-no-duplicate.html</filename>
            <type>text/html</type>
            <size>5486</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjwhLS0KICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2luZGV4ZXMuaHRt
bD9mb3JjZT0xCiAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgogICAgIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KICAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tPgo8aHRtbD4KPGhlYWQ+Cjxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgo8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5Pgo8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CjxzY3JpcHQ+CgpkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREI6IGl0ZXJhdGluZyBiYWNrd2FyZHMgdGhyb3VnaCBhbiBp
bmRleCwgc2tpcHBpbmcgZHVwbGljYXRlcyIpOwppZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQogICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwoKZnVuY3Rpb24g
dGVzdCgpCnsKICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5p
bmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERC
OyIpOwogICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKICAgIElEQkRhdGFi
YXNlRXhjZXB0aW9uID0gZXZhbEFuZExvZygiSURCRGF0YWJhc2VFeGNlcHRpb24gPSB3aW5kb3cu
SURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93LndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
OyIpOwogICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCIpOwog
ICAgSURCVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5J
REJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb247Iik7CiAgICBzaG91
bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7CiAgICBJREJDdXJzb3IgPSBldmFs
QW5kTG9nKCJJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJD
dXJzb3I7Iik7CiAgICBzaG91bGRCZUZhbHNlKCJJREJDdXJzb3IgPT0gbnVsbCIpOwogICAgSURC
S2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8
fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7Iik7CiAgICBzaG91bGRCZUZhbHNlKCJJREJLZXlS
YW5nZSA9PSBudWxsIik7CgogICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwogICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwogICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwp9CgpmdW5jdGlvbiBvcGVuU3VjY2VzcygpCnsKICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOwogICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKCiAgICBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKCiAgICBvYmplY3RTdG9yZURhdGEg
PSBbCiAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBo
ZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCiAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIs
IHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCiAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDcz
LCB3ZWlnaHQ6IDE4MCB9IH0sCiAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7
IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCiAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6
IDE1MCB9IH0sCiAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQ
YXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0KICAgIF07CgogICAgaW5kZXhEYXRhID0g
WwogICAgICAgIHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIsIG9wdGlvbnM6IHsgdW5p
cXVlOiB0cnVlIH0gfSwKICAgICAgICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0
Iiwgb3B0aW9uczogeyB9IH0sCiAgICAgICAgeyBuYW1lOiAid2VpZ2h0Iiwga2V5UGF0aDogIndl
aWdodCIsIG9wdGlvbnM6IHsgdW5pcXVlOiBmYWxzZSB9IH0KICAgIF07CgogICAgb2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydCA9IFsKICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6
IHsgbmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdo
dDogMTMwIH0gfSwKICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTog
IkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0gfSwKICAgICAgICB7IGtleTogIjIzNy0y
My03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0g
fSwKICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhl
aWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0Iiwg
dmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQogICAgXTsK
CiAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OwogICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwog
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cn0KCmZ1bmN0aW9u
IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQp7CiAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwoKICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOwoKICAgIGRlYnVnKCJGaXJzdCwg
YWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOwogICAgYWRkZWREYXRhID0g
MDsKICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVl
LCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsiKTsKICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
ZXZlbnQpIHsKICAgICAgICBpZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3RvcmVEYXRhLmxlbmd0
aCkgewogICAgICAgICAgY3JlYXRlSW5kZXhlcygpOwogICAgICAgIH0KICAgICAgfQogICAgfQp9
CgpmdW5jdGlvbiBjcmVhdGVJbmRleGVzKCkKewogICAgZGVidWcoIk5vdyBjcmVhdGUgdGhlIGlu
ZGV4ZXMuIik7CiAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7CiAgICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5
UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOyIpOwogICAgfQoKICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUp
Lm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CgogICAga2V5SW5kZXggPSBldmFsQW5k
TG9nKCJrZXlJbmRleCA9IDU7Iik7CgogICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3Iu
UFJFVl9OT19EVVBMSUNBVEUpOyIpOwogICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CiAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewog
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7CiAgICAgICAgaWYgKGN1cnNvcikgewogICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsICIiICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
KTsKICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIiciICsgb2JqZWN0
U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5ICsgIiciKTsKICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSArICInIik7CiAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUuaGVpZ2h0IiwgIiIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQpOwogICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVl
KSB7CiAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICIiICsg
b2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0KTsKICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CiAg
ICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA1KSB7CiAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleC0tOyIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4LS07Iik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiLTEiKTsKICAgICAgICAgICAgZG9uZSgpOwogICAgICAgIH0KICAgIH0K
fQoKdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cgp0ZXN0KCk7Cgo8L3NjcmlwdD4KPC9i
b2R5Pgo8L2h0bWw+Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93785</attachid>
            <date>2011-05-17 10:21:19 -0700</date>
            <delta_ts>2012-04-13 11:09:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60746-20110517132118.patch</filename>
            <type>text/plain</type>
            <size>11932</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NjgwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDUtMTcgIE1hcmsgUGls
Z3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBjaG9vc2VzIHdyb25nIHJlY29yZCBvbiBQ
UkVWX05PX0RVUExJQ0FURSBpbmRleCBjdXJzb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzQ2CisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCisKKyAgICAgICAgKiBz
dG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
UUxpdGVCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcik6IGNoYW5nZSBvcmRlcmluZyBvZiBJ
ZCBmaWVsZCB0byBtYXRjaCBGaXJlZm94J3MgYmVoYXZpb3IKKwogMjAxMS0wNS0xNyAgU2FtIE1h
Z251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJTUUxpdGVCYWNraW5nU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCU1FMaXRlQmFja2luZ1N0b3JlLmNwcAkocmV2aXNpb24gODY1OTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk2OSw3ICs5NjksNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
PiBJREJTCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFQgfHwgZGlyZWN0aW9u
ID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUpCiAgICAgICAgIHNxbCArPSAiSW5kZXhE
YXRhLmtleVN0cmluZywgSW5kZXhEYXRhLmtleURhdGUsIEluZGV4RGF0YS5rZXlOdW1iZXIsIElu
ZGV4RGF0YS5pZCI7CiAgICAgZWxzZQotICAgICAgICBzcWwgKz0gIkluZGV4RGF0YS5rZXlTdHJp
bmcgREVTQywgSW5kZXhEYXRhLmtleURhdGUgREVTQywgSW5kZXhEYXRhLmtleU51bWJlciBERVND
LCBJbmRleERhdGEuaWQgREVTQyI7CisgICAgICAgIHNxbCArPSAiSW5kZXhEYXRhLmtleVN0cmlu
ZyBERVNDLCBJbmRleERhdGEua2V5RGF0ZSBERVNDLCBJbmRleERhdGEua2V5TnVtYmVyIERFU0Ms
IEluZGV4RGF0YS5pZCBBU0MiOwogCiAgICAgUmVmUHRyPEluZGV4Q3Vyc29ySW1wbD4gY3Vyc29y
ID0gYWRvcHRSZWYobmV3IEluZGV4Q3Vyc29ySW1wbChtX2RiLCBzcWwsIGRpcmVjdGlvbiA9PSBJ
REJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFIHx8IGRpcmVjdGlvbiA9PSBJREJDdXJzb3I6OlBS
RVZfTk9fRFVQTElDQVRFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9O
T19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCkpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gODY2ODApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNS0xNyAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW5kZXhlZERCIGNob29zZXMgd3JvbmcgcmVjb3JkIG9uIFBSRVZfTk9fRFVQTElDQVRFIGlu
ZGV4IGN1cnNvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjA3NDYKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJl
di1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWw6IEFkZGVkLgorCiAy
MDExLTA1LTE3ICBTYW0gTWFnbnVzb24gIDxzbWFnbnVzb25AbmV0ZmxpeC5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1k
dXBsaWNhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACitUZXN0
IEluZGV4ZWREQjogaXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdoIGFuIGluZGV4LCBza2lwcGlu
ZyBkdXBsaWNhdGVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsKK1BBU1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK0lEQkRhdGFiYXNl
RXhjZXB0aW9uID0gd2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbjsKK1BBU1MgSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCBp
cyBmYWxzZQorSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93
LndlYmtpdElEQlRyYW5zYWN0aW9uOworUEFTUyBJREJUcmFuc2FjdGlvbiA9PSBudWxsIGlzIGZh
bHNlCitJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJDdXJz
b3I7CitQQVNTIElEQkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCitJREJLZXlSYW5nZSA9IHdpbmRv
dy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7CitQQVNTIElEQktleVJh
bmdlID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQor
b3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK0ZpcnN0LCBhZGQgYWxsIG91
ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9i
amVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7City
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0
U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3Jl
RGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CitOb3cgY3JlYXRlIHRoZSBp
bmRleGVzLgorb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4
RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVh
dGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0
YVtpXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1l
LCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOworb2JqZWN0U3Rv
cmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0
b3JlTmFtZSk7CitrZXlJbmRleCA9IDU7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hl
aWdodCcpLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsKK2N1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNTIGN1cnNvci5rZXkgaXMgNzMKK1BBU1Mg
Y3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM0JworUEFTUyBjdXJzb3IudmFsdWUubmFt
ZSBpcyAnUm9uJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDczCitQQVNTIGN1cnNvci52
YWx1ZS53ZWlnaHQgaXMgMTgwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CitrZXlJ
bmRleC0tOworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBp
cyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzYnCitQQVNTIGN1cnNv
ci52YWx1ZS5uYW1lIGlzICdKb2UnCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BB
U1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxNTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5k
ZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNTIGN1cnNvci5rZXkgaXMg
NjAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzMyJworUEFTUyBjdXJzb3Iu
dmFsdWUubmFtZSBpcyAnQm9iJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDYwCitQQVNT
IGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTIwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4
LS07CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDU4
CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczNScKK1BBU1MgY3Vyc29yLnZh
bHVlLm5hbWUgaXMgJ1N1ZScKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1OAorUEFTUyBj
dXJzb3IudmFsdWUud2VpZ2h0IGlzIDEzMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0t
OworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA1Mgor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzMnCitQQVNTIGN1cnNvci52YWx1
ZS5uYW1lIGlzICdBbm4nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNTIKK1BBU1MgY3Vy
c29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNTIGtleUluZGV4IGlzIC0xCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQor
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2luZGV4ZXMuaHRtbD9mb3JjZT0xCisgIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdoIGFuIGluZGV4
LCBza2lwcGluZyBkdXBsaWNhdGVzIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKyAgICBJREJE
YXRhYmFzZUV4Y2VwdGlvbiA9IGV2YWxBbmRMb2coIklEQkRhdGFiYXNlRXhjZXB0aW9uID0gd2lu
ZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxs
Iik7CisgICAgSURCVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJJREJUcmFuc2FjdGlvbiA9IHdp
bmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb247Iik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOworICAgIElEQkN1cnNv
ciA9IGV2YWxBbmRMb2coIklEQkN1cnNvciA9IHdpbmRvdy5JREJDdXJzb3IgfHwgd2luZG93Lndl
YmtpdElEQkN1cnNvcjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJDdXJzb3IgPT0gbnVsbCIp
OworICAgIElEQktleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURC
S2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlOyIpOworICAgIHNob3VsZEJlRmFs
c2UoIklEQktleVJhbmdlID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24u
cGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgb2JqZWN0U3RvcmVOYW1lID0gIlBlb3Bs
ZSI7CisKKyAgICBvYmplY3RTdG9yZURhdGEgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdo
dDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZh
bHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwg
d2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsg
bmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6
IDEwMCB9IH0KKyAgICBdOworCisgICAgaW5kZXhEYXRhID0gWworICAgICAgICB7IG5hbWU6ICJu
YW1lIiwga2V5UGF0aDogIm5hbWUiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAg
ICAgIHsgbmFtZTogImhlaWdodCIsIGtleVBhdGg6ICJoZWlnaHQiLCBvcHRpb25zOiB7IH0gfSwK
KyAgICAgICAgeyBuYW1lOiAid2VpZ2h0Iiwga2V5UGF0aDogIndlaWdodCIsIG9wdGlvbnM6IHsg
dW5pcXVlOiBmYWxzZSB9IH0KKyAgICBdOworCisgICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dCA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4i
LCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdo
dDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZh
bHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwg
d2VpZ2h0OiAxMDAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsg
bmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQorICAgIF07CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworCisgICAgZGVidWcoIkZp
cnN0LCBhZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuIik7CisgICAgYWRkZWRE
YXRhID0gMDsKKyAgICBmb3IgKGkgaW4gb2JqZWN0U3RvcmVEYXRhKSB7CisgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFb
aV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOyIpOworICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmICgrK2FkZGVkRGF0YSA9PSBvYmplY3RTdG9y
ZURhdGEubGVuZ3RoKSB7CisgICAgICAgICAgY3JlYXRlSW5kZXhlcygpOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBjcmVhdGVJbmRleGVzKCkKK3sKKyAgICBkZWJ1
ZygiTm93IGNyZWF0ZSB0aGUgaW5kZXhlcy4iKTsKKyAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7
CisgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0u
bmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsiKTsKKyAg
ICB9CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJh
bnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIp
OworCisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDU7Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQn
KS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSk7Iik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikg
eworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiIiArIG9iamVjdFN0b3JlRGF0
YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCk7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS5rZXkgKyAiJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5u
YW1lIiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSArICInIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICIi
ICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0KTsKKyAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICIiICsgb2JqZWN0U3RvcmVEYXRhSGVp
Z2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBpZiAo
a2V5SW5kZXggPT0gNSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07
Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUlu
ZGV4IiwgIi0xIik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137106</attachid>
            <date>2012-04-13 11:09:06 -0700</date>
            <delta_ts>2012-04-13 15:21:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60746-20120413110905.patch</filename>
            <type>text/plain</type>
            <size>39615</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU5NDljYjBjODc2Zjhh
MWFhYzg3NDRhNmY3MTFmMGVjMzZjNzcxZC4uY2NmNzQ2OWMzYmFjZTU3ZjViN2VjOGQ5YmIzZmFm
ZmNkYjJlOTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA0LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREIgY2hv
b3NlcyB3cm9uZyByZWNvcmQgb24gUFJFVl9OT19EVVBMSUNBVEUgaW5kZXggY3Vyc29yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDc0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbAorCisgICAgICAg
IFdoZW4gaXRlcmF0aW5nIGJhY2t3YXJkcyB3aXRoIFBSRVZfTk9fRFVQTElDQVRFLCBrZWVwIHdh
bGtpbmcgcGFzdAorICAgICAgICB0aGUgJ3ByZXYnIGtleSB1bnRpbCBpdCBjaGFuZ2VzLCB0aGVu
IHdhbGsgZm9yd2FyZCBvbmUgdGltZS4gVGhpcworICAgICAgICBjb3ZlcnMgdGhlIGluZGV4IGFu
ZCBub24taW5kZXggKG9iamVjdFN0b3JlKSBjYXNlLgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwog
MjAxMi0wNC0xMyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVs
LmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgQVBJIGZvciBjb2xvciBjaG9vc2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IDhkNTcwMjI2MDU3YmE5MjNmZDNlYjFmNGZmMmUzZDBmOTY0ZDcw
ZGIuLjY1ODg3ZTA0OGUxYjZkNWM1N2JkODAzZTMzNDkwYjJiZTIwZDJiYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC0xMDM5LDYgKzEwMzksMTEgQEAgYm9vbCBDdXJzb3JJbXBsQ29tbW9u
Ojpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0YXRlIG5leHRT
dGEKIHsKICAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3VycmVudEtleTsKIAor
ICAgIC8vIFdlIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxhc3QgJ2R1cGxpY2F0ZScga2V5IHdoZW4g
dHJ5aW5nIHRvCisgICAgLy8gYXZvaWQgZHVwbGljYXRlcyB3aGVuIHVzaW5nIFBSRVZfTk9fRFVQ
TElDQVRFLCBzbyB3ZSBrbm93IHdoZW4KKyAgICAvLyB0byB0dXJuIGFyb3VuZCBhbmQgc3RhcnQg
d2Fsa2luZyBmb3J3YXJkIGFnYWluLgorICAgIFJlZlB0cjxJREJLZXk+IHByZXZpb3VzRHVwS2V5
OworCiAgICAgZm9yICg7OykgewogICAgICAgICBpZiAobmV4dFN0YXRlID09IFNlZWspIHsKICAg
ICAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkKQEAgLTEwNDgsMTUgKzEwNTMs
MzcgQEAgYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktl
eSoga2V5LCBJdGVyYXRvclN0YXRlIG5leHRTdGEKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBuZXh0U3RhdGUgPSBTZWVrOyAvLyBmb3Igc3Vic2VxdWVudCBpdGVyYXRpb25zCiAKLSAgICAg
ICAgaWYgKCFtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpCisgICAgICAgIGlmICghbV9pdGVyYXRvci0+
aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNEdXBLZXkuZ2V0KCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHR1cm4gYXJvdW5kIGJlY2F1c2Ugd2UgaGl0IHRo
ZSBlbmQgb2YKKyAgICAgICAgICAgICAgICAvLyB0aGUgZGF0YS4KKyAgICAgICAgICAgICAgICBt
X2l0ZXJhdG9yLT5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKCFsb2FkQ3VycmVudFJvdygp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKIAogICAgICAgICBWZWN0b3I8Y2hhcj4gdHJhc2g7CiAgICAgICAgIGlmICghbV90cmFu
c2FjdGlvbi0+Z2V0KG1faXRlcmF0b3ItPmtleSgpLCB0cmFzaCkpCiAgICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaWYgKGlzUGFzdEJvdW5kcygpKQorICAgICAgICBpZiAoaXNQYXN0
Qm91bmRzKCkpIHsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c0R1cEtleS5nZXQoKSkgeworICAg
ICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdHVybiBhcm91bmQgYmVjYXVzZSBub3cgd2UncmUg
YmV5b25kIHRoZQorICAgICAgICAgICAgICAgIC8vIGJvdW5kcyBkZWZpbmVkIGJ5IHRoZSBjdXJz
b3IuCisgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+bmV4dCgpOworICAgICAgICAgICAgICAg
IGlmICghbG9hZEN1cnJlbnRSb3coKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWhhdmVFbnRlcmVkUmFuZ2Uo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA3Niw5ICsxMTAzLDMxIEBAIGJvb2wgQ3Vy
c29ySW1wbENvbW1vbjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqIGtleSwgSXRlcmF0
b3JTdGF0ZSBuZXh0U3RhCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
bV9jdXJzb3JPcHRpb25zLnVuaXF1ZSAmJiBtX2N1cnJlbnRLZXktPmlzRXF1YWwocHJldmlvdXNL
ZXkuZ2V0KCkpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChtX2N1cnNvck9w
dGlvbnMudW5pcXVlKSB7CiAKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnRLZXktPmlzRXF1YWwo
cHJldmlvdXNLZXkuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBpZiAoIW1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7CisgICAgICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byB0dXJuIGFyb3VuZCBiZWNhdXNlIHdlIGhpdCB0aGUgYm91bmRhcnkKKyAgICAg
ICAgICAgICAgICAvLyBiZXR3ZWVuIGtleSByYW5nZXMuCisgICAgICAgICAgICAgICAgaWYgKCFw
cmV2aW91c0R1cEtleS5nZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0R1cEtl
eSA9IG1fY3VycmVudEtleTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c0R1cEtleS0+aXNFcXVh
bChtX2N1cnJlbnRLZXkuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAg
ICAgICAgICAgICAgIG1faXRlcmF0b3ItPm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFsb2FkQ3VycmVudFJvdygpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBwcmV2aW91c0R1cEtleSA9PSBtX2N1cnJlbnRLZXksIHNvIGtlZXAgd2Fs
a2luZworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNiZGYxOGUyZTMzOWM1OWE0N2FjYjJh
OGFkODk2NmM5NjVmMDUxNzEuLjI2OThhZDJmNWU5YWY4ZWJkMzk4MGNjOWQ2YWU3MDBjM2ZkZjJk
NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNC0xMyAgQWxlYyBGbGV0dCAgPGFsZWNm
bGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCIGNob29zZXMgd3JvbmcgcmVj
b3JkIG9uIFBSRVZfTk9fRFVQTElDQVRFIGluZGV4IGN1cnNvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA3NDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGZvciBQUkVWX05PX0RVUExJQ0FURS4K
KworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5v
LWR1cGxpY2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZlcnNlLWJ1Zy5qczoKKyAg
ICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3VjY2Vzcy52ZXJyZXEub25zdWNjZXNz
KToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3VjY2Vzcyk6CisgICAgICAg
IChwcmVwYXJlRGF0YWJhc2UpOgorICAgICAgICAocG9wdWxhdGVTdG9yZSk6CisgICAgICAgIChy
dW5BbGxUZXN0cyk6CisgICAgICAgICh3YWl0Rm9yKToKKyAgICAgICAgKGNvbXBsZXRlLmZpcmVD
YWxsYmFjayk6CisgICAgICAgIChjb21wbGV0ZSk6CisgICAgICAgICh0ZXN0RmFyUmFuZ2VDdXJz
b3IpOgorICAgICAgICAobWFrZU9wZW5LZXlDdXJzb3IpOgorICAgICAgICAocnVuVGVzdC50cmFu
cy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3QudGVzdEZ1bmN0aW9uKToKKyAgICAgICAg
KHJ1blRlc3QpOgorCiAyMDEyLTA0LTEzICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgTWFyayB0ZXN0IGFzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUyZjVjYmI2NGYzZTFjYTQ3YTdkNDZmNTYwMzRi
NWM4MDA4MDRiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNjkg
QEAKK1Rlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29y
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5k
ZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNl
bGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCisKK29wZW5yZXEgPSBpbmRleGVk
REIub3BlbignY3Vyc29yLXJldmVyc2UtYnVnJykKK2RiID0gb3BlbnJlcS5yZXN1bHQKK3ZlcnJl
cSA9IGRiLnNldFZlcnNpb24oJzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eCcsICdzb3J0ZWQnKQorCitwb3B1bGF0aW5nIHN0b3JlLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpOworc3RvcmUucHV0KHtzb3J0ZWQ6IDMsIHZhbHVlOiAxMTF9LCAx
KQorc3RvcmUucHV0KHtzb3J0ZWQ6IDIsIHZhbHVlOiAyMjJ9LCAyKQorc3RvcmUucHV0KHtzb3J0
ZWQ6IDEsIHZhbHVlOiAzMzN9LCAzKQorc3RvcmUucHV0KHtzb3J0ZWQ6IDEwLCB2YWx1ZTogNDQ0
fSwgMTcpCitzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA1NTV9LCAxNikKK3N0b3JlLnB1
dCh7c29ydGVkOiAxMCwgdmFsdWU6IDY2Nn0sIDE1KQordGVzdEZhclJhbmdlQ3Vyc29yKCkKKwor
cnVuVGVzdChzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2Up
LCAyKS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBz
dG9yZS5pbmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IHN0b3Jl
Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIpCisKK3J1blRl
c3Qoc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKS4u
LgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09O
TFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5p
bmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IHN0b3JlLm9wZW5D
dXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikKKworcnVuVGVzdChpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKS4uLgordHJh
bnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitz
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRleCgn
aW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5DdXJzb3Io
SURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIpCisKK3J1blRlc3QoaW5kZXgub3Bl
bkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKS4uLgordHJhbnMgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgn
KTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikKKworcnVuVGVzdChpbmRleC5vcGVuS2V5Q3Vy
c29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKS4uLgordHJhbnMgPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsK
K09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIpCisKK3J1blRlc3QoaW5kZXgub3BlbktleUN1
cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKS4uLgordHJhbnMgPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsK
K09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikKK3Rlc3RCb3VuZGFyeUN1cnNvcigpCisKK3J1
blRlc3Qoc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwg
MikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3Rv
cmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBzdG9yZS5v
cGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorCitydW5UZXN0
KHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikuLi4K
K3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZ
KQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5k
ZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vy
c29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCisKK3J1blRlc3QoaW5kZXgu
b3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikuLi4KK3RyYW5z
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2lu
ZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuQ3Vyc29yKElE
QktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorCitydW5UZXN0KGluZGV4Lm9wZW5D
dXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikuLi4KK3RyYW5zID0gZGIu
dHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7
CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCisKK3J1blRlc3QoaW5kZXgub3BlbktleUN1cnNv
cihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikuLi4KK3RyYW5zID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitP
cGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorCitydW5UZXN0KGluZGV4Lm9wZW5LZXlDdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikuLi4KK3RyYW5zID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitP
cGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCit0ZXN0Tm9EdXBsaWNhdGUoKQorCitydW5UZXN0
KHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKS4u
LgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09O
TFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5p
bmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IHN0b3JlLm9wZW5D
dXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorCitydW5UZXN0KGlu
ZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKS4uLgor
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkp
CitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRl
eCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5DdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorCitydW5UZXN0KGluZGV4
Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKS4uLgor
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkp
CitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRl
eCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5LZXlD
dXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorCitFWEVDVVRFIFRF
U1RTLi4uLgorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91
bmQoNywgZmFsc2UpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJz
b3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQ
QVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAg
IGN1cnNvci52YWx1ZS52YWx1ZSA9IDMzMworRE9ORQorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vy
c29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCitjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkK
KyAgICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIGV4cGVjdGF0
aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gMzMzCitET05FCisK
K1Rlc3Rpbmc6IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxz
ZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMg
ZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29y
LnZhbHVlLnZhbHVlIGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZh
bHVlLnZhbHVlID0gMTExCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4
cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDEKK0RPTkUKKworVGVz
dGluZzogaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAy
KQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVj
dGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci52YWx1
ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52
YWx1ZSA9IDExMQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3RhdGlvbi5leHBlY3Rl
ZFByaW1hcnlLZXkKKyAgICAgY3Vyc29yLnByaW1hcnlLZXkgPSAxCitET05FCisKK1Rlc3Rpbmc6
IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIp
CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0
YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29yLnByaW1h
cnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1cnNvci5wcmlt
YXJ5S2V5ID0gMQorRE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29y
LmtleSA9IDMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQ
cmltYXJ5S2V5CisgICAgIGN1cnNvci5wcmltYXJ5S2V5ID0gMQorRE9ORQorCitUZXN0aW5nOiBz
dG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9u
LmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci52YWx1ZS52YWx1
ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9
IDMzMworRE9ORQorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVy
Qm91bmQoMywgdHJ1ZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1
cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDIK
K1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUKKyAg
ICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gMjIyCitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5D
dXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIpCitjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRL
ZXkKKyAgICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIGV4cGVj
dGF0aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gMTExCitQQVNT
IGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAg
ICBjdXJzb3IucHJpbWFyeUtleSA9IDEKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3BlbkN1cnNv
cihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5Cisg
ICAgIGN1cnNvci5rZXkgPSAyCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlv
bi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDIyMgorUEFTUyBjdXJz
b3IucHJpbWFyeUtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFByaW1hcnlLZXkKKyAgICAgY3Vy
c29yLnByaW1hcnlLZXkgPSAyCitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5LZXlDdXJzb3Io
SURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAg
ICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24u
ZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1cnNvci5wcmltYXJ5S2V5ID0gMQorRE9ORQorCitU
ZXN0aW5nOiBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1
ZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMg
ZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDIKK1BBU1MgY3Vyc29y
LnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1cnNv
ci5wcmltYXJ5S2V5ID0gMgorRE9ORQorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29yKElEQktl
eVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZEtleQorICAgICBj
dXJzb3Iua2V5ID0gMTUKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIGV4cGVjdGF0aW9uLmV4
cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gNjY2CitQQVNTIGN1cnNvci5w
cmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3Iu
cHJpbWFyeUtleSA9IDE1CitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1
cnNvci5rZXkgPSAxMAorUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgZXhwZWN0YXRpb24uZXhw
ZWN0ZWRWYWx1ZQorICAgICBjdXJzb3IudmFsdWUudmFsdWUgPSA2NjYKK1BBU1MgY3Vyc29yLnBy
aW1hcnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1cnNvci5w
cmltYXJ5S2V5ID0gMTUKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3BlbktleUN1cnNvcihJREJL
ZXlSYW5nZS51cHBlckJvdW5kKDE1LCBmYWxzZSksIDMpCitjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAg
Y3Vyc29yLmtleSA9IDEwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4
cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDE1CitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YmZhOTc5Y2JlNTcyOTZmMDg0NjY0YTUyMDRkMDQzZGMyZWI4NDMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLXByZXYtbm8tZHVwbGlj
YXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxp
Y2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWZlZDlk
MTAxZjQ5ZDFiMTUxMjI5YzRkYjFhOTQ4ZmMxMDAxNTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxODMgQEAKK1Rlc3QgSW5kZXhlZERCOiBpdGVyYXRp
bmcgYmFja3dhcmRzIHRocm91Z2ggYW4gaW5kZXgsIHNraXBwaW5nIGR1cGxpY2F0ZXMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIg
fHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBp
bmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQorSURCRGF0YWJhc2VFeGNlcHRpb24gPSB3aW5kb3cu
SURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93LndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
OworUEFTUyBJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIGlzIGZhbHNlCitJREJUcmFuc2Fj
dGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rp
b247CitQQVNTIElEQlRyYW5zYWN0aW9uID09IG51bGwgaXMgZmFsc2UKK0lEQkN1cnNvciA9IHdp
bmRvdy5JREJDdXJzb3IgfHwgd2luZG93LndlYmtpdElEQkN1cnNvcjsKK1BBU1MgSURCQ3Vyc29y
ID09IG51bGwgaXMgZmFsc2UKK0lEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdp
bmRvdy53ZWJraXRJREJLZXlSYW5nZTsKK1BBU1MgSURCS2V5UmFuZ2UgPT0gbnVsbCBpcyBmYWxz
ZQoraW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitvcGVuU3VjY2VzcygpOgorZGIg
PSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCitEZWxl
dGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZShvYmplY3RTdG9yZU5hbWUpOworRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVj
dCBzdG9yZS4KK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZh
bHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
b2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9y
ZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
W2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9y
ZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsK
K3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmpl
Y3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3Rv
cmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0u
a2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVl
LCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK05vdyBjcmVhdGUgdGhlIGluZGV4ZXMuCitvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBh
dGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4
RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMp
Oworb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtp
XS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Cit0ZXN0UHJldigpCit0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK2tleUluZGV4ID0gODsKK3JlcXVlc3QgPSBvYmplY3RT
dG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVik7Citj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDczCitQQVNT
IGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzc0MCcKK1BBU1MgY3Vyc29yLnZhbHVlLm5h
bWUgaXMgJ1NhbScKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA3MworUEFTUyBjdXJzb3Iu
dmFsdWUud2VpZ2h0IGlzIDExMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9
PiA3CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDcz
CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczNCcKK1BBU1MgY3Vyc29yLnZh
bHVlLm5hbWUgaXMgJ1JvbicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA3MworUEFTUyBj
dXJzb3IudmFsdWUud2VpZ2h0IGlzIDE4MAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0t
OworICA9PiA2CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5
IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczOScKK1BBU1MgY3Vy
c29yLnZhbHVlLm5hbWUgaXMgJ0plZicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA2NQor
UEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDEyMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJ
bmRleC0tOworICA9PiA1CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJz
b3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczOCcKK1BB
U1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0xlbycKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBp
cyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDE4MAorY3Vyc29yLmNvbnRpbnVlKCk7
CitrZXlJbmRleC0tOworICA9PiA0CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFT
UyBjdXJzb3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzcz
NycKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ1BhdCcKK1BBU1MgY3Vyc29yLnZhbHVlLmhl
aWdodCBpcyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDEwMAorY3Vyc29yLmNvbnRp
bnVlKCk7CitrZXlJbmRleC0tOworICA9PiAzCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OworUEFTUyBjdXJzb3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzct
MjMtNzczNicKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0pvZScKK1BBU1MgY3Vyc29yLnZh
bHVlLmhlaWdodCBpcyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDE1MAorY3Vyc29y
LmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiAyCitjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDYwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlz
ICcyMzctMjMtNzczMicKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0JvYicKK1BBU1MgY3Vy
c29yLnZhbHVlLmhlaWdodCBpcyA2MAorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDEyMAor
Y3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiAxCitjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDU4CitQQVNTIGN1cnNvci5wcmltYXJ5
S2V5IGlzICcyMzctMjMtNzczNScKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ1N1ZScKK1BB
U1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1OAorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlz
IDEzMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiAwCitjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDUyCitQQVNTIGN1cnNvci5w
cmltYXJ5S2V5IGlzICcyMzctMjMtNzczMycKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0Fu
bicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1MgorUEFTUyBjdXJzb3IudmFsdWUud2Vp
Z2h0IGlzIDExMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiAtMQorY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK05vIGN1cnNvcjogbnVsbAorUEFTUyBrZXlJbmRl
eCBpcyAtMQordGVzdFByZXZOb0R1cGxpY2F0ZSgpCitvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0
aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK2tleUlu
ZGV4ID0gODsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNv
cihudWxsLCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOworY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKK2tleUluZGV4IC09IDEKKyAgPT4gRW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9
IDcKK1BBU1MgY3Vyc29yLmtleSBpcyA3MworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3
LTIzLTc3MzQnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdSb24nCitQQVNTIGN1cnNvci52
YWx1ZS5oZWlnaHQgaXMgNzMKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxODAKK2N1cnNv
ci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CitrZXlJbmRleCAtPSAzOworICA9PiBFbnRlcmluZyB3aXRoIGtleUluZGV4ID0gMworUEFTUyBj
dXJzb3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczNicK
K1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0pvZScKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdo
dCBpcyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDE1MAorY3Vyc29yLmNvbnRpbnVl
KCk7CitrZXlJbmRleC0tOworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgPT4gRW50
ZXJpbmcgd2l0aCBrZXlJbmRleCA9IDIKK1BBU1MgY3Vyc29yLmtleSBpcyA2MAorUEFTUyBjdXJz
b3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzInCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlz
ICdCb2InCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjAKK1BBU1MgY3Vyc29yLnZhbHVl
LndlaWdodCBpcyAxMjAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKK2N1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgID0+IEVudGVyaW5nIHdpdGgga2V5SW5kZXggPSAxCitQ
QVNTIGN1cnNvci5rZXkgaXMgNTgKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03
NzM1JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnU3VlJworUEFTUyBjdXJzb3IudmFsdWUu
aGVpZ2h0IGlzIDU4CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTMwCitjdXJzb3IuY29u
dGludWUoKTsKK2tleUluZGV4LS07CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICA9
PiBFbnRlcmluZyB3aXRoIGtleUluZGV4ID0gMAorUEFTUyBjdXJzb3Iua2V5IGlzIDUyCitQQVNT
IGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczMycKK1BBU1MgY3Vyc29yLnZhbHVlLm5h
bWUgaXMgJ0FubicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1MgorUEFTUyBjdXJzb3Iu
dmFsdWUud2VpZ2h0IGlzIDExMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgPT4gRW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9
IC0xCitObyBjdXJzb3I6IG51bGwKK1BBU1Mga2V5SW5kZXggaXMgLTEKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8t
ZHVwbGljYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE3Y2FhZGY4ODYwMzZmODMwMzVkZDY0NTJiNzY1
NjQwOTNmNDI2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbApAQCAtMCwwICsxLDE5MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfaW5kZXhl
cy5odG1sP2ZvcmNlPTEKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgdmFy
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREI6IGl0ZXJhdGluZyBiYWNrd2FyZHMgdGhyb3VnaCBhbiBpbmRl
eCwgc2tpcHBpbmcgZHVwbGljYXRlcyIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRv
dy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhl
ZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisgICAgSURC
RGF0YWJhc2VFeGNlcHRpb24gPSBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdp
bmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb247Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVs
bCIpOworICAgIElEQlRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiSURCVHJhbnNhY3Rpb24gPSB3
aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uOyIpOwor
ICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKKyAgICBJREJDdXJz
b3IgPSBldmFsQW5kTG9nKCJJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53
ZWJraXRJREJDdXJzb3I7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCQ3Vyc29yID09IG51bGwi
KTsKKyAgICBJREJLZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlID0gd2luZG93LklE
QktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJJREJLZXlSYW5nZSA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9u
LnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9ICJQZW9w
bGUiOworCisgICAgb2JqZWN0U3RvcmVEYXRhID0gWworICAgICAgICB7IGtleTogIjIzNy0yMy03
NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0gfSwK
KyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWln
aHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2
YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAorICAgICAg
ICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgs
IHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7
IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5
OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0
OiAxMDAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM4IiwgdmFsdWU6IHsgbmFtZTog
IkxlbyIsIGhlaWdodDogNjUsIHdlaWdodDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzct
MjMtNzczOSIsIHZhbHVlOiB7IG5hbWU6ICJKZWYiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEyMCB9
IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3NDAiLCB2YWx1ZTogeyBuYW1lOiAiU2FtIiwg
aGVpZ2h0OiA3Mywgd2VpZ2h0OiAxMTAgfSB9LAorICAgIF07CisKKyAgICBpbmRleERhdGEgPSBb
CisgICAgICAgIHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIsIG9wdGlvbnM6IHsgdW5p
cXVlOiB0cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiaGVpZ2h0Iiwga2V5UGF0aDogImhlaWdo
dCIsIG9wdGlvbnM6IHsgfSB9LAorICAgICAgICB7IG5hbWU6ICJ3ZWlnaHQiLCBrZXlQYXRoOiAi
d2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQorICAgIF07CisKKyAgICBvYmpl
Y3RTdG9yZURhdGFIZWlnaHRTb3J0ID0gWworICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwg
dmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4
LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTog
eyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdo
dDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6
ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzgiLCB2YWx1ZTogeyBuYW1lOiAiTGVvIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxODAg
fSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM5IiwgdmFsdWU6IHsgbmFtZTogIkplZiIs
IGhlaWdodDogNjUsIHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
NCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisg
ICAgICAgIHsga2V5OiAiMjM3LTIzLTc3NDAiLCB2YWx1ZTogeyBuYW1lOiAiU2FtIiwgaGVpZ2h0
OiA3Mywgd2VpZ2h0OiAxMTAgfSB9LAorICAgIF07CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVP
YmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZShvYmplY3RTdG9yZU5hbWUpOyIpOworCisgICAgZGVidWcoIkZpcnN0LCBhZGQgYWxsIG91ciBk
YXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuIik7CisgICAgYWRkZWREYXRhID0gMDsKKyAgICBmb3Ig
KGkgaW4gb2JqZWN0U3RvcmVEYXRhKSB7CisgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0
b3JlRGF0YVtpXS5rZXkpOyIpOworICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGlmICgrK2FkZGVkRGF0YSA9PSBvYmplY3RTdG9yZURhdGEubGVuZ3RoKSB7Cisg
ICAgICAgICAgY3JlYXRlSW5kZXhlcygpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBjcmVhdGVJbmRleGVzKCkKK3sKKyAgICBkZWJ1ZygiTm93IGNyZWF0ZSB0aGUg
aW5kZXhlcy4iKTsKKyAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7CisgICAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ld
LmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsiKTsKKyAgICB9CisKKworICAgIHRlc3RQ
cmV2KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQcmV2KCkgeworICAgIGRlYnVnKCJ0ZXN0UHJldigp
Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVj
dFN0b3JlTmFtZSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gODsiKTsKKyAgICAvLyBmaXJzdCB0cnkgd2l0aCBqdXN0
IFBSRVYKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIiIgKyBvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJ
bmRleF0ua2V5ICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFt
ZSIsICInIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUg
KyAiJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAiIiAr
IG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCk7CisgICAg
ICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAiIiArIG9iamVjdFN0b3JlRGF0YUhlaWdo
dFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFu
ZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgID0+ICIgKyBrZXlJbmRl
eCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZygiTm8gY3Vy
c29yOiAiICsgY3Vyc29yKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIp
OworICAgICAgICB9CisgICAgfTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdFByZXZOb0R1
cGxpY2F0ZTsKK30KKworZnVuY3Rpb24gdGVzdFByZXZOb0R1cGxpY2F0ZSgpIHsKKyAgICBkZWJ1
ZygidGVzdFByZXZOb0R1cGxpY2F0ZSgpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gODsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWX05PX0RV
UExJQ0FURSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAg
ICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA4KSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExv
Zygia2V5SW5kZXggLT0gMSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGtleUlu
ZGV4ID09IDYpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCAtPSAzOyIp
OworICAgICAgICAgICAgfQorICAgICAgICBkZWJ1ZygiICA9PiBFbnRlcmluZyB3aXRoIGtleUlu
ZGV4ID0gIiArIGtleUluZGV4KTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAiIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5
SW5kZXhdLnZhbHVlLmhlaWdodCk7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXkgKyAi
JyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIiciICsgb2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSArICInIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICIiICsgb2JqZWN0U3RvcmVE
YXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0KTsKKyAgICAgICAgICAgIGlmICgn
d2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLndlaWdodCIsICIiICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRl
eF0udmFsdWUud2VpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eC0tOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVidWcoIk5v
IGN1cnNvcjogIiArIGN1cnNvcik7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
LTEiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgfQorfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJldi1uby1kdXBs
aWNhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNmMTQ5NTc1YzRhOGU0MGFjODdiMzk4YTI1MWNhYzBmM2Nm
MGFhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUuanMKQEAgLTAsMCArMSwyMDMgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBvcmRlcmluZyBh
bmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcHJlcGFyZURhdGFiYXNlKCk7Cit9CisKK2Z1
bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGV2YWxBbmRM
b2coIm9wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXJldmVyc2UtYnVnJykiKTsKKyAg
ICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVucmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5y
ZXEucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOworICAgICAgICB2ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICB2ZXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgICAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnc29ydGVkJykiKTsKKyAgICAg
ICAgICAgIHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7CisgICAgICAg
IH07CisgICAgfTsKK30KKworZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7
Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCh7c29ydGVkOiAzLCB2YWx1ZTogMTExfSwgMSkiKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoe3NvcnRlZDogMiwgdmFsdWU6IDIyMn0sIDIpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KHtzb3J0ZWQ6IDEsIHZhbHVlOiAzMzN9LCAzKSIpOworICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6IDQ0NH0sIDE3KSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6IDU1NX0sIDE2KSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6IDY2Nn0sIDE1KSIpOworICAg
IHRyYW5zLm9uY29tcGxldGUgPSBydW5BbGxUZXN0czsKK30KKworCitmdW5jdGlvbiBydW5BbGxU
ZXN0cygpIHsKKyAgICB3YWl0Rm9yKAorICAgICAgICB0ZXN0RmFyUmFuZ2VDdXJzb3IoKSwKKyAg
ICAgICAgdGVzdEJvdW5kYXJ5Q3Vyc29yKCksCisgICAgICAgIHRlc3ROb0R1cGxpY2F0ZSgpCisg
ICAgICAgICkub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OworCisgICAgLy8gaGVscCB1cyBkaXN0
aW5ndWlzaCB0aGUgcXVldWluZyBvZiB0aGUgdGVzdHMgZnJvbSB0aGUgZXhlY3V0aW9uCisgICAg
ZGVidWcoIlxuRVhFQ1VURSBURVNUUy4uLi4iKTsKK30KKworCisKK2Z1bmN0aW9uIHRlc3RGYXJS
YW5nZUN1cnNvcigpCit7CisgICAgLy8gdXBwZXIgYm91bmQgaXMgd2VsbCBvdXQgb2YgcmFuZ2Us
IHJlc3VsdHMgYWx3YXlzIHRoZSBzYW1lLAorICAgIC8vIHdoZXRoZXIgb3BlbiBvciBjbG9zZWQK
KyAgICBkZWJ1ZygidGVzdEZhclJhbmdlQ3Vyc29yKCkiKTsKKyAgICByZXR1cm4gd2FpdEZvcigK
KyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUiLCA3LCBmYWxzZSwgSURCQ3Vy
c29yLlBSRVYpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMzMzLCBleHBlY3Rl
ZEtleTogM30pLAorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDcsIHRy
dWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDMz
MywgZXhwZWN0ZWRLZXk6IDN9KSwKKworICAgICAgICAvLyBoZXJlICc3JyByZWZlcnMgdG8gdGhl
ICdzb3J0ZWQnIHZhbHVlCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoImluZGV4Iiwg
NywgZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFs
dWU6IDExMSwgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVkUHJpbWFyeUtleTogMX0pLAorICAgICAg
ICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJpbmRleCIsIDcsIHRydWUsIElEQkN1cnNvci5QUkVW
KSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDExMSwgZXhwZWN0ZWRLZXk6IDMs
IGV4cGVjdGVkUHJpbWFyeUtleTogMX0pLAorCisgICAgICAgIC8vIGhlcmUgJzcnIHJlZmVycyB0
byB0aGUgc29ydGVkIHZhbHVlCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5LZXlDdXJzb3IoImlu
ZGV4IiwgNywgZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVj
dGVkS2V5OiAzLCBleHBlY3RlZFByaW1hcnlLZXk6IDF9KSwKKyAgICAgICAgcnVuVGVzdChtYWtl
T3BlbktleUN1cnNvcigiaW5kZXgiLCA3LCB0cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAg
ICAgICAgICAgeyBleHBlY3RlZEtleTogMywgZXhwZWN0ZWRQcmltYXJ5S2V5OiAxfSkKKyAgICAg
ICAgKTsKK30KKworZnVuY3Rpb24gdGVzdEJvdW5kYXJ5Q3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygi
dGVzdEJvdW5kYXJ5Q3Vyc29yKCkiKTsKKyAgICByZXR1cm4gd2FpdEZvcigKKyAgICAgICAgcnVu
VGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUiLCAzLCBmYWxzZSwgSURCQ3Vyc29yLlBSRVYpLAor
ICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMzMzLCBleHBlY3RlZEtleTogM30pLAor
ICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDMsIHRydWUsIElEQkN1cnNv
ci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDIyMiwgZXhwZWN0ZWRL
ZXk6IDJ9KSwKKworICAgICAgICAvLyBieSBpbmRleCBzb3J0IG9yZGVyLCB3ZSBzaG91bGQgcmV0
dXJuIHRoZW0gaW4gYSBkaWZmZXJlbnQgb3JkZXIKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1
cnNvcigiaW5kZXgiLCAzLCBmYWxzZSwgSURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgICAg
IHsgZXhwZWN0ZWRWYWx1ZTogMTExLCBleHBlY3RlZEtleTogMywgZXhwZWN0ZWRQcmltYXJ5S2V5
OiAxfSksCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoImluZGV4IiwgMywgdHJ1ZSwg
SURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMjIyLCBl
eHBlY3RlZEtleTogMiwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAyfSksCisKKyAgICAgICAgLy8gbm93
IHRoZSB2YWx1ZSBkb2Vzbid0IG1hdHRlciwganVzdCB0aGUgcHJpbWFyeSBrZXkKKyAgICAgICAg
cnVuVGVzdChtYWtlT3BlbktleUN1cnNvcigiaW5kZXgiLCAzLCBmYWxzZSwgSURCQ3Vyc29yLlBS
RVYpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVkUHJpbWFyeUtl
eTogMX0pLAorICAgICAgICBydW5UZXN0KG1ha2VPcGVuS2V5Q3Vyc29yKCJpbmRleCIsIDMsIHRy
dWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkS2V5OiAyLCBl
eHBlY3RlZFByaW1hcnlLZXk6IDJ9KQorICAgICAgICApOworfQorCitmdW5jdGlvbiB0ZXN0Tm9E
dXBsaWNhdGUoKQoreworICAgIGRlYnVnKCJ0ZXN0Tm9EdXBsaWNhdGUoKSIpOworICAgIC8vIHRo
ZXJlIGFyZSAzIHZhbHVlcywgYnV0IHdlIHNob3VsZCByZXR1cm4gdGhlIGZpcnN0IG9uZQorICAg
IHJldHVybiB3YWl0Rm9yKAorICAgICAgICAvLyBQUkVWX05PX0RVUExJQ0FURSBkb2Vzbid0IHJl
YWxseSBhZmZlY3Qgbm9uLWluZGV4ZWQKKyAgICAgICAgLy8gY3Vyc29ycywgYnV0IHdlIHNob3Vs
ZCBtYWtlIHN1cmUgd2UgZ2V0IHRoZSByaWdodCBvbmUKKyAgICAgICAgLy8gYW55d2F5CisgICAg
ICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoInN0b3JlIiwgMTUsIGZhbHNlLCBJREJDdXJzb3Iu
UFJFVl9OT19EVVBMSUNBVEUpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogNjY2
LCBleHBlY3RlZEtleTogMTUsIGV4cGVjdGVkUHJpbWFyeUtleTogMTUgfSksCisKKyAgICAgICAg
Ly8gc3RpbGwgdGhyZWUgdmFsdWVzLCBidXQgbm93IHRoZSBpbmRleCBzYXlzIHdlIHNob3VsZCBy
ZXR1cm4gdGhlCisgICAgICAgIC8vIHNlY29uZCBvbmUKKyAgICAgICAgcnVuVGVzdChtYWtlT3Bl
bkN1cnNvcigiaW5kZXgiLCAxNSwgZmFsc2UsIElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSks
CisgICAgICAgICAgICAgICAgeyBleHBlY3RlZFZhbHVlOiA2NjYsIGV4cGVjdGVkS2V5OiAxMCwg
ZXhwZWN0ZWRQcmltYXJ5S2V5OiAxNX0pLAorCisgICAgICAgIC8vIHNhbWUgYmVoYXZpb3IgYXMg
YWJvdmUsIHdpdGhvdXQgYSB2YWx1ZQorICAgICAgICBydW5UZXN0KG1ha2VPcGVuS2V5Q3Vyc29y
KCJpbmRleCIsIDE1LCBmYWxzZSwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKSwKKyAgICAg
ICAgICAgICAgICB7IGV4cGVjdGVkS2V5OiAxMCwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAxNX0pCisg
ICAgICAgICk7Cit9CisKKworZnVuY3Rpb24gbWFrZU9wZW5DdXJzb3Iob2JqLCB1cHBlckJvdW5k
LCBvcGVuLCBkaXJlY3Rpb24pCit7CisgICAgcmV0dXJuIG9iaiArICIub3BlbkN1cnNvcihJREJL
ZXlSYW5nZS51cHBlckJvdW5kKCIgKyB1cHBlckJvdW5kICsgIiwgIiArCisgICAgICAgIG9wZW4g
KyAiKSwgIiArCisgICAgICAgICAgICBkaXJlY3Rpb24gKyAiKSI7Cit9CisKK2Z1bmN0aW9uIG1h
a2VPcGVuS2V5Q3Vyc29yKG9iaiwgdXBwZXJCb3VuZCwgb3BlbiwgZGlyZWN0aW9uKQoreworICAg
IHJldHVybiBvYmogKyAiLm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgiICsg
dXBwZXJCb3VuZCArICIsICIgKworICAgICAgICBvcGVuICsgIiksICIgKworICAgICAgICAgICAg
ZGlyZWN0aW9uICsgIikiOworfQorCitmdW5jdGlvbiBydW5UZXN0KG9wZW5DdXJzb3IsIGV4cCkK
K3sKKyAgICBkZWJ1ZygiXG5ydW5UZXN0KCIgKyBvcGVuQ3Vyc29yICsgIi4uLiIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKSIpOworCisgICAgLy8gZXhwb3NlIHRoZXNlIGZvciBjb2RlIGluIG9wZW5DdXJz
b3IKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIp
OworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Iik7CisgICAg
dHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJET05FIik7CisgICAgfTsKKworICAgIHZhciByZXN1
bHQgPSB7fTsKKworICAgIHZhciB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICAvLyBleHBvc2UgZm9yIGV2YWxBbmRMb2cKKyAgICAgICAgZXhwZWN0YXRpb24gPSBleHA7
CisKKyAgICAgICAgZGVidWcoIlxuVGVzdGluZzogIiArIG9wZW5DdXJzb3IpOworICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIGlmIChj
dXJzb3IgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIm51bGwgY3Vyc29yIik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJleHBlY3RhdGlvbi5leHBlY3RlZEtleSIpOworICAgICAgICBkZWJ1ZygiICAg
ICBjdXJzb3Iua2V5ID0gIiArIGN1cnNvci5rZXkpOworICAgICAgICBpZiAoInZhbHVlIiBpbiBj
dXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudmFsdWUiLCAiZXhw
ZWN0YXRpb24uZXhwZWN0ZWRWYWx1ZSIpOworICAgICAgICAgICAgZGVidWcoIiAgICAgY3Vyc29y
LnZhbHVlLnZhbHVlID0gIiArIGN1cnNvci52YWx1ZS52YWx1ZSk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoImV4cGVjdGVkVmFsdWUiIGluIGV4cGVjdGF0aW9uKQorICAgICAgICAgICAg
dGVzdEZhaWxlZCgiVGVzdCBicm9rZW46IHNob3VsZG4ndCBoYXZlIGV4cGVjdGVkVmFsdWUiKTsK
KworICAgICAgICBpZiAoImV4cGVjdGVkUHJpbWFyeUtleSIgaW4gZXhwZWN0YXRpb24pIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJleHBlY3RhdGlvbi5leHBl
Y3RlZFByaW1hcnlLZXkiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgICAgIGN1cnNvci5wcmltYXJ5
S2V5ID0gIiArIGN1cnNvci5wcmltYXJ5S2V5KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExl
dCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgICAgICByZXN1bHQub25zdWNjZXNzKCk7Cisg
ICAgfTsKKworICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvci4uLiIpOworICAgIHN0b3JlUmVxID0g
ZXZhbEFuZExvZygic3RvcmVSZXEgPSAiICsgb3BlbkN1cnNvcik7CisgICAgc3RvcmVSZXEub25z
dWNjZXNzID0gdGVzdEZ1bmN0aW9uOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IGU0YjhkM2YwYzRjYThhMDljMjFk
ZWM3NDEwYjdiZTdiNWRkMWFkZWYuLjc2ZjJiZmZhYWFjY2NlMzU2MTRlNWM2MjExNjU5ZmVhODcz
MDcwN2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3NoYXJlZC5qcwpAQCAtMTEyLDMgKzExMiw0NyBAQCBmdW5jdGlvbiBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpCiAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKGRiLm9iamVjdFN0b3JlTmFt
ZXMuaXRlbSgwKSk7CiAgICAgZGVidWcoIkRlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuIik7CiB9
CisKKy8vIHRha2UgYW4gdW5zcGVjaWZpZWQgbnVtYmVyIG9mIGNhbGxiYWNrLWxpa2Ugb2JqZWN0
cywgd2FpdCBmb3IgZWFjaAorLy8gb25lLCBhbmQgZmlyZSBhbiBvbnN1Y2Nlc3MgZXZlbnQgd2hl
biBhbGwgb2YgdGhlbSBjb21wbGV0ZS4gSWYgYW55CisvLyBvZiB0aGUgY2FsbGJhY2sgb2JqZWN0
cyB0aHJvdyBhbiBlcnJvciBvciBhYm9ydCwgZmlyZSB0aGUKKy8vIGFwcHJvcHJpYXRlIG9uZXJy
b3Ivb25hYm9ydCBpbW1lZGlhdGVseS4KK2Z1bmN0aW9uIHdhaXRGb3IoKQoreworCisgICAgdmFy
IHByb2dyZXNzID0gW107ICAgICAgICAgIC8vIHdoZW4gYWxsIG9mIHRoZXNlIGFyZSB0cnVlLCB3
ZSdyZSBkb25lCisgICAgdmFyIGV2ZW50UmVzdWx0ID0ge307CisKKyAgICBmdW5jdGlvbiBvbmVy
cm9yKGUpCisgICAgeworICAgICAgICBldmVudFJlc3VsdC5vbmVycm9yKGUpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG9uYWJvcnQoZSkKKyAgICB7CisgICAgICAgIGV2ZW50UmVzdWx0Lm9uYWJv
cnQoZSk7CisgICAgfQorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgdmFyIGV2ZW50ID0gYXJndW1lbnRzW2ldOworICAgICAgICBwcm9n
cmVzcy5wdXNoKGZhbHNlKTsKKyAgICAgICAgZXZlbnQub25zdWNjZXNzID0gd2FpdEZvcl9vbnN1
Y2Nlc3MoaSwgcHJvZ3Jlc3MsIGV2ZW50UmVzdWx0KTsKKyAgICAgICAgZXZlbnQub25hYm9ydCA9
IG9uYWJvcnQ7CisgICAgICAgIGV2ZW50Lm9uZXJyb3IgPSBvbmVycm9yOworICAgIH0KKyAgICBy
ZXR1cm4gZXZlbnRSZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3Jfb25zdWNjZXNzKGluZGV4
LCBzdWNjZXNzZXMsIGV2ZW50UmVzdWx0KQoreworICAgIGZ1bmN0aW9uIG9uc3VjY2VzcygpCisg
ICAgeworICAgICAgICBzdWNjZXNzZXNbaW5kZXhdID0gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzdWNjZXNzZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghc3Vj
Y2Vzc2VzW2ldKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBl
dmVudFJlc3VsdC5vbnN1Y2Nlc3MoKTsKKyAgICB9CisgICAgcmV0dXJuIG9uc3VjY2VzczsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137161</attachid>
            <date>2012-04-13 15:21:42 -0700</date>
            <delta_ts>2012-04-13 15:23:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60746-20120413152141.patch</filename>
            <type>text/plain</type>
            <size>40147</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU5NDljYjBjODc2Zjhh
MWFhYzg3NDRhNmY3MTFmMGVjMzZjNzcxZC4uYWQxNDA5ZWY3OTdkYWNiNDM0ODQ2OTM1NGRjMWQ3
NzBkZjNiM2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA0LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREIgY2hv
b3NlcyB3cm9uZyByZWNvcmQgb24gUFJFVl9OT19EVVBMSUNBVEUgaW5kZXggY3Vyc29yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDc0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gaXRlcmF0aW5n
IGJhY2t3YXJkcyB3aXRoIFBSRVZfTk9fRFVQTElDQVRFLCBrZWVwIHdhbGtpbmcgcGFzdAorICAg
ICAgICB0aGUgJ3ByZXYnIGtleSB1bnRpbCBpdCBjaGFuZ2VzLCB0aGVuIHdhbGsgZm9yd2FyZCBv
bmUgdGltZS4gVGhpcworICAgICAgICBjb3ZlcnMgdGhlIG9iamVjdCBzdG9yZSBhbmQgaW5kZXgg
Y2FzZXMuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1w
cmV2LW5vLWR1cGxpY2F0ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA0LTEz
ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdIEFkZCBBUEkgZm9yIGNvbG9yIGNob29zZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggOGQ1NzAyMjYwNTdiYTkyM2ZkM2ViMWY0ZmYyZTNkMGY5NjRkNzBkYi4uNTU5MjZl
NjE0NTQ4YmJhNjExOTVmYzg1MmQ1NjY2MzJhYjlhMWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKQEAgLTEwMzksMjQgKzEwMzksNDkgQEAgYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpjb250aW51
ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0YXRlIG5leHRTdGEKIHsKICAg
ICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3VycmVudEtleTsKIAorICAgIC8vIFdl
IG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxhc3QgJ2R1cGxpY2F0ZScga2V5IHdoZW4gdHJ5aW5nIHRv
CisgICAgLy8gYXZvaWQgZHVwbGljYXRlcyB3aGVuIHVzaW5nIFBSRVZfTk9fRFVQTElDQVRFLCBz
byB3ZSBrbm93IHdoZW4KKyAgICAvLyB0byB3YWxrIGZvcndhcmQuCisgICAgUmVmUHRyPElEQktl
eT4gcHJldkR1cGxpY2F0ZUtleTsKKworICAgIC8vIHRoaXMgbWF5IGdldCByZXZlcnNlZCB3aGVu
IGl0ZXJhdGluZyB2aWEgUFJFVl9OT19EVVBMSUNBVEUKKyAgICBib29sIGZvcndhcmQgPSBtX2N1
cnNvck9wdGlvbnMuZm9yd2FyZDsKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgaWYgKG5leHRT
dGF0ZSA9PSBTZWVrKSB7Ci0gICAgICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQp
CisgICAgICAgICAgICBpZiAoZm9yd2FyZCkKICAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5u
ZXh0KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+cHJl
digpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5leHRTdGF0ZSA9IFNlZWs7IC8vIGZv
ciBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMKIAotICAgICAgICBpZiAoIW1faXRlcmF0b3ItPmlzVmFs
aWQoKSkKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAg
IGlmICghZm9yd2FyZCAmJiBwcmV2RHVwbGljYXRlS2V5LmdldCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byB3YWxrIGZvcndhcmQgYmVjYXVzZSB3ZSBoaXQgdGhlIGVuZCBvZgor
ICAgICAgICAgICAgICAgIC8vIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIGZvcndhcmQgPSB0
cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAorICAgICAgICAvLyBUaGUgaXRlcmF0b3Ig
d2lsbCBjb250YWluIHZhbHVlcyBkZWxldGVkIGR1cmluZyBpdGVyYXRpb24uCiAgICAgICAgIFZl
Y3RvcjxjaGFyPiB0cmFzaDsKICAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5nZXQobV9pdGVy
YXRvci0+a2V5KCksIHRyYXNoKSkKLSAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChpc1Bhc3RCb3VuZHMoKSkgeworICAgICAgICAgICAg
aWYgKCFmb3J3YXJkICYmIHByZXZEdXBsaWNhdGVLZXkuZ2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNlIG5vdyB3ZSdyZSBiZXlvbmQgdGhl
CisgICAgICAgICAgICAgICAgLy8gYm91bmRzIGRlZmluZWQgYnkgdGhlIGN1cnNvci4KKyAgICAg
ICAgICAgICAgICBmb3J3YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNQYXN0Qm91bmRzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWhhdmVFbnRlcmVkUmFuZ2Uo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA2Nyw3ICsxMDkyLDcgQEAgYm9vbCBDdXJz
b3JJbXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRv
clN0YXRlIG5leHRTdGEKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChrZXkp
IHsKLSAgICAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgeworICAgICAgICAg
ICAgaWYgKGZvcndhcmQpIHsKICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50S2V5LT5pc0xl
c3NUaGFuKGtleSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTEwNzYsOSArMTEwMSwzMiBAQCBib29sIEN1cnNvckltcGxDb21tb246OmNv
bnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXksIEl0ZXJhdG9yU3RhdGUgbmV4dFN0YQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy51
bmlxdWUgJiYgbV9jdXJyZW50S2V5LT5pc0VxdWFsKHByZXZpb3VzS2V5LmdldCgpKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLnVuaXF1ZSkgewor
CisgICAgICAgICAgICBpZiAobV9jdXJyZW50S2V5LT5pc0VxdWFsKHByZXZpb3VzS2V5LmdldCgp
KSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBhYmxlIHRvIHdhbGsg
Zm9yd2FyZCBhbGwgdGhlIHdheQorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBwcmV2aW91cyBr
ZXkuCisgICAgICAgICAgICAgICAgQVNTRVJUKCFwcmV2RHVwbGljYXRlS2V5LmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFmb3J3YXJkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcmV2RHVwbGljYXRlS2V5LmdldCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIHByZXZEdXBsaWNhdGVLZXkgPSBtX2N1cnJlbnRLZXk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KIAorICAg
ICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gd2FsayBmb3J3YXJkIGJlY2F1c2Ugd2UgaGl0IHRo
ZSBib3VuZGFyeQorICAgICAgICAgICAgICAgIC8vIGJldHdlZW4ga2V5IHJhbmdlcy4KKyAgICAg
ICAgICAgICAgICBpZiAoIXByZXZEdXBsaWNhdGVLZXktPmlzRXF1YWwobV9jdXJyZW50S2V5Lmdl
dCgpKSkgeworICAgICAgICAgICAgICAgICAgICBmb3J3YXJkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Ly8gcHJldkR1cGxpY2F0ZUtleSA9PSBtX2N1cnJlbnRLZXksIHNvIGtlZXAgd2Fsa2luZy4KKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYmRmMThlMmUzMzljNTlhNDdhY2IyYThhZDg5NjZj
OTY1ZjA1MTcxLi4yNjZjNTEzMWZlZmMzM2QzNDc2MDhjMjJkOGE5OTg2YzgzOWFkNjA2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDQtMTMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQiBjaG9vc2VzIHdyb25nIHJlY29yZCBvbiBQ
UkVWX05PX0RVUExJQ0FURSBpbmRleCBjdXJzb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgUFJFVl9OT19EVVBMSUNBVEUuCisKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRl
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1w
cmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmV2LW5vLWR1cGxp
Y2F0ZS5qczogQWRkZWQuCisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5vbnN1Y2Nl
c3MudmVycmVxLm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5v
bnN1Y2Nlc3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKHBvcHVsYXRl
U3RvcmUpOgorICAgICAgICAocnVuQWxsVGVzdHMpOgorICAgICAgICAod2FpdEZvcik6CisgICAg
ICAgIChjb21wbGV0ZS5maXJlQ2FsbGJhY2spOgorICAgICAgICAoY29tcGxldGUpOgorICAgICAg
ICAodGVzdEZhclJhbmdlQ3Vyc29yKToKKyAgICAgICAgKG1ha2VPcGVuS2V5Q3Vyc29yKToKKyAg
ICAgICAgKHJ1blRlc3QudHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChydW5UZXN0LnRlc3RG
dW5jdGlvbik6CisgICAgICAgIChydW5UZXN0KToKKwogMjAxMi0wNC0xMyAgQW50b24gTXVoaW4g
IDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1hcmsgdGVzdCBhcyBmbGFreS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1
cGxpY2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MmY1Y2JiNjRm
M2UxY2E0N2E3ZDQ2ZjU2MDM0YjVjODAwODA0YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjY5IEBACitUZXN0IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCBy
ZWFkYmFjayBmcm9tIGN1cnNvcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitp
bmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxm
Lm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKwor
CitvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1ZycpCitkYiA9IG9w
ZW5yZXEucmVzdWx0Cit2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykKK0RlbGV0ZWQgYWxsIG9i
amVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpCitzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnc29ydGVkJykKKworcG9wdWxhdGluZyBzdG9yZS4uLgor
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK3N0b3JlLnB1dCh7c29ydGVk
OiAzLCB2YWx1ZTogMTExfSwgMSkKK3N0b3JlLnB1dCh7c29ydGVkOiAyLCB2YWx1ZTogMjIyfSwg
MikKK3N0b3JlLnB1dCh7c29ydGVkOiAxLCB2YWx1ZTogMzMzfSwgMykKK3N0b3JlLnB1dCh7c29y
dGVkOiAxMCwgdmFsdWU6IDQ0NH0sIDE3KQorc3RvcmUucHV0KHtzb3J0ZWQ6IDEwLCB2YWx1ZTog
NTU1fSwgMTYpCitzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA2NjZ9LCAxNSkKK3Rlc3RG
YXJSYW5nZUN1cnNvcigpCisKK3J1blRlc3Qoc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51
cHBlckJvdW5kKDcsIGZhbHNlKSwgMikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
JywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4u
Lgorc3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywg
ZmFsc2UpLCAyKQorCitydW5UZXN0KHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJC
b3VuZCg3LCB0cnVlKSwgMikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3Rv
cmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSks
IDIpCisKK3J1blRlc3QoaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcs
IGZhbHNlKSwgMikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2lu
ZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEg
PSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQor
CitydW5UZXN0KGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVl
KSwgMikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0g
c3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCisKK3J1blRl
c3QoaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIGZhbHNlKSwg
MikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3Rv
cmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5v
cGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQorCitydW5U
ZXN0KGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwg
MikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3Rv
cmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5v
cGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCit0ZXN0Qm91
bmRhcnlDdXJzb3IoKQorCitydW5UZXN0KHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBw
ZXJCb3VuZCgzLCBmYWxzZSksIDIpLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJyk7CitpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4K
K3N0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZh
bHNlKSwgMikKKworcnVuVGVzdChzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91
bmQoMywgdHJ1ZSksIDIpLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRy
YW5zYWN0aW9uLlJFQURfT05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7
CitpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3Jl
UmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAy
KQorCitydW5UZXN0KGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBm
YWxzZSksIDIpLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0
aW9uLlJFQURfT05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRl
eCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0g
aW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikKKwor
cnVuVGVzdChpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSks
IDIpLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJF
QURfT05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0
b3JlLmluZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0gaW5kZXgu
b3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorCitydW5UZXN0
KGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIp
Li4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
T05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0b3Jl
LmluZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0gaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikKKworcnVuVGVz
dChpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIp
Li4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
T05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0b3Jl
LmluZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0gaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQordGVzdE5vRHVw
bGljYXRlKCkKKworcnVuVGVzdChzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91
bmQoMTUsIGZhbHNlKSwgMykuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3Rv
cmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNl
KSwgMykKKworcnVuVGVzdChpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQo
MTUsIGZhbHNlKSwgMykuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsK
K2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVS
ZXEgPSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwg
MykKKworcnVuVGVzdChpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQo
MTUsIGZhbHNlKSwgMykuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsK
K2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVS
ZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNl
KSwgMykKKworRVhFQ1VURSBURVNUUy4uLi4KKworVGVzdGluZzogc3RvcmUub3BlbkN1cnNvcihJ
REJLZXlSYW5nZS51cHBlckJvdW5kKDcsIGZhbHNlKSwgMikKK2N1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZEtleQorICAg
ICBjdXJzb3Iua2V5ID0gMworUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgZXhwZWN0YXRpb24u
ZXhwZWN0ZWRWYWx1ZQorICAgICBjdXJzb3IudmFsdWUudmFsdWUgPSAzMzMKK0RPTkUKKworVGVz
dGluZzogc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAy
KQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVj
dGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci52YWx1
ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52
YWx1ZSA9IDMzMworRE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdl
LnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
UEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5r
ZXkgPSAzCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZh
bHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDExMQorUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFByaW1hcnlLZXkKKyAgICAgY3Vyc29yLnByaW1hcnlL
ZXkgPSAxCitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBw
ZXJCb3VuZCg3LCB0cnVlKSwgMikKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1Mg
Y3Vyc29yLmtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZEtleQorICAgICBjdXJzb3Iua2V5ID0g
MworUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRWYWx1ZQor
ICAgICBjdXJzb3IudmFsdWUudmFsdWUgPSAxMTEKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMg
ZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1cnNvci5wcmltYXJ5S2V5ID0g
MQorRE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVy
Qm91bmQoNywgZmFsc2UpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBj
dXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAz
CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtl
eQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDEKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKQorY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVj
dGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4
cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDEK
K0RPTkUKKworVGVzdGluZzogc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5k
KDMsIGZhbHNlKSwgMikKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29y
LmtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZEtleQorICAgICBjdXJzb3Iua2V5ID0gMworUEFT
UyBjdXJzb3IudmFsdWUudmFsdWUgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRWYWx1ZQorICAgICBj
dXJzb3IudmFsdWUudmFsdWUgPSAzMzMKK0RPTkUKKworVGVzdGluZzogc3RvcmUub3BlbkN1cnNv
cihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5Cisg
ICAgIGN1cnNvci5rZXkgPSAyCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlv
bi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDIyMgorRE9ORQorCitU
ZXN0aW5nOiBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2Up
LCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4
cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci52
YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1
ZS52YWx1ZSA9IDExMQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3RhdGlvbi5leHBl
Y3RlZFByaW1hcnlLZXkKKyAgICAgY3Vyc29yLnByaW1hcnlLZXkgPSAxCitET05FCisKK1Rlc3Rp
bmc6IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3Rh
dGlvbi5leHBlY3RlZEtleQorICAgICBjdXJzb3Iua2V5ID0gMgorUEFTUyBjdXJzb3IudmFsdWUu
dmFsdWUgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRWYWx1ZQorICAgICBjdXJzb3IudmFsdWUudmFs
dWUgPSAyMjIKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQ
cmltYXJ5S2V5CisgICAgIGN1cnNvci5wcmltYXJ5S2V5ID0gMgorRE9ORQorCitUZXN0aW5nOiBp
bmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQor
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0
aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci5wcmltYXJ5
S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3IucHJpbWFy
eUtleSA9IDEKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5n
ZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
UEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5r
ZXkgPSAyCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJp
bWFyeUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDIKK0RPTkUKKworVGVzdGluZzogc3Rv
cmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDE1LCBmYWxzZSksIDMpCitjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24u
ZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDE1CitQQVNTIGN1cnNvci52YWx1ZS52YWx1
ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9
IDY2NgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFByaW1h
cnlLZXkKKyAgICAgY3Vyc29yLnByaW1hcnlLZXkgPSAxNQorRE9ORQorCitUZXN0aW5nOiBpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKK2N1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3RhdGlvbi5l
eHBlY3RlZEtleQorICAgICBjdXJzb3Iua2V5ID0gMTAKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVl
IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0g
NjY2CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFy
eUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDE1CitET05FCisKK1Rlc3Rpbmc6IGluZGV4
Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9u
LmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAxMAorUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFByaW1hcnlLZXkKKyAgICAgY3Vyc29yLnByaW1hcnlL
ZXkgPSAxNQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2
LW5vLWR1cGxpY2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JmYTk3OWNiZTU3Mjk2ZjA4NDY2
NGE1MjA0ZDA0M2RjMmViODQzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCkBAIC0wLDAgKzEsMTAg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1
cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
aW5kZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmFmZWQ5ZDEwMWY0OWQxYjE1MTIyOWM0ZGIxYTk0OGZjMTAwMTU0NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5k
ZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTgzIEBACitUZXN0
IEluZGV4ZWREQjogaXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdoIGFuIGluZGV4LCBza2lwcGlu
ZyBkdXBsaWNhdGVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsKK1BBU1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK0lEQkRhdGFiYXNl
RXhjZXB0aW9uID0gd2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbjsKK1BBU1MgSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCBp
cyBmYWxzZQorSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93
LndlYmtpdElEQlRyYW5zYWN0aW9uOworUEFTUyBJREJUcmFuc2FjdGlvbiA9PSBudWxsIGlzIGZh
bHNlCitJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJDdXJz
b3I7CitQQVNTIElEQkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCitJREJLZXlSYW5nZSA9IHdpbmRv
dy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7CitQQVNTIElEQktleVJh
bmdlID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQor
b3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK0ZpcnN0LCBhZGQgYWxsIG91
ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9i
amVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7City
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0
U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3Jl
RGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtl
eSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwg
b2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVj
dFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CitOb3cgY3JlYXRl
IHRoZSBpbmRleGVzLgorb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUs
IGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9y
ZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGlu
ZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtp
XS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwordGVz
dFByZXYoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitvYmplY3RT
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitrZXlJbmRleCA9IDg7
CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcpLm9wZW5DdXJzb3IobnVsbCwg
SURCQ3Vyc29yLlBSRVYpOworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vy
c29yLmtleSBpcyA3MworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3NDAnCitQ
QVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdTYW0nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQg
aXMgNzMKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgp
Owora2V5SW5kZXgtLTsKKyAgPT4gNworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BB
U1MgY3Vyc29yLmtleSBpcyA3MworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3
MzQnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdSb24nCitQQVNTIGN1cnNvci52YWx1ZS5o
ZWlnaHQgaXMgNzMKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxODAKK2N1cnNvci5jb250
aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gNgorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3
LTIzLTc3MzknCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdKZWYnCitQQVNTIGN1cnNvci52
YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMjAKK2N1cnNv
ci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gNQorY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyAnMjM3LTIzLTc3MzgnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdMZW8nCitQQVNTIGN1
cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxODAK
K2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gNAorY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFy
eUtleSBpcyAnMjM3LTIzLTc3MzcnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdQYXQnCitQ
QVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBp
cyAxMDAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gMworY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3Iu
cHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzYnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdK
b2UnCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndl
aWdodCBpcyAxNTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gMgorY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2MAorUEFTUyBj
dXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzInCitQQVNTIGN1cnNvci52YWx1ZS5uYW1l
IGlzICdCb2InCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjAKK1BBU1MgY3Vyc29yLnZh
bHVlLndlaWdodCBpcyAxMjAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4g
MQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA1OAor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzUnCitQQVNTIGN1cnNvci52YWx1
ZS5uYW1lIGlzICdTdWUnCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNTgKK1BBU1MgY3Vy
c29yLnZhbHVlLndlaWdodCBpcyAxMzAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsK
KyAgPT4gMAorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBp
cyA1MgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzMnCitQQVNTIGN1cnNv
ci52YWx1ZS5uYW1lIGlzICdBbm4nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNTIKK1BB
U1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5k
ZXgtLTsKKyAgPT4gLTEKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitObyBjdXJzb3I6
IG51bGwKK1BBU1Mga2V5SW5kZXggaXMgLTEKK3Rlc3RQcmV2Tm9EdXBsaWNhdGUoKQorb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVj
dFN0b3JlTmFtZSk7CitrZXlJbmRleCA9IDg7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgo
J2hlaWdodCcpLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitrZXlJbmRleCAtPSAxCisgID0+IEVudGVy
aW5nIHdpdGgga2V5SW5kZXggPSA3CitQQVNTIGN1cnNvci5rZXkgaXMgNzMKK1BBU1MgY3Vyc29y
LnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM0JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAn
Um9uJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDczCitQQVNTIGN1cnNvci52YWx1ZS53
ZWlnaHQgaXMgMTgwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CitjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0Owora2V5SW5kZXggLT0gMzsKKyAgPT4gRW50ZXJpbmcgd2l0aCBr
ZXlJbmRleCA9IDMKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyAnMjM3LTIzLTc3MzYnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdKb2UnCitQQVNT
IGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAx
NTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CisgID0+IEVudGVyaW5nIHdpdGgga2V5SW5kZXggPSAyCitQQVNTIGN1cnNvci5r
ZXkgaXMgNjAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzMyJworUEFTUyBj
dXJzb3IudmFsdWUubmFtZSBpcyAnQm9iJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDYw
CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTIwCitjdXJzb3IuY29udGludWUoKTsKK2tl
eUluZGV4LS07CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICA9PiBFbnRlcmluZyB3
aXRoIGtleUluZGV4ID0gMQorUEFTUyBjdXJzb3Iua2V5IGlzIDU4CitQQVNTIGN1cnNvci5wcmlt
YXJ5S2V5IGlzICcyMzctMjMtNzczNScKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ1N1ZScK
K1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1OAorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0
IGlzIDEzMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgPT4gRW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9IDAKK1BBU1MgY3Vy
c29yLmtleSBpcyA1MgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzMnCitQ
QVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdBbm4nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQg
aXMgNTIKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgp
Owora2V5SW5kZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgID0+IEVudGVy
aW5nIHdpdGgga2V5SW5kZXggPSAtMQorTm8gY3Vyc29yOiBudWxsCitQQVNTIGtleUluZGV4IGlz
IC0xCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1w
cmV2LW5vLWR1cGxpY2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhN2NhYWRmODg2
MDM2ZjgzMDM1ZGQ2NDUyYjc2NTY0MDkzZjQyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0
bWwKQEAgLTAsMCArMSwxOTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0
ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVk
REIvdGVzdC90ZXN0X2luZGV4ZXMuaHRtbD9mb3JjZT0xCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwg
dGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorICAgIHZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBpdGVyYXRpbmcgYmFja3dh
cmRzIHRocm91Z2ggYW4gaW5kZXgsIHNraXBwaW5nIGR1cGxpY2F0ZXMiKTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIg
fHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIg
PT0gbnVsbCIpOworICAgIElEQkRhdGFiYXNlRXhjZXB0aW9uID0gZXZhbEFuZExvZygiSURCRGF0
YWJhc2VFeGNlcHRpb24gPSB3aW5kb3cuSURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93Lndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFi
YXNlRXhjZXB0aW9uID09IG51bGwiKTsKKyAgICBJREJUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
IklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJ
REJUcmFuc2FjdGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBu
dWxsIik7CisgICAgSURCQ3Vyc29yID0gZXZhbEFuZExvZygiSURCQ3Vyc29yID0gd2luZG93LklE
QkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURCQ3Vyc29yOyIpOworICAgIHNob3VsZEJlRmFsc2Uo
IklEQkN1cnNvciA9PSBudWxsIik7CisgICAgSURCS2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJL
ZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCS2V5UmFuZ2UgPT0gbnVsbCIpOworCisgICAgbmFt
ZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBvYmpl
Y3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAgIG9iamVjdFN0b3JlRGF0YSA9IFsKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYw
LCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTog
eyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdo
dDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6
ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAg
fSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIs
IGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
OCIsIHZhbHVlOiB7IG5hbWU6ICJMZW8iLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE4MCB9IH0sCisg
ICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzkiLCB2YWx1ZTogeyBuYW1lOiAiSmVmIiwgaGVpZ2h0
OiA2NSwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFs
dWU6IHsgbmFtZTogIlNhbSIsIGhlaWdodDogNzMsIHdlaWdodDogMTEwIH0gfSwKKyAgICBdOwor
CisgICAgaW5kZXhEYXRhID0gWworICAgICAgICB7IG5hbWU6ICJuYW1lIiwga2V5UGF0aDogIm5h
bWUiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAgICAgIHsgbmFtZTogImhlaWdo
dCIsIGtleVBhdGg6ICJoZWlnaHQiLCBvcHRpb25zOiB7IH0gfSwKKyAgICAgICAgeyBuYW1lOiAi
d2VpZ2h0Iiwga2V5UGF0aDogIndlaWdodCIsIG9wdGlvbnM6IHsgdW5pcXVlOiBmYWxzZSB9IH0K
KyAgICBdOworCisgICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydCA9IFsKKyAgICAgICAgeyBr
ZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWln
aHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1l
OiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIz
Ny0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIw
IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2Ui
LCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM4IiwgdmFsdWU6IHsgbmFtZTogIkxlbyIsIGhlaWdo
dDogNjUsIHdlaWdodDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczOSIsIHZh
bHVlOiB7IG5hbWU6ICJKZWYiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywg
d2VpZ2h0OiAxODAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFsdWU6IHsg
bmFtZTogIlNhbSIsIGhlaWdodDogNzMsIHdlaWdodDogMTEwIH0gfSwKKyAgICBdOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKworICAgIGRlYnVnKCJG
aXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOworICAgIGFkZGVk
RGF0YSA9IDA7CisgICAgZm9yIChpIGluIG9iamVjdFN0b3JlRGF0YSkgeworICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
W2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsiKTsKKyAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBpZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3Rv
cmVEYXRhLmxlbmd0aCkgeworICAgICAgICAgIGNyZWF0ZUluZGV4ZXMoKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gY3JlYXRlSW5kZXhlcygpCit7CisgICAgZGVi
dWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuIik7CisgICAgZm9yIChpIGluIGluZGV4RGF0YSkg
eworICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ld
Lm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Iik7Cisg
ICAgfQorCisKKyAgICB0ZXN0UHJldigpOworfQorCitmdW5jdGlvbiB0ZXN0UHJldigpIHsKKyAg
ICBkZWJ1ZygidGVzdFByZXYoKSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7
Iik7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDg7Iik7CisgICAgLy8g
Zmlyc3QgdHJ5IHdpdGgganVzdCBQUkVWCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJz
b3IuUFJFVik7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
ICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICIi
ICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0KTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICInIiArIG9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSArICInIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIiIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52
YWx1ZS5oZWlnaHQpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkg
eworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIiIgKyBv
YmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgICAgICBkZWJ1
ZygiICA9PiAiICsga2V5SW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZGVidWcoIk5vIGN1cnNvcjogIiArIGN1cnNvcik7CisgICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJhbnMub25jb21w
bGV0ZSA9IHRlc3RQcmV2Tm9EdXBsaWNhdGU7Cit9CisKK2Z1bmN0aW9uIHRlc3RQcmV2Tm9EdXBs
aWNhdGUoKSB7CisgICAgZGVidWcoInRlc3RQcmV2Tm9EdXBsaWNhdGUoKSIpOworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RT
dG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDg7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJ
REJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gOCkgeworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4IC09IDEiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA2KSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExv
Zygia2V5SW5kZXggLT0gMzsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgZGVidWcoIiAgPT4g
RW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9ICIgKyBrZXlJbmRleCk7CisgICAgICAgIGlmIChjdXJz
b3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIiIgKyBvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQpOworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dFtrZXlJbmRleF0ua2V5ICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUubmFtZSIsICInIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUgKyAiJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQi
LCAiIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCk7
CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAiIiArIG9iamVjdFN0b3JlRGF0
YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJObyBjdXJzb3I6ICIgKyBjdXJzb3IpOworICAgICAgICAgICAgc2hv
dWxkQmUoImtleUluZGV4IiwgIi0xIik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rl
c3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJldi1u
by1kdXBsaWNhdGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
Y3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZjE0OTU3NWM0YThlNDBh
Yzg3YjM5OGEyNTFjYWMwZjNjZjBhYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLmpzCkBA
IC0wLDAgKzEsMjAzIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCIGtleXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHByZXBhcmVE
YXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1y
ZXZlcnNlLWJ1ZycpIik7CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZh
bEFuZExvZygiZGIgPSBvcGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJy
ZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICAgICAgICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4Jywg
J3NvcnRlZCcpIik7CisgICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1
bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBvcHVsYXRlU3Rv
cmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMywgdmFsdWU6IDExMX0sIDEp
Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtzb3J0ZWQ6IDIsIHZhbHVlOiAyMjJ9LCAy
KSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAxLCB2YWx1ZTogMzMzfSwg
MykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA0NDR9
LCAxNykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA1
NTV9LCAxNikiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVl
OiA2NjZ9LCAxNSkiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gcnVuQWxsVGVzdHM7Cit9CisK
KworZnVuY3Rpb24gcnVuQWxsVGVzdHMoKSB7CisgICAgd2FpdEZvcigKKyAgICAgICAgdGVzdEZh
clJhbmdlQ3Vyc29yKCksCisgICAgICAgIHRlc3RCb3VuZGFyeUN1cnNvcigpLAorICAgICAgICB0
ZXN0Tm9EdXBsaWNhdGUoKQorICAgICAgICApLm9uc3VjY2VzcyA9IGZpbmlzaEpTVGVzdDsKKwor
ICAgIC8vIGhlbHAgdXMgZGlzdGluZ3Vpc2ggdGhlIHF1ZXVpbmcgb2YgdGhlIHRlc3RzIGZyb20g
dGhlIGV4ZWN1dGlvbgorICAgIGRlYnVnKCJcbkVYRUNVVEUgVEVTVFMuLi4uIik7Cit9CisKKwor
CitmdW5jdGlvbiB0ZXN0RmFyUmFuZ2VDdXJzb3IoKQoreworICAgIC8vIHVwcGVyIGJvdW5kIGlz
IHdlbGwgb3V0IG9mIHJhbmdlLCByZXN1bHRzIGFsd2F5cyB0aGUgc2FtZSwKKyAgICAvLyB3aGV0
aGVyIG9wZW4gb3IgY2xvc2VkCisgICAgZGVidWcoInRlc3RGYXJSYW5nZUN1cnNvcigpIik7Cisg
ICAgcmV0dXJuIHdhaXRGb3IoCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoInN0b3Jl
IiwgNywgZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVk
VmFsdWU6IDMzMywgZXhwZWN0ZWRLZXk6IDN9KSwKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1
cnNvcigic3RvcmUiLCA3LCB0cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAg
eyBleHBlY3RlZFZhbHVlOiAzMzMsIGV4cGVjdGVkS2V5OiAzfSksCisKKyAgICAgICAgLy8gaGVy
ZSAnNycgcmVmZXJzIHRvIHRoZSAnc29ydGVkJyB2YWx1ZQorICAgICAgICBydW5UZXN0KG1ha2VP
cGVuQ3Vyc29yKCJpbmRleCIsIDcsIGZhbHNlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAg
ICAgICAgeyBleHBlY3RlZFZhbHVlOiAxMTEsIGV4cGVjdGVkS2V5OiAzLCBleHBlY3RlZFByaW1h
cnlLZXk6IDF9KSwKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigiaW5kZXgiLCA3LCB0
cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAgeyBleHBlY3RlZFZhbHVlOiAx
MTEsIGV4cGVjdGVkS2V5OiAzLCBleHBlY3RlZFByaW1hcnlLZXk6IDF9KSwKKworICAgICAgICAv
LyBoZXJlICc3JyByZWZlcnMgdG8gdGhlIHNvcnRlZCB2YWx1ZQorICAgICAgICBydW5UZXN0KG1h
a2VPcGVuS2V5Q3Vyc29yKCJpbmRleCIsIDcsIGZhbHNlLCBJREJDdXJzb3IuUFJFViksCisgICAg
ICAgICAgICAgICAgeyBleHBlY3RlZEtleTogMywgZXhwZWN0ZWRQcmltYXJ5S2V5OiAxfSksCisg
ICAgICAgIHJ1blRlc3QobWFrZU9wZW5LZXlDdXJzb3IoImluZGV4IiwgNywgdHJ1ZSwgSURCQ3Vy
c29yLlBSRVYpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVkUHJp
bWFyeUtleTogMX0pCisgICAgICAgICk7Cit9CisKK2Z1bmN0aW9uIHRlc3RCb3VuZGFyeUN1cnNv
cigpCit7CisgICAgZGVidWcoInRlc3RCb3VuZGFyeUN1cnNvcigpIik7CisgICAgcmV0dXJuIHdh
aXRGb3IoCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoInN0b3JlIiwgMywgZmFsc2Us
IElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDMzMywg
ZXhwZWN0ZWRLZXk6IDN9KSwKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUi
LCAzLCB0cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAgeyBleHBlY3RlZFZh
bHVlOiAyMjIsIGV4cGVjdGVkS2V5OiAyfSksCisKKyAgICAgICAgLy8gYnkgaW5kZXggc29ydCBv
cmRlciwgd2Ugc2hvdWxkIHJldHVybiB0aGVtIGluIGEgZGlmZmVyZW50IG9yZGVyCisgICAgICAg
IHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoImluZGV4IiwgMywgZmFsc2UsIElEQkN1cnNvci5QUkVW
KSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDExMSwgZXhwZWN0ZWRLZXk6IDMs
IGV4cGVjdGVkUHJpbWFyeUtleTogMX0pLAorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29y
KCJpbmRleCIsIDMsIHRydWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4
cGVjdGVkVmFsdWU6IDIyMiwgZXhwZWN0ZWRLZXk6IDIsIGV4cGVjdGVkUHJpbWFyeUtleTogMn0p
LAorCisgICAgICAgIC8vIG5vdyB0aGUgdmFsdWUgZG9lc24ndCBtYXR0ZXIsIGp1c3QgdGhlIHBy
aW1hcnkga2V5CisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5LZXlDdXJzb3IoImluZGV4IiwgMywg
ZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkS2V5OiAz
LCBleHBlY3RlZFByaW1hcnlLZXk6IDF9KSwKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbktleUN1
cnNvcigiaW5kZXgiLCAzLCB0cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAg
eyBleHBlY3RlZEtleTogMiwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAyfSkKKyAgICAgICAgKTsKK30K
KworZnVuY3Rpb24gdGVzdE5vRHVwbGljYXRlKCkKK3sKKyAgICBkZWJ1ZygidGVzdE5vRHVwbGlj
YXRlKCkiKTsKKyAgICAvLyB0aGVyZSBhcmUgMyB2YWx1ZXMsIGJ1dCB3ZSBzaG91bGQgcmV0dXJu
IHRoZSBmaXJzdCBvbmUKKyAgICByZXR1cm4gd2FpdEZvcigKKyAgICAgICAgLy8gUFJFVl9OT19E
VVBMSUNBVEUgZG9lc24ndCByZWFsbHkgYWZmZWN0IG5vbi1pbmRleGVkCisgICAgICAgIC8vIGN1
cnNvcnMsIGJ1dCB3ZSBzaG91bGQgbWFrZSBzdXJlIHdlIGdldCB0aGUgcmlnaHQgb25lCisgICAg
ICAgIC8vIGFueXdheQorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDE1
LCBmYWxzZSwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKSwKKyAgICAgICAgICAgICAgICB7
IGV4cGVjdGVkVmFsdWU6IDY2NiwgZXhwZWN0ZWRLZXk6IDE1LCBleHBlY3RlZFByaW1hcnlLZXk6
IDE1IH0pLAorCisgICAgICAgIC8vIHN0aWxsIHRocmVlIHZhbHVlcywgYnV0IG5vdyB0aGUgaW5k
ZXggc2F5cyB3ZSBzaG91bGQgcmV0dXJuIHRoZQorICAgICAgICAvLyBzZWNvbmQgb25lCisgICAg
ICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoImluZGV4IiwgMTUsIGZhbHNlLCBJREJDdXJzb3Iu
UFJFVl9OT19EVVBMSUNBVEUpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogNjY2
LCBleHBlY3RlZEtleTogMTAsIGV4cGVjdGVkUHJpbWFyeUtleTogMTV9KSwKKworICAgICAgICAv
LyBzYW1lIGJlaGF2aW9yIGFzIGFib3ZlLCB3aXRob3V0IGEgdmFsdWUKKyAgICAgICAgcnVuVGVz
dChtYWtlT3BlbktleUN1cnNvcigiaW5kZXgiLCAxNSwgZmFsc2UsIElEQkN1cnNvci5QUkVWX05P
X0RVUExJQ0FURSksCisgICAgICAgICAgICAgICAgeyBleHBlY3RlZEtleTogMTAsIGV4cGVjdGVk
UHJpbWFyeUtleTogMTV9KQorICAgICAgICApOworfQorCisKK2Z1bmN0aW9uIG1ha2VPcGVuQ3Vy
c29yKG9iaiwgdXBwZXJCb3VuZCwgb3BlbiwgZGlyZWN0aW9uKQoreworICAgIHJldHVybiBvYmog
KyAiLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgiICsgdXBwZXJCb3VuZCArICIs
ICIgKworICAgICAgICBvcGVuICsgIiksICIgKworICAgICAgICAgICAgZGlyZWN0aW9uICsgIiki
OworfQorCitmdW5jdGlvbiBtYWtlT3BlbktleUN1cnNvcihvYmosIHVwcGVyQm91bmQsIG9wZW4s
IGRpcmVjdGlvbikKK3sKKyAgICByZXR1cm4gb2JqICsgIi5vcGVuS2V5Q3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQoIiArIHVwcGVyQm91bmQgKyAiLCAiICsKKyAgICAgICAgb3BlbiArICIp
LCAiICsKKyAgICAgICAgICAgIGRpcmVjdGlvbiArICIpIjsKK30KKworZnVuY3Rpb24gcnVuVGVz
dChvcGVuQ3Vyc29yLCBleHApCit7CisgICAgZGVidWcoIlxucnVuVGVzdCgiICsgb3BlbkN1cnNv
ciArICIuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKworICAgIC8vIGV4cG9zZSB0aGVzZSBm
b3IgY29kZSBpbiBvcGVuQ3Vyc29yCisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4
KCdpbmRleCcpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJh
bnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiRE9ORSIpOworICAg
IH07CisKKyAgICB2YXIgcmVzdWx0ID0ge307CisKKyAgICB2YXIgdGVzdEZ1bmN0aW9uID0gZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gZXhwb3NlIGZvciBldmFsQW5kTG9nCisgICAgICAg
IGV4cGVjdGF0aW9uID0gZXhwOworCisgICAgICAgIGRlYnVnKCJcblRlc3Rpbmc6ICIgKyBvcGVu
Q3Vyc29yKTsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgICAgICBpZiAoY3Vyc29yID09PSBudWxsKSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJudWxsIGN1cnNvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkiKTsK
KyAgICAgICAgZGVidWcoIiAgICAgY3Vyc29yLmtleSA9ICIgKyBjdXJzb3Iua2V5KTsKKyAgICAg
ICAgaWYgKCJ2YWx1ZSIgaW4gY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLnZhbHVlIiwgImV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUiKTsKKyAgICAgICAgICAg
IGRlYnVnKCIgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9ICIgKyBjdXJzb3IudmFsdWUudmFsdWUp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCJleHBlY3RlZFZhbHVlIiBpbiBleHBlY3Rh
dGlvbikKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRlc3QgYnJva2VuOiBzaG91bGRuJ3QgaGF2
ZSBleHBlY3RlZFZhbHVlIik7CisKKyAgICAgICAgaWYgKCJleHBlY3RlZFByaW1hcnlLZXkiIGlu
IGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAiZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5Iik7CisgICAgICAgICAgICBkZWJ1Zygi
ICAgICBjdXJzb3IucHJpbWFyeUtleSA9ICIgKyBjdXJzb3IucHJpbWFyeUtleSk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBMZXQgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaC4KKyAgICAgICAgcmVz
dWx0Lm9uc3VjY2VzcygpOworICAgIH07CisKKyAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IuLi4i
KTsKKyAgICBzdG9yZVJlcSA9IGV2YWxBbmRMb2coInN0b3JlUmVxID0gIiArIG9wZW5DdXJzb3Ip
OworICAgIHN0b3JlUmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCBl
NGI4ZDNmMGM0Y2E4YTA5YzIxZGVjNzQxMGI3YmU3YjVkZDFhZGVmLi43NmYyYmZmYWFhY2NjZTM1
NjE0ZTVjNjIxMTY1OWZlYTg3MzA3MDdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKQEAgLTExMiwzICsxMTIsNDcgQEAgZnVuY3Rp
b24gZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKQogICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9y
ZShkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkpOwogICAgIGRlYnVnKCJEZWxldGVkIGFsbCBv
YmplY3Qgc3RvcmVzLiIpOwogfQorCisvLyB0YWtlIGFuIHVuc3BlY2lmaWVkIG51bWJlciBvZiBj
YWxsYmFjay1saWtlIG9iamVjdHMsIHdhaXQgZm9yIGVhY2gKKy8vIG9uZSwgYW5kIGZpcmUgYW4g
b25zdWNjZXNzIGV2ZW50IHdoZW4gYWxsIG9mIHRoZW0gY29tcGxldGUuIElmIGFueQorLy8gb2Yg
dGhlIGNhbGxiYWNrIG9iamVjdHMgdGhyb3cgYW4gZXJyb3Igb3IgYWJvcnQsIGZpcmUgdGhlCisv
LyBhcHByb3ByaWF0ZSBvbmVycm9yL29uYWJvcnQgaW1tZWRpYXRlbHkuCitmdW5jdGlvbiB3YWl0
Rm9yKCkKK3sKKworICAgIHZhciBwcm9ncmVzcyA9IFtdOyAgICAgICAgICAvLyB3aGVuIGFsbCBv
ZiB0aGVzZSBhcmUgdHJ1ZSwgd2UncmUgZG9uZQorICAgIHZhciBldmVudFJlc3VsdCA9IHt9Owor
CisgICAgZnVuY3Rpb24gb25lcnJvcihlKQorICAgIHsKKyAgICAgICAgZXZlbnRSZXN1bHQub25l
cnJvcihlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbmFib3J0KGUpCisgICAgeworICAgICAg
ICBldmVudFJlc3VsdC5vbmFib3J0KGUpOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBldmVudCA9IGFyZ3VtZW50
c1tpXTsKKyAgICAgICAgcHJvZ3Jlc3MucHVzaChmYWxzZSk7CisgICAgICAgIGV2ZW50Lm9uc3Vj
Y2VzcyA9IHdhaXRGb3Jfb25zdWNjZXNzKGksIHByb2dyZXNzLCBldmVudFJlc3VsdCk7CisgICAg
ICAgIGV2ZW50Lm9uYWJvcnQgPSBvbmFib3J0OworICAgICAgICBldmVudC5vbmVycm9yID0gb25l
cnJvcjsKKyAgICB9CisgICAgcmV0dXJuIGV2ZW50UmVzdWx0OworfQorCitmdW5jdGlvbiB3YWl0
Rm9yX29uc3VjY2VzcyhpbmRleCwgc3VjY2Vzc2VzLCBldmVudFJlc3VsdCkKK3sKKyAgICBmdW5j
dGlvbiBvbnN1Y2Nlc3MoKQorICAgIHsKKyAgICAgICAgc3VjY2Vzc2VzW2luZGV4XSA9IHRydWU7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VjY2Vzc2VzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICBpZiAoIXN1Y2Nlc3Nlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgZXZlbnRSZXN1bHQub25zdWNjZXNzKCk7CisgICAgfQorICAgIHJl
dHVybiBvbnN1Y2Nlc3M7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137164</attachid>
            <date>2012-04-13 15:23:42 -0700</date>
            <delta_ts>2012-04-17 11:26:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60746-20120413152341.patch</filename>
            <type>text/plain</type>
            <size>40080</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU5NDljYjBjODc2Zjhh
MWFhYzg3NDRhNmY3MTFmMGVjMzZjNzcxZC4uYWQxNDA5ZWY3OTdkYWNiNDM0ODQ2OTM1NGRjMWQ3
NzBkZjNiM2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA0LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREIgY2hv
b3NlcyB3cm9uZyByZWNvcmQgb24gUFJFVl9OT19EVVBMSUNBVEUgaW5kZXggY3Vyc29yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDc0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gaXRlcmF0aW5n
IGJhY2t3YXJkcyB3aXRoIFBSRVZfTk9fRFVQTElDQVRFLCBrZWVwIHdhbGtpbmcgcGFzdAorICAg
ICAgICB0aGUgJ3ByZXYnIGtleSB1bnRpbCBpdCBjaGFuZ2VzLCB0aGVuIHdhbGsgZm9yd2FyZCBv
bmUgdGltZS4gVGhpcworICAgICAgICBjb3ZlcnMgdGhlIG9iamVjdCBzdG9yZSBhbmQgaW5kZXgg
Y2FzZXMuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1w
cmV2LW5vLWR1cGxpY2F0ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA0LTEz
ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdIEFkZCBBUEkgZm9yIGNvbG9yIGNob29zZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggOGQ1NzAyMjYwNTdiYTkyM2ZkM2ViMWY0ZmYyZTNkMGY5NjRkNzBkYi4uZThiNmQ5
Yzc3ZTE0ODM2NjdiZmU5YmYyYmZjZGMxOTUwYTU4ZGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKQEAgLTEwMzksMjQgKzEwMzksNDggQEAgYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpjb250aW51
ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0YXRlIG5leHRTdGEKIHsKICAg
ICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3VycmVudEtleTsKIAorICAgIC8vIFdl
IG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxhc3QgJ2R1cGxpY2F0ZScga2V5IHdoZW4gdHJ5aW5nIHRv
CisgICAgLy8gYXZvaWQgZHVwbGljYXRlcyB3aGVuIHVzaW5nIFBSRVZfTk9fRFVQTElDQVRFLCBz
byB3ZSBrbm93IHdoZW4KKyAgICAvLyB0byB3YWxrIGZvcndhcmQuCisgICAgUmVmUHRyPElEQktl
eT4gcHJldkR1cGxpY2F0ZUtleTsKKworICAgIGJvb2wgZm9yd2FyZCA9IG1fY3Vyc29yT3B0aW9u
cy5mb3J3YXJkOworCiAgICAgZm9yICg7OykgewogICAgICAgICBpZiAobmV4dFN0YXRlID09IFNl
ZWspIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkKKyAgICAgICAg
ICAgIGlmIChmb3J3YXJkKQogICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPm5leHQoKTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5wcmV2KCk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbmV4dFN0YXRlID0gU2VlazsgLy8gZm9yIHN1YnNlcXVl
bnQgaXRlcmF0aW9ucwogCi0gICAgICAgIGlmICghbV9pdGVyYXRvci0+aXNWYWxpZCgpKQorICAg
ICAgICBpZiAoIW1faXRlcmF0b3ItPmlzVmFsaWQoKSkgeworICAgICAgICAgICAgaWYgKCFmb3J3
YXJkICYmIHByZXZEdXBsaWNhdGVLZXkuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBu
ZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNlIHdlIGhpdCB0aGUgZW5kIG9mCisgICAgICAgICAg
ICAgICAgLy8gdGhlIGRhdGEuCisgICAgICAgICAgICAgICAgZm9yd2FyZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogCisgICAgICAgIC8vIFRoZSBpdGVyYXRvciB3aWxsIGNvbnRh
aW4gdmFsdWVzIGRlbGV0ZWQgZHVyaW5nIGl0ZXJhdGlvbi4KICAgICAgICAgVmVjdG9yPGNoYXI+
IHRyYXNoOwogICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmdldChtX2l0ZXJhdG9yLT5rZXko
KSwgdHJhc2gpKQotICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKGlzUGFzdEJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAoIWZvcndh
cmQgJiYgcHJldkR1cGxpY2F0ZUtleS5nZXQoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIG5l
ZWQgdG8gd2FsayBmb3J3YXJkIGJlY2F1c2Ugbm93IHdlJ3JlIGJleW9uZCB0aGUKKyAgICAgICAg
ICAgICAgICAvLyBib3VuZHMgZGVmaW5lZCBieSB0aGUgY3Vyc29yLgorICAgICAgICAgICAgICAg
IGZvcndhcmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQogCi0gICAgICAgIGlmIChpc1Bhc3RCb3VuZHMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghaGF2ZUVudGVyZWRSYW5nZSgpKQogICAgICAg
ICAgICAgY29udGludWU7CkBAIC0xMDY3LDcgKzEwOTEsNyBAQCBib29sIEN1cnNvckltcGxDb21t
b246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXksIEl0ZXJhdG9yU3RhdGUgbmV4
dFN0YQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGtleSkgewotICAgICAg
ICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7CisgICAgICAgICAgICBpZiAoZm9y
d2FyZCkgewogICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRLZXktPmlzTGVzc1RoYW4oa2V5
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9IGVsc2UgewpA
QCAtMTA3Niw5ICsxMTAwLDMyIEBAIGJvb2wgQ3Vyc29ySW1wbENvbW1vbjo6Y29udGludWVGdW5j
dGlvbihjb25zdCBJREJLZXkqIGtleSwgSXRlcmF0b3JTdGF0ZSBuZXh0U3RhCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLnVuaXF1ZSAmJiBt
X2N1cnJlbnRLZXktPmlzRXF1YWwocHJldmlvdXNLZXkuZ2V0KCkpKQotICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMudW5pcXVlKSB7CisKKyAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnRLZXktPmlzRXF1YWwocHJldmlvdXNLZXkuZ2V0KCkpKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGFibGUgdG8gd2FsayBmb3J3YXJkIGFs
bCB0aGUgd2F5CisgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHByZXZpb3VzIGtleS4KKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIXByZXZEdXBsaWNhdGVLZXkuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZvcndhcmQp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXByZXZEdXBsaWNhdGVLZXkuZ2V0KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJldkR1cGxpY2F0ZUtleSA9IG1fY3VycmVudEtleTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byB3YWxrIGZvcndhcmQgYmVjYXVzZSB3ZSBoaXQgdGhlIGJvdW5kYXJ5
CisgICAgICAgICAgICAgICAgLy8gYmV0d2VlbiBrZXkgcmFuZ2VzLgorICAgICAgICAgICAgICAg
IGlmICghcHJldkR1cGxpY2F0ZUtleS0+aXNFcXVhbChtX2N1cnJlbnRLZXkuZ2V0KCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZvcndhcmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBwcmV2RHVw
bGljYXRlS2V5ID09IG1fY3VycmVudEtleSwgc28ga2VlcCB3YWxraW5nLgorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDNiZGYxOGUyZTMzOWM1OWE0N2FjYjJhOGFkODk2NmM5NjVmMDUxNzEu
LjI2NmM1MTMxZmVmYzMzZDM0NzYwOGMyMmQ4YTk5ODZjODM5YWQ2MDYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMSBAQAorMjAxMi0wNC0xMyAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSW5kZXhlZERCIGNob29zZXMgd3JvbmcgcmVjb3JkIG9uIFBSRVZfTk9fRFVQ
TElDQVRFIGluZGV4IGN1cnNvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjA3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0IGZvciBQUkVWX05PX0RVUExJQ0FURS4KKworICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVw
bGljYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3VjY2Vzcy52ZXJyZXEu
b25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3VjY2Vzcyk6
CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgorICAgICAgICAocG9wdWxhdGVTdG9yZSk6Cisg
ICAgICAgIChydW5BbGxUZXN0cyk6CisgICAgICAgICh3YWl0Rm9yKToKKyAgICAgICAgKGNvbXBs
ZXRlLmZpcmVDYWxsYmFjayk6CisgICAgICAgIChjb21wbGV0ZSk6CisgICAgICAgICh0ZXN0RmFy
UmFuZ2VDdXJzb3IpOgorICAgICAgICAobWFrZU9wZW5LZXlDdXJzb3IpOgorICAgICAgICAocnVu
VGVzdC50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3QudGVzdEZ1bmN0aW9uKToK
KyAgICAgICAgKHJ1blRlc3QpOgorCiAyMDEyLTA0LTEzICBBbnRvbiBNdWhpbiAgPGFudG9ubUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFyayB0ZXN0IGFzIGZsYWt5LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5v
LWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUyZjVjYmI2NGYzZTFjYTQ3YTdk
NDZmNTYwMzRiNWM4MDA4MDRiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyNjkgQEAKK1Rlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZy
b20gY3Vyc29ycy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9
IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhl
ZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCisKK29wZW5yZXEg
PSBpbmRleGVkREIub3BlbignY3Vyc29yLXJldmVyc2UtYnVnJykKK2RiID0gb3BlbnJlcS5yZXN1
bHQKK3ZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jl
cy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleCcsICdzb3J0ZWQnKQorCitwb3B1bGF0aW5nIHN0b3JlLi4uCit0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworc3RvcmUucHV0KHtzb3J0ZWQ6IDMsIHZhbHVl
OiAxMTF9LCAxKQorc3RvcmUucHV0KHtzb3J0ZWQ6IDIsIHZhbHVlOiAyMjJ9LCAyKQorc3RvcmUu
cHV0KHtzb3J0ZWQ6IDEsIHZhbHVlOiAzMzN9LCAzKQorc3RvcmUucHV0KHtzb3J0ZWQ6IDEwLCB2
YWx1ZTogNDQ0fSwgMTcpCitzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA1NTV9LCAxNikK
K3N0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6IDY2Nn0sIDE1KQordGVzdEZhclJhbmdlQ3Vy
c29yKCkKKworcnVuVGVzdChzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQo
NywgZmFsc2UpLCAyKS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFu
c2FjdGlvbi5SRUFEX09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOwor
aW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJl
cSA9IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIp
CisKK3J1blRlc3Qoc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRy
dWUpLCAyKS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlv
bi5SRUFEX09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXgg
PSBzdG9yZS5pbmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IHN0
b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikKKworcnVu
VGVzdChpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAy
KS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFE
X09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9y
ZS5pbmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9w
ZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIpCisKK3J1blRlc3Qo
aW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKS4uLgor
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkp
CitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRl
eCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5DdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikKKworcnVuVGVzdChpbmRleC5v
cGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKS4uLgordHJh
bnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitz
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRleCgn
aW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIpCisKK3J1blRlc3QoaW5kZXgu
b3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKS4uLgordHJh
bnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitz
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRleCgn
aW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikKK3Rlc3RCb3VuZGFyeUN1cnNv
cigpCisKK3J1blRlc3Qoc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMs
IGZhbHNlKSwgMikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2lu
ZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEg
PSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQor
CitydW5UZXN0KHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVl
KSwgMikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0g
c3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBzdG9y
ZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCisKK3J1blRl
c3QoaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMiku
Li4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9P
TkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUu
aW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorCitydW5UZXN0KGlu
ZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikuLi4KK3Ry
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQor
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgo
J2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuQ3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCisKK3J1blRlc3QoaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikuLi4KK3RyYW5z
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2lu
ZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorCitydW5UZXN0KGluZGV4Lm9w
ZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikuLi4KK3RyYW5z
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2lu
ZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCit0ZXN0Tm9EdXBsaWNhdGUoKQor
CitydW5UZXN0KHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFs
c2UpLCAzKS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlv
bi5SRUFEX09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXgg
PSBzdG9yZS5pbmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IHN0
b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorCity
dW5UZXN0KGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2Up
LCAzKS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBz
dG9yZS5pbmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4
Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorCitydW5U
ZXN0KGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2Up
LCAzKS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBz
dG9yZS5pbmRleCgnaW5kZXgnKTsKK09wZW5pbmcgY3Vyc29yLi4uCitzdG9yZVJlcSA9IGluZGV4
Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorCitF
WEVDVVRFIFRFU1RTLi4uLgorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdl
LnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
UEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5r
ZXkgPSAzCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZh
bHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDMzMworRE9ORQorCitUZXN0aW5nOiBzdG9y
ZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCitjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhw
ZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlz
IGV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gMzMz
CitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCg3LCBmYWxzZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNv
ci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDMKK1BB
U1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAg
Y3Vyc29yLnZhbHVlLnZhbHVlID0gMTExCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVj
dGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDEKK0RP
TkUKKworVGVzdGluZzogaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcs
IHRydWUpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5
IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1
cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNv
ci52YWx1ZS52YWx1ZSA9IDExMQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3RhdGlv
bi5leHBlY3RlZFByaW1hcnlLZXkKKyAgICAgY3Vyc29yLnByaW1hcnlLZXkgPSAxCitET05FCisK
K1Rlc3Rpbmc6IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBm
YWxzZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkg
aXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vy
c29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1
cnNvci5wcmltYXJ5S2V5ID0gMQorRE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuS2V5Q3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAg
ICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24u
ZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1cnNvci5wcmltYXJ5S2V5ID0gMQorRE9ORQorCitU
ZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2Up
LCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4
cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci52
YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1
ZS52YWx1ZSA9IDMzMworRE9ORQorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29y
LmtleSA9IDIKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVk
VmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gMjIyCitET05FCisKK1Rlc3Rpbmc6IGlu
ZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIpCitjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24u
ZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVl
IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0g
MTExCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFy
eUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDEKK0RPTkUKKworVGVzdGluZzogaW5kZXgu
b3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVj
dGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAyCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBl
eHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDIyMgor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFByaW1hcnlLZXkK
KyAgICAgY3Vyc29yLnByaW1hcnlLZXkgPSAyCitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5L
ZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIpCitjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0
ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgZXhw
ZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1cnNvci5wcmltYXJ5S2V5ID0gMQor
RE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91
bmQoMywgdHJ1ZSksIDIpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNv
ci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkKKyAgICAgY3Vyc29yLmtleSA9IDIKK1BB
U1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5Cisg
ICAgIGN1cnNvci5wcmltYXJ5S2V5ID0gMgorRE9ORQorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vy
c29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKK2N1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZEtl
eQorICAgICBjdXJzb3Iua2V5ID0gMTUKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIGV4cGVj
dGF0aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gNjY2CitQQVNT
IGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAg
ICBjdXJzb3IucHJpbWFyeUtleSA9IDE1CitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5DdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5
CisgICAgIGN1cnNvci5rZXkgPSAxMAorUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgZXhwZWN0
YXRpb24uZXhwZWN0ZWRWYWx1ZQorICAgICBjdXJzb3IudmFsdWUudmFsdWUgPSA2NjYKK1BBU1Mg
Y3Vyc29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAg
IGN1cnNvci5wcmltYXJ5S2V5ID0gMTUKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3BlbktleUN1
cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDE1LCBmYWxzZSksIDMpCitjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRL
ZXkKKyAgICAgY3Vyc29yLmtleSA9IDEwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVj
dGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDE1CitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByZXYtbm8tZHVwbGlj
YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1k
dXBsaWNhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmZhOTc5Y2JlNTcyOTZmMDg0NjY0YTUyMDRkMDQz
ZGMyZWI4NDMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLXByZXYt
bm8tZHVwbGljYXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2
LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYWZlZDlkMTAxZjQ5ZDFiMTUxMjI5YzRkYjFhOTQ4ZmMxMDAxNTQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5v
LWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxODMgQEAKK1Rlc3QgSW5kZXhlZERC
OiBpdGVyYXRpbmcgYmFja3dhcmRzIHRocm91Z2ggYW4gaW5kZXgsIHNraXBwaW5nIGR1cGxpY2F0
ZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5p
bmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERC
OworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQorSURCRGF0YWJhc2VFeGNlcHRpb24g
PSB3aW5kb3cuSURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93LndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uOworUEFTUyBJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIGlzIGZhbHNlCitJ
REJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURC
VHJhbnNhY3Rpb247CitQQVNTIElEQlRyYW5zYWN0aW9uID09IG51bGwgaXMgZmFsc2UKK0lEQkN1
cnNvciA9IHdpbmRvdy5JREJDdXJzb3IgfHwgd2luZG93LndlYmtpdElEQkN1cnNvcjsKK1BBU1Mg
SURCQ3Vyc29yID09IG51bGwgaXMgZmFsc2UKK0lEQktleVJhbmdlID0gd2luZG93LklEQktleVJh
bmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsKK1BBU1MgSURCS2V5UmFuZ2UgPT0gbnVs
bCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitvcGVuU3VjY2Vz
cygpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOworRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8g
dGhlIG9iamVjdCBzdG9yZS4KK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVE
YXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5
KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBv
YmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0
U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBv
YmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFb
aV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZh
bHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
b2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK3JlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9y
ZURhdGFbaV0ua2V5KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
W2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKK05vdyBjcmVhdGUgdGhlIGluZGV4
ZXMuCitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRh
W2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ld
Lm9wdGlvbnMpOworb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGlu
ZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Cit0ZXN0UHJldigpCit0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKK29iamVjdFN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK2tleUluZGV4ID0gODsKK3JlcXVlc3Qg
PSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3Iu
UFJFVik7CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlz
IDczCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzc0MCcKK1BBU1MgY3Vyc29y
LnZhbHVlLm5hbWUgaXMgJ1NhbScKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA3MworUEFT
UyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDExMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRl
eC0tOworICA9PiA3CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iu
a2V5IGlzIDczCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczNCcKK1BBU1Mg
Y3Vyc29yLnZhbHVlLm5hbWUgaXMgJ1JvbicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA3
MworUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDE4MAorY3Vyc29yLmNvbnRpbnVlKCk7Citr
ZXlJbmRleC0tOworICA9PiA2CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBj
dXJzb3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczOScK
K1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0plZicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdo
dCBpcyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDEyMAorY3Vyc29yLmNvbnRpbnVl
KCk7CitrZXlJbmRleC0tOworICA9PiA1CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Owor
UEFTUyBjdXJzb3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMt
NzczOCcKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0xlbycKK1BBU1MgY3Vyc29yLnZhbHVl
LmhlaWdodCBpcyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDE4MAorY3Vyc29yLmNv
bnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiA0CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcy
MzctMjMtNzczNycKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ1BhdCcKK1BBU1MgY3Vyc29y
LnZhbHVlLmhlaWdodCBpcyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDEwMAorY3Vy
c29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiAzCitjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5
IGlzICcyMzctMjMtNzczNicKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0pvZScKK1BBU1Mg
Y3Vyc29yLnZhbHVlLmhlaWdodCBpcyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDE1
MAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiAyCitjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDYwCitQQVNTIGN1cnNvci5wcmlt
YXJ5S2V5IGlzICcyMzctMjMtNzczMicKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0JvYicK
K1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA2MAorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0
IGlzIDEyMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiAxCitjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDU4CitQQVNTIGN1cnNv
ci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczNScKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMg
J1N1ZScKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1OAorUEFTUyBjdXJzb3IudmFsdWUu
d2VpZ2h0IGlzIDEzMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9PiAwCitj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworUEFTUyBjdXJzb3Iua2V5IGlzIDUyCitQQVNT
IGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczMycKK1BBU1MgY3Vyc29yLnZhbHVlLm5h
bWUgaXMgJ0FubicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1MgorUEFTUyBjdXJzb3Iu
dmFsdWUud2VpZ2h0IGlzIDExMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworICA9
PiAtMQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK05vIGN1cnNvcjogbnVsbAorUEFT
UyBrZXlJbmRleCBpcyAtMQordGVzdFByZXZOb0R1cGxpY2F0ZSgpCitvYmplY3RTdG9yZSA9IGRi
LnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KTsKK2tleUluZGV4ID0gODsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jyku
b3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOworY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKK2tleUluZGV4IC09IDEKKyAgPT4gRW50ZXJpbmcgd2l0aCBr
ZXlJbmRleCA9IDcKK1BBU1MgY3Vyc29yLmtleSBpcyA3MworUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyAnMjM3LTIzLTc3MzQnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdSb24nCitQQVNT
IGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNzMKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAx
ODAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CitrZXlJbmRleCAtPSAzOworICA9PiBFbnRlcmluZyB3aXRoIGtleUluZGV4ID0g
MworUEFTUyBjdXJzb3Iua2V5IGlzIDY1CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzct
MjMtNzczNicKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ0pvZScKK1BBU1MgY3Vyc29yLnZh
bHVlLmhlaWdodCBpcyA2NQorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDE1MAorY3Vyc29y
LmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
KyAgPT4gRW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9IDIKK1BBU1MgY3Vyc29yLmtleSBpcyA2MAor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzInCitQQVNTIGN1cnNvci52YWx1
ZS5uYW1lIGlzICdCb2InCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjAKK1BBU1MgY3Vy
c29yLnZhbHVlLndlaWdodCBpcyAxMjAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgID0+IEVudGVyaW5nIHdpdGgga2V5SW5k
ZXggPSAxCitQQVNTIGN1cnNvci5rZXkgaXMgNTgKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMg
JzIzNy0yMy03NzM1JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnU3VlJworUEFTUyBjdXJz
b3IudmFsdWUuaGVpZ2h0IGlzIDU4CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTMwCitj
dXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OworICA9PiBFbnRlcmluZyB3aXRoIGtleUluZGV4ID0gMAorUEFTUyBjdXJzb3Iua2V5IGlz
IDUyCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczMycKK1BBU1MgY3Vyc29y
LnZhbHVlLm5hbWUgaXMgJ0FubicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1MgorUEFT
UyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDExMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRl
eC0tOworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgPT4gRW50ZXJpbmcgd2l0aCBr
ZXlJbmRleCA9IC0xCitObyBjdXJzb3I6IG51bGwKK1BBU1Mga2V5SW5kZXggaXMgLTEKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVw
bGljYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4
LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE3Y2FhZGY4ODYwMzZmODMwMzVk
ZDY0NTJiNzY1NjQwOTNmNDI2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbApAQCAtMCww
ICsxLDE5MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3RfaW5kZXhlcy5odG1sP2ZvcmNlPTEKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAg
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0t
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IGl0ZXJhdGluZyBiYWNrd2FyZHMgdGhyb3Vn
aCBhbiBpbmRleCwgc2tpcHBpbmcgZHVwbGljYXRlcyIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWRE
QiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cu
bW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7
CisgICAgSURCRGF0YWJhc2VFeGNlcHRpb24gPSBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2Vw
dGlvbiA9IHdpbmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0
YWJhc2VFeGNlcHRpb247Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRp
b24gPT0gbnVsbCIpOworICAgIElEQlRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiSURCVHJhbnNh
Y3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0
aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKKyAg
ICBJREJDdXJzb3IgPSBldmFsQW5kTG9nKCJJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8
IHdpbmRvdy53ZWJraXRJREJDdXJzb3I7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCQ3Vyc29y
ID09IG51bGwiKTsKKyAgICBJREJLZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlID0g
d2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJJREJLZXlSYW5nZSA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIG9iamVjdFN0b3JlTmFt
ZSA9ICJQZW9wbGUiOworCisgICAgb2JqZWN0U3RvcmVEYXRhID0gWworICAgICAgICB7IGtleTog
IjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDog
MTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJB
bm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIz
LTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9
LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhl
aWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIs
IHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2
NSwgd2VpZ2h0OiAxMDAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM4IiwgdmFsdWU6
IHsgbmFtZTogIkxlbyIsIGhlaWdodDogNjUsIHdlaWdodDogMTgwIH0gfSwKKyAgICAgICAgeyBr
ZXk6ICIyMzctMjMtNzczOSIsIHZhbHVlOiB7IG5hbWU6ICJKZWYiLCBoZWlnaHQ6IDY1LCB3ZWln
aHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3NDAiLCB2YWx1ZTogeyBuYW1l
OiAiU2FtIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxMTAgfSB9LAorICAgIF07CisKKyAgICBpbmRl
eERhdGEgPSBbCisgICAgICAgIHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIsIG9wdGlv
bnM6IHsgdW5pcXVlOiB0cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiaGVpZ2h0Iiwga2V5UGF0
aDogImhlaWdodCIsIG9wdGlvbnM6IHsgfSB9LAorICAgICAgICB7IG5hbWU6ICJ3ZWlnaHQiLCBr
ZXlQYXRoOiAid2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQorICAgIF07CisK
KyAgICBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0ID0gWworICAgICAgICB7IGtleTogIjIzNy0y
My03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0g
fSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBo
ZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIi
LCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAg
ICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDog
NjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVl
OiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAgICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzgiLCB2YWx1ZTogeyBuYW1lOiAiTGVvIiwgaGVpZ2h0OiA2NSwgd2Vp
Z2h0OiAxODAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM5IiwgdmFsdWU6IHsgbmFt
ZTogIkplZiIsIGhlaWdodDogNjUsIHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIy
MzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4
MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3NDAiLCB2YWx1ZTogeyBuYW1lOiAiU2Ft
IiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxMTAgfSB9LAorICAgIF07CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworCisgICAgZGVidWcoIkZpcnN0LCBhZGQg
YWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuIik7CisgICAgYWRkZWREYXRhID0gMDsK
KyAgICBmb3IgKGkgaW4gb2JqZWN0U3RvcmVEYXRhKSB7CisgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUs
IG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOyIpOworICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGlmICgrK2FkZGVkRGF0YSA9PSBvYmplY3RTdG9yZURhdGEubGVu
Z3RoKSB7CisgICAgICAgICAgY3JlYXRlSW5kZXhlcygpOworICAgICAgICB9CisgICAgICB9Cisg
ICAgfQorfQorCitmdW5jdGlvbiBjcmVhdGVJbmRleGVzKCkKK3sKKyAgICBkZWJ1ZygiTm93IGNy
ZWF0ZSB0aGUgaW5kZXhlcy4iKTsKKyAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7CisgICAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5k
ZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsiKTsKKyAgICB9CisKKwor
ICAgIHRlc3RQcmV2KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQcmV2KCkgeworICAgIGRlYnVnKCJ0
ZXN0UHJldigpIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKG9iamVjdFN0b3JlTmFtZSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBr
ZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gODsiKTsKKyAgICAvLyBmaXJzdCB0cnkg
d2l0aCBqdXN0IFBSRVYKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKTsi
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChj
dXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIiIgKyBvYmplY3RT
dG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0
U29ydFtrZXlJbmRleF0ua2V5ICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUubmFtZSIsICInIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUgKyAiJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWln
aHQiLCAiIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdo
dCk7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAiIiArIG9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgID0+ICIg
KyBrZXlJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkZWJ1
ZygiTm8gY3Vyc29yOiAiICsgY3Vyc29yKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICItMSIpOworICAgICAgICB9CisgICAgfTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVz
dFByZXZOb0R1cGxpY2F0ZTsKK30KKworZnVuY3Rpb24gdGVzdFByZXZOb0R1cGxpY2F0ZSgpIHsK
KyAgICBkZWJ1ZygidGVzdFByZXZOb0R1cGxpY2F0ZSgpIik7CisgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSku
b2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gODsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5Q
UkVWX05PX0RVUExJQ0FURSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsK
KyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsiKTsKKyAgICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA4KSB7CisgICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygia2V5SW5kZXggLT0gMSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGtleUluZGV4ID09IDYpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCAtPSAzOyIpOworICAgICAgICAgICAgfQorICAgICAgICBkZWJ1ZygiICA9PiBFbnRlcmluZyB3
aXRoIGtleUluZGV4ID0gIiArIGtleUluZGV4KTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiIiArIG9iamVjdFN0b3JlRGF0YUhlaWdo
dFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCk7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS5rZXkgKyAiJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwg
IiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSArICIn
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICIiICsgb2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0KTsKKyAgICAgICAg
ICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICIiICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dFtrZXlJbmRleF0udmFsdWUud2VpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleC0tOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZGVidWcoIk5vIGN1cnNvcjogIiArIGN1cnNvcik7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5
SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0
ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJl
di1uby1kdXBsaWNhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNmMTQ5NTc1YzRhOGU0MGFjODdiMzk4YTI1
MWNhYzBmM2NmMGFhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUuanMKQEAgLTAsMCArMSwy
MDMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBv
cmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcHJlcGFyZURhdGFiYXNlKCk7
Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXJldmVyc2UtYnVn
JykiKTsKKyAgICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJk
YiA9IG9wZW5yZXEucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInZlcnJlcSA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOworICAgICAgICB2ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgICAgICB2ZXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgICAgICAgICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnc29ydGVkJyki
KTsKKyAgICAgICAgICAgIHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7
CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJyk7Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAzLCB2YWx1ZTogMTExfSwgMSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMiwgdmFsdWU6IDIyMn0sIDIpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KHtzb3J0ZWQ6IDEsIHZhbHVlOiAzMzN9LCAzKSIpOworICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6IDQ0NH0sIDE3KSIpOwor
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6IDU1NX0sIDE2KSIp
OworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6IDY2Nn0sIDE1
KSIpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBydW5BbGxUZXN0czsKK30KKworCitmdW5jdGlv
biBydW5BbGxUZXN0cygpIHsKKyAgICB3YWl0Rm9yKAorICAgICAgICB0ZXN0RmFyUmFuZ2VDdXJz
b3IoKSwKKyAgICAgICAgdGVzdEJvdW5kYXJ5Q3Vyc29yKCksCisgICAgICAgIHRlc3ROb0R1cGxp
Y2F0ZSgpCisgICAgICAgICkub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OworCisgICAgLy8gaGVs
cCB1cyBkaXN0aW5ndWlzaCB0aGUgcXVldWluZyBvZiB0aGUgdGVzdHMgZnJvbSB0aGUgZXhlY3V0
aW9uCisgICAgZGVidWcoIlxuRVhFQ1VURSBURVNUUy4uLi4iKTsKK30KKworCisKK2Z1bmN0aW9u
IHRlc3RGYXJSYW5nZUN1cnNvcigpCit7CisgICAgLy8gdXBwZXIgYm91bmQgaXMgd2VsbCBvdXQg
b2YgcmFuZ2UsIHJlc3VsdHMgYWx3YXlzIHRoZSBzYW1lLAorICAgIC8vIHdoZXRoZXIgb3BlbiBv
ciBjbG9zZWQKKyAgICBkZWJ1ZygidGVzdEZhclJhbmdlQ3Vyc29yKCkiKTsKKyAgICByZXR1cm4g
d2FpdEZvcigKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUiLCA3LCBmYWxz
ZSwgSURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMzMz
LCBleHBlY3RlZEtleTogM30pLAorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9y
ZSIsIDcsIHRydWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVk
VmFsdWU6IDMzMywgZXhwZWN0ZWRLZXk6IDN9KSwKKworICAgICAgICAvLyBoZXJlICc3JyByZWZl
cnMgdG8gdGhlICdzb3J0ZWQnIHZhbHVlCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3Io
ImluZGV4IiwgNywgZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4
cGVjdGVkVmFsdWU6IDExMSwgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVkUHJpbWFyeUtleTogMX0p
LAorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJpbmRleCIsIDcsIHRydWUsIElEQkN1
cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDExMSwgZXhwZWN0
ZWRLZXk6IDMsIGV4cGVjdGVkUHJpbWFyeUtleTogMX0pLAorCisgICAgICAgIC8vIGhlcmUgJzcn
IHJlZmVycyB0byB0aGUgc29ydGVkIHZhbHVlCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5LZXlD
dXJzb3IoImluZGV4IiwgNywgZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAg
ICB7IGV4cGVjdGVkS2V5OiAzLCBleHBlY3RlZFByaW1hcnlLZXk6IDF9KSwKKyAgICAgICAgcnVu
VGVzdChtYWtlT3BlbktleUN1cnNvcigiaW5kZXgiLCA3LCB0cnVlLCBJREJDdXJzb3IuUFJFViks
CisgICAgICAgICAgICAgICAgeyBleHBlY3RlZEtleTogMywgZXhwZWN0ZWRQcmltYXJ5S2V5OiAx
fSkKKyAgICAgICAgKTsKK30KKworZnVuY3Rpb24gdGVzdEJvdW5kYXJ5Q3Vyc29yKCkKK3sKKyAg
ICBkZWJ1ZygidGVzdEJvdW5kYXJ5Q3Vyc29yKCkiKTsKKyAgICByZXR1cm4gd2FpdEZvcigKKyAg
ICAgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUiLCAzLCBmYWxzZSwgSURCQ3Vyc29y
LlBSRVYpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMzMzLCBleHBlY3RlZEtl
eTogM30pLAorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDMsIHRydWUs
IElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDIyMiwg
ZXhwZWN0ZWRLZXk6IDJ9KSwKKworICAgICAgICAvLyBieSBpbmRleCBzb3J0IG9yZGVyLCB3ZSBz
aG91bGQgcmV0dXJuIHRoZW0gaW4gYSBkaWZmZXJlbnQgb3JkZXIKKyAgICAgICAgcnVuVGVzdCht
YWtlT3BlbkN1cnNvcigiaW5kZXgiLCAzLCBmYWxzZSwgSURCQ3Vyc29yLlBSRVYpLAorICAgICAg
ICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMTExLCBleHBlY3RlZEtleTogMywgZXhwZWN0ZWRQ
cmltYXJ5S2V5OiAxfSksCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoImluZGV4Iiwg
MywgdHJ1ZSwgSURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1
ZTogMjIyLCBleHBlY3RlZEtleTogMiwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAyfSksCisKKyAgICAg
ICAgLy8gbm93IHRoZSB2YWx1ZSBkb2Vzbid0IG1hdHRlciwganVzdCB0aGUgcHJpbWFyeSBrZXkK
KyAgICAgICAgcnVuVGVzdChtYWtlT3BlbktleUN1cnNvcigiaW5kZXgiLCAzLCBmYWxzZSwgSURC
Q3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVk
UHJpbWFyeUtleTogMX0pLAorICAgICAgICBydW5UZXN0KG1ha2VPcGVuS2V5Q3Vyc29yKCJpbmRl
eCIsIDMsIHRydWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVk
S2V5OiAyLCBleHBlY3RlZFByaW1hcnlLZXk6IDJ9KQorICAgICAgICApOworfQorCitmdW5jdGlv
biB0ZXN0Tm9EdXBsaWNhdGUoKQoreworICAgIGRlYnVnKCJ0ZXN0Tm9EdXBsaWNhdGUoKSIpOwor
ICAgIC8vIHRoZXJlIGFyZSAzIHZhbHVlcywgYnV0IHdlIHNob3VsZCByZXR1cm4gdGhlIGZpcnN0
IG9uZQorICAgIHJldHVybiB3YWl0Rm9yKAorICAgICAgICAvLyBQUkVWX05PX0RVUExJQ0FURSBk
b2Vzbid0IHJlYWxseSBhZmZlY3Qgbm9uLWluZGV4ZWQKKyAgICAgICAgLy8gY3Vyc29ycywgYnV0
IHdlIHNob3VsZCBtYWtlIHN1cmUgd2UgZ2V0IHRoZSByaWdodCBvbmUKKyAgICAgICAgLy8gYW55
d2F5CisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoInN0b3JlIiwgMTUsIGZhbHNlLCBJ
REJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRW
YWx1ZTogNjY2LCBleHBlY3RlZEtleTogMTUsIGV4cGVjdGVkUHJpbWFyeUtleTogMTUgfSksCisK
KyAgICAgICAgLy8gc3RpbGwgdGhyZWUgdmFsdWVzLCBidXQgbm93IHRoZSBpbmRleCBzYXlzIHdl
IHNob3VsZCByZXR1cm4gdGhlCisgICAgICAgIC8vIHNlY29uZCBvbmUKKyAgICAgICAgcnVuVGVz
dChtYWtlT3BlbkN1cnNvcigiaW5kZXgiLCAxNSwgZmFsc2UsIElEQkN1cnNvci5QUkVWX05PX0RV
UExJQ0FURSksCisgICAgICAgICAgICAgICAgeyBleHBlY3RlZFZhbHVlOiA2NjYsIGV4cGVjdGVk
S2V5OiAxMCwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAxNX0pLAorCisgICAgICAgIC8vIHNhbWUgYmVo
YXZpb3IgYXMgYWJvdmUsIHdpdGhvdXQgYSB2YWx1ZQorICAgICAgICBydW5UZXN0KG1ha2VPcGVu
S2V5Q3Vyc29yKCJpbmRleCIsIDE1LCBmYWxzZSwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRF
KSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkS2V5OiAxMCwgZXhwZWN0ZWRQcmltYXJ5S2V5
OiAxNX0pCisgICAgICAgICk7Cit9CisKKworZnVuY3Rpb24gbWFrZU9wZW5DdXJzb3Iob2JqLCB1
cHBlckJvdW5kLCBvcGVuLCBkaXJlY3Rpb24pCit7CisgICAgcmV0dXJuIG9iaiArICIub3BlbkN1
cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKCIgKyB1cHBlckJvdW5kICsgIiwgIiArCisgICAg
ICAgIG9wZW4gKyAiKSwgIiArCisgICAgICAgICAgICBkaXJlY3Rpb24gKyAiKSI7Cit9CisKK2Z1
bmN0aW9uIG1ha2VPcGVuS2V5Q3Vyc29yKG9iaiwgdXBwZXJCb3VuZCwgb3BlbiwgZGlyZWN0aW9u
KQoreworICAgIHJldHVybiBvYmogKyAiLm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJC
b3VuZCgiICsgdXBwZXJCb3VuZCArICIsICIgKworICAgICAgICBvcGVuICsgIiksICIgKworICAg
ICAgICAgICAgZGlyZWN0aW9uICsgIikiOworfQorCitmdW5jdGlvbiBydW5UZXN0KG9wZW5DdXJz
b3IsIGV4cCkKK3sKKyAgICBkZWJ1ZygiXG5ydW5UZXN0KCIgKyBvcGVuQ3Vyc29yICsgIi4uLiIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9PTkxZKSIpOworCisgICAgLy8gZXhwb3NlIHRoZXNlIGZvciBjb2RlIGlu
IG9wZW5DdXJzb3IKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZScpOyIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7
Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJET05FIik7CisgICAgfTsKKworICAg
IHZhciByZXN1bHQgPSB7fTsKKworICAgIHZhciB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICAvLyBleHBvc2UgZm9yIGV2YWxBbmRMb2cKKyAgICAgICAgZXhwZWN0YXRp
b24gPSBleHA7CisKKyAgICAgICAgZGVidWcoIlxuVGVzdGluZzogIiArIG9wZW5DdXJzb3IpOwor
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
ICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIm51bGwg
Y3Vyc29yIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJleHBlY3RhdGlvbi5leHBlY3RlZEtleSIpOworICAgICAgICBk
ZWJ1ZygiICAgICBjdXJzb3Iua2V5ID0gIiArIGN1cnNvci5rZXkpOworICAgICAgICBpZiAoInZh
bHVlIiBpbiBjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudmFs
dWUiLCAiZXhwZWN0YXRpb24uZXhwZWN0ZWRWYWx1ZSIpOworICAgICAgICAgICAgZGVidWcoIiAg
ICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gIiArIGN1cnNvci52YWx1ZS52YWx1ZSk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSBpZiAoImV4cGVjdGVkVmFsdWUiIGluIGV4cGVjdGF0aW9uKQorICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiVGVzdCBicm9rZW46IHNob3VsZG4ndCBoYXZlIGV4cGVjdGVk
VmFsdWUiKTsKKworICAgICAgICBpZiAoImV4cGVjdGVkUHJpbWFyeUtleSIgaW4gZXhwZWN0YXRp
b24pIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJleHBlY3Rh
dGlvbi5leHBlY3RlZFByaW1hcnlLZXkiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgICAgIGN1cnNv
ci5wcmltYXJ5S2V5ID0gIiArIGN1cnNvci5wcmltYXJ5S2V5KTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgICAgICByZXN1bHQub25zdWNj
ZXNzKCk7CisgICAgfTsKKworICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvci4uLiIpOworICAgIHN0
b3JlUmVxID0gZXZhbEFuZExvZygic3RvcmVSZXEgPSAiICsgb3BlbkN1cnNvcik7CisgICAgc3Rv
cmVSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IGU0YjhkM2YwYzRj
YThhMDljMjFkZWM3NDEwYjdiZTdiNWRkMWFkZWYuLjc2ZjJiZmZhYWFjY2NlMzU2MTRlNWM2MjEx
NjU5ZmVhODczMDcwN2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3NoYXJlZC5qcwpAQCAtMTEyLDMgKzExMiw0NyBAQCBmdW5jdGlvbiBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpCiAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKGRiLm9iamVj
dFN0b3JlTmFtZXMuaXRlbSgwKSk7CiAgICAgZGVidWcoIkRlbGV0ZWQgYWxsIG9iamVjdCBzdG9y
ZXMuIik7CiB9CisKKy8vIHRha2UgYW4gdW5zcGVjaWZpZWQgbnVtYmVyIG9mIGNhbGxiYWNrLWxp
a2Ugb2JqZWN0cywgd2FpdCBmb3IgZWFjaAorLy8gb25lLCBhbmQgZmlyZSBhbiBvbnN1Y2Nlc3Mg
ZXZlbnQgd2hlbiBhbGwgb2YgdGhlbSBjb21wbGV0ZS4gSWYgYW55CisvLyBvZiB0aGUgY2FsbGJh
Y2sgb2JqZWN0cyB0aHJvdyBhbiBlcnJvciBvciBhYm9ydCwgZmlyZSB0aGUKKy8vIGFwcHJvcHJp
YXRlIG9uZXJyb3Ivb25hYm9ydCBpbW1lZGlhdGVseS4KK2Z1bmN0aW9uIHdhaXRGb3IoKQorewor
CisgICAgdmFyIHByb2dyZXNzID0gW107ICAgICAgICAgIC8vIHdoZW4gYWxsIG9mIHRoZXNlIGFy
ZSB0cnVlLCB3ZSdyZSBkb25lCisgICAgdmFyIGV2ZW50UmVzdWx0ID0ge307CisKKyAgICBmdW5j
dGlvbiBvbmVycm9yKGUpCisgICAgeworICAgICAgICBldmVudFJlc3VsdC5vbmVycm9yKGUpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIG9uYWJvcnQoZSkKKyAgICB7CisgICAgICAgIGV2ZW50UmVz
dWx0Lm9uYWJvcnQoZSk7CisgICAgfQorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGV2ZW50ID0gYXJndW1lbnRzW2ldOworICAg
ICAgICBwcm9ncmVzcy5wdXNoKGZhbHNlKTsKKyAgICAgICAgZXZlbnQub25zdWNjZXNzID0gd2Fp
dEZvcl9vbnN1Y2Nlc3MoaSwgcHJvZ3Jlc3MsIGV2ZW50UmVzdWx0KTsKKyAgICAgICAgZXZlbnQu
b25hYm9ydCA9IG9uYWJvcnQ7CisgICAgICAgIGV2ZW50Lm9uZXJyb3IgPSBvbmVycm9yOworICAg
IH0KKyAgICByZXR1cm4gZXZlbnRSZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3Jfb25zdWNj
ZXNzKGluZGV4LCBzdWNjZXNzZXMsIGV2ZW50UmVzdWx0KQoreworICAgIGZ1bmN0aW9uIG9uc3Vj
Y2VzcygpCisgICAgeworICAgICAgICBzdWNjZXNzZXNbaW5kZXhdID0gdHJ1ZTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzdWNjZXNzZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAg
IGlmICghc3VjY2Vzc2VzW2ldKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBldmVudFJlc3VsdC5vbnN1Y2Nlc3MoKTsKKyAgICB9CisgICAgcmV0dXJuIG9uc3Vj
Y2VzczsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137566</attachid>
            <date>2012-04-17 11:26:42 -0700</date>
            <delta_ts>2012-04-17 14:35:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60746-20120417112641.patch</filename>
            <type>text/plain</type>
            <size>40192</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIyZTIzNWQ1MTcyNDU2
YTE5YWQzZDljN2YwYmRkMTBlMmJmMmJhMy4uN2JmNDIyMDZiOTA1NTI5NjY3YjMzYjJjMWRjZDM4
ZDk5YmUxNjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA0LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREIgY2hv
b3NlcyB3cm9uZyByZWNvcmQgb24gUFJFVl9OT19EVVBMSUNBVEUgaW5kZXggY3Vyc29yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDc0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gaXRlcmF0aW5n
IGJhY2t3YXJkcyB3aXRoIFBSRVZfTk9fRFVQTElDQVRFLCBrZWVwIHdhbGtpbmcgcGFzdAorICAg
ICAgICB0aGUgJ3ByZXYnIGtleSB1bnRpbCBpdCBjaGFuZ2VzLCB0aGVuIHdhbGsgZm9yd2FyZCBv
bmUgdGltZS4gVGhpcworICAgICAgICBjb3ZlcnMgdGhlIG9iamVjdCBzdG9yZSBhbmQgaW5kZXgg
Y2FzZXMuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1w
cmV2LW5vLWR1cGxpY2F0ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA0LTE2
ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGluc2Vy
dGVkSW50b0RvY3VtZW50IGFuZCBpbnNlcnRlZEludG9UcmVlIHNob3VsZCBiZSB1bml0aWZlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggOGQ1NzAyMjYwNTdiYTkyM2ZkM2ViMWY0ZmYyZTNk
MGY5NjRkNzBkYi4uNmE3ZWQyODRiYWVkZGRlYWZjZmFiNzgxYTE0ZGYxMDlmOTgyOWVmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEwMzksMjQgKzEwMzksNDggQEAgYm9vbCBDdXJzb3JJ
bXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0
YXRlIG5leHRTdGEKIHsKICAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3VycmVu
dEtleTsKIAorICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdpdGggUFJFVl9OT19EVVBMSUNBVEUsIHNw
ZWMgcmVxdWlyZXMgdGhhdCB0aGUKKyAgICAvLyB2YWx1ZSB3ZSB5aWVsZCBmb3IgZWFjaCBrZXkg
aXMgdGhlIGZpcnN0IGR1cGxpY2F0ZSBpbiBmb3J3YXJkcworICAgIC8vIG9yZGVyLgorICAgIFJl
ZlB0cjxJREJLZXk+IGxhc3REdXBsaWNhdGVLZXk7CisKKyAgICBib29sIGZvcndhcmQgPSBtX2N1
cnNvck9wdGlvbnMuZm9yd2FyZDsKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgaWYgKG5leHRT
dGF0ZSA9PSBTZWVrKSB7Ci0gICAgICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQp
CisgICAgICAgICAgICBpZiAoZm9yd2FyZCkKICAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5u
ZXh0KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+cHJl
digpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5leHRTdGF0ZSA9IFNlZWs7IC8vIGZv
ciBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMKIAotICAgICAgICBpZiAoIW1faXRlcmF0b3ItPmlzVmFs
aWQoKSkKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAg
IGlmICghZm9yd2FyZCAmJiBsYXN0RHVwbGljYXRlS2V5LmdldCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byB3YWxrIGZvcndhcmQgYmVjYXVzZSB3ZSBoaXQgdGhlIGVuZCBvZgor
ICAgICAgICAgICAgICAgIC8vIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIGZvcndhcmQgPSB0
cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAorICAgICAgICAvLyBUaGUgaXRlcmF0b3Ig
d2lsbCBjb250YWluIHZhbHVlcyBkZWxldGVkIGR1cmluZyBpdGVyYXRpb24uCiAgICAgICAgIFZl
Y3RvcjxjaGFyPiB0cmFzaDsKICAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5nZXQobV9pdGVy
YXRvci0+a2V5KCksIHRyYXNoKSkKLSAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChpc1Bhc3RCb3VuZHMoKSkgeworICAgICAgICAgICAg
aWYgKCFmb3J3YXJkICYmIGxhc3REdXBsaWNhdGVLZXkuZ2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNlIG5vdyB3ZSdyZSBiZXlvbmQgdGhl
CisgICAgICAgICAgICAgICAgLy8gYm91bmRzIGRlZmluZWQgYnkgdGhlIGN1cnNvci4KKyAgICAg
ICAgICAgICAgICBmb3J3YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNQYXN0Qm91bmRzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWhhdmVFbnRlcmVkUmFuZ2Uo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA2Nyw3ICsxMDkxLDcgQEAgYm9vbCBDdXJz
b3JJbXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRv
clN0YXRlIG5leHRTdGEKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChrZXkp
IHsKLSAgICAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgeworICAgICAgICAg
ICAgaWYgKGZvcndhcmQpIHsKICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50S2V5LT5pc0xl
c3NUaGFuKGtleSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTEwNzYsMTIgKzExMDAsMzUgQEAgYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpj
b250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0YXRlIG5leHRTdGEK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMu
dW5pcXVlICYmIG1fY3VycmVudEtleS0+aXNFcXVhbChwcmV2aW91c0tleS5nZXQoKSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy51bmlxdWUpIHsK
KworICAgICAgICAgICAgaWYgKG1fY3VycmVudEtleS0+aXNFcXVhbChwcmV2aW91c0tleS5nZXQo
KSkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYWJsZSB0byB3YWxr
IGZvcndhcmQgYWxsIHRoZSB3YXkKKyAgICAgICAgICAgICAgICAvLyB0byB0aGUgcHJldmlvdXMg
a2V5LgorICAgICAgICAgICAgICAgIEFTU0VSVCghbGFzdER1cGxpY2F0ZUtleS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICghZm9yd2FyZCkgeworICAgICAgICAgICAgICAgIGlmICghbGFzdER1cGxpY2F0ZUtleS5nZXQo
KSkgeworICAgICAgICAgICAgICAgICAgICBsYXN0RHVwbGljYXRlS2V5ID0gbV9jdXJyZW50S2V5
OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNlIHdlIGhpdCB0
aGUgYm91bmRhcnkKKyAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIGtleSByYW5nZXMuCisgICAg
ICAgICAgICAgICAgaWYgKCFsYXN0RHVwbGljYXRlS2V5LT5pc0VxdWFsKG1fY3VycmVudEtleS5n
ZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIEFTU0VSVCghbGFzdER1cGxpY2F0ZUtleS5nZXQoKSB8fCAoZm9yd2FyZCAmJiBs
YXN0RHVwbGljYXRlS2V5LT5pc0VxdWFsKG1fY3VycmVudEtleS5nZXQoKSkpKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY3MmE4MTU0NTdhZmI2ODg4MjE5YWViYWIyOTU3MzMyNWYy
YTgyZDguLjA1YWJhNDU2MzE0YWI1MmI5ZGVlZmM1ZTExMmUyODdlMzljNGVmNjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMSBAQAorMjAxMi0wNC0xMyAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCIGNob29zZXMgd3JvbmcgcmVjb3JkIG9uIFBSRVZf
Tk9fRFVQTElDQVRFIGluZGV4IGN1cnNvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjA3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0IGZvciBQUkVWX05PX0RVUExJQ0FURS4KKworICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYt
bm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRl
LmpzOiBBZGRlZC4KKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3VjY2Vzcy52
ZXJyZXEub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgorICAgICAgICAocG9wdWxhdGVTdG9y
ZSk6CisgICAgICAgIChydW5BbGxUZXN0cyk6CisgICAgICAgICh3YWl0Rm9yKToKKyAgICAgICAg
KGNvbXBsZXRlLmZpcmVDYWxsYmFjayk6CisgICAgICAgIChjb21wbGV0ZSk6CisgICAgICAgICh0
ZXN0RmFyUmFuZ2VDdXJzb3IpOgorICAgICAgICAobWFrZU9wZW5LZXlDdXJzb3IpOgorICAgICAg
ICAocnVuVGVzdC50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3QudGVzdEZ1bmN0
aW9uKToKKyAgICAgICAgKHJ1blRlc3QpOgorCiAyMDEyLTA0LTE2ICBEYXZpZCBCYXJyICA8ZGF2
aWRiYXJyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTdGFjayBvdmVyZmxvdyBpbiBDU1MgcGFy
c2VyIGNhdXNlZCBieSByZWN1cnNpdmUgc3R5bGVzaGVldCBpbXBvcnQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1k
dXBsaWNhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MmY1Y2JiNjRmM2UxY2E0N2E3ZDQ2
ZjU2MDM0YjVjODAwODA0YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjY5IEBACitUZXN0IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9t
IGN1cnNvcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBz
ZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWRE
QiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworCitvcGVucmVxID0g
aW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1ZycpCitkYiA9IG9wZW5yZXEucmVzdWx0
Cit2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMu
CitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpCitzdG9yZS5jcmVhdGVJbmRl
eCgnaW5kZXgnLCAnc29ydGVkJykKKworcG9wdWxhdGluZyBzdG9yZS4uLgordHJhbnMgPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK3N0b3JlLnB1dCh7c29ydGVkOiAzLCB2YWx1ZTog
MTExfSwgMSkKK3N0b3JlLnB1dCh7c29ydGVkOiAyLCB2YWx1ZTogMjIyfSwgMikKK3N0b3JlLnB1
dCh7c29ydGVkOiAxLCB2YWx1ZTogMzMzfSwgMykKK3N0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFs
dWU6IDQ0NH0sIDE3KQorc3RvcmUucHV0KHtzb3J0ZWQ6IDEwLCB2YWx1ZTogNTU1fSwgMTYpCitz
dG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA2NjZ9LCAxNSkKK3Rlc3RGYXJSYW5nZUN1cnNv
cigpCisKK3J1blRlc3Qoc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcs
IGZhbHNlKSwgMikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2lu
ZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEg
PSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQor
CitydW5UZXN0KHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVl
KSwgMikuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0g
c3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBzdG9y
ZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCisKK3J1blRl
c3QoaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIGZhbHNlKSwgMiku
Li4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9P
TkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUu
aW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQorCitydW5UZXN0KGlu
ZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikuLi4KK3Ry
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQor
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgo
J2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuQ3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCisKK3J1blRlc3QoaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIGZhbHNlKSwgMikuLi4KK3RyYW5z
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2lu
ZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQorCitydW5UZXN0KGluZGV4Lm9w
ZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikuLi4KK3RyYW5z
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2lu
ZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCit0ZXN0Qm91bmRhcnlDdXJzb3Io
KQorCitydW5UZXN0KHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBm
YWxzZSksIDIpLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0
aW9uLlJFQURfT05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRl
eCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0g
c3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikKKwor
cnVuVGVzdChzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSks
IDIpLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJF
QURfT05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0
b3JlLmluZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0gc3RvcmUu
b3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorCitydW5UZXN0
KGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIpLi4u
Cit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05M
WSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0b3JlLmlu
ZGV4KCdpbmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0gaW5kZXgub3BlbkN1
cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikKKworcnVuVGVzdChpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpLi4uCit0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkKK3N0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0b3JlLmluZGV4KCdp
bmRleCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0gaW5kZXgub3BlbkN1cnNvcihJ
REJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorCitydW5UZXN0KGluZGV4Lm9wZW5L
ZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIpLi4uCit0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkKK3N0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRl
eCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0gaW5kZXgub3BlbktleUN1cnNvcihJ
REJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikKKworcnVuVGVzdChpbmRleC5vcGVu
S2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpLi4uCit0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkKK3N0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRl
eCcpOworT3BlbmluZyBjdXJzb3IuLi4KK3N0b3JlUmVxID0gaW5kZXgub3BlbktleUN1cnNvcihJ
REJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQordGVzdE5vRHVwbGljYXRlKCkKKwor
cnVuVGVzdChzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNl
KSwgMykuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0g
c3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBzdG9y
ZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKKworcnVu
VGVzdChpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwg
MykuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3Rv
cmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5v
cGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKKworcnVuVGVz
dChpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwg
MykuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3Rv
cmUuaW5kZXgoJ2luZGV4Jyk7CitPcGVuaW5nIGN1cnNvci4uLgorc3RvcmVSZXEgPSBpbmRleC5v
cGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKKworRVhF
Q1VURSBURVNUUy4uLi4KKworVGVzdGluZzogc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51
cHBlckJvdW5kKDcsIGZhbHNlKSwgMikKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BB
U1MgY3Vyc29yLmtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZEtleQorICAgICBjdXJzb3Iua2V5
ID0gMworUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRWYWx1
ZQorICAgICBjdXJzb3IudmFsdWUudmFsdWUgPSAzMzMKK0RPTkUKKworVGVzdGluZzogc3RvcmUu
b3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKQorY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVj
dGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBl
eHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDMzMwor
RE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQo
NywgZmFsc2UpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iu
a2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNT
IGN1cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1
cnNvci52YWx1ZS52YWx1ZSA9IDExMQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3Rh
dGlvbi5leHBlY3RlZFByaW1hcnlLZXkKKyAgICAgY3Vyc29yLnByaW1hcnlLZXkgPSAxCitET05F
CisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0
cnVlKSwgMikKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBp
cyBleHBlY3RhdGlvbi5leHBlY3RlZEtleQorICAgICBjdXJzb3Iua2V5ID0gMworUEFTUyBjdXJz
b3IudmFsdWUudmFsdWUgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRWYWx1ZQorICAgICBjdXJzb3Iu
dmFsdWUudmFsdWUgPSAxMTEKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24u
ZXhwZWN0ZWRQcmltYXJ5S2V5CisgICAgIGN1cnNvci5wcmltYXJ5S2V5ID0gMQorRE9ORQorCitU
ZXN0aW5nOiBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFs
c2UpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlz
IGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNv
ci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJz
b3IucHJpbWFyeUtleSA9IDEKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3BlbktleUN1cnNvcihJ
REJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAg
IGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4
cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDEKK0RPTkUKKworVGVz
dGluZzogc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwg
MikKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBl
Y3RhdGlvbi5leHBlY3RlZEtleQorICAgICBjdXJzb3Iua2V5ID0gMworUEFTUyBjdXJzb3IudmFs
dWUudmFsdWUgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRWYWx1ZQorICAgICBjdXJzb3IudmFsdWUu
dmFsdWUgPSAzMzMKK0RPTkUKKworVGVzdGluZzogc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5n
ZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
UEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5r
ZXkgPSAyCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFZh
bHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDIyMgorRE9ORQorCitUZXN0aW5nOiBpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4
cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBp
cyBleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDEx
MQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFByaW1hcnlL
ZXkKKyAgICAgY3Vyc29yLnByaW1hcnlLZXkgPSAxCitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9w
ZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikKK2N1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3RhdGlvbi5leHBlY3Rl
ZEtleQorICAgICBjdXJzb3Iua2V5ID0gMgorUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgZXhw
ZWN0YXRpb24uZXhwZWN0ZWRWYWx1ZQorICAgICBjdXJzb3IudmFsdWUudmFsdWUgPSAyMjIKK1BB
U1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5Cisg
ICAgIGN1cnNvci5wcmltYXJ5S2V5ID0gMgorRE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuS2V5
Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVk
S2V5CisgICAgIGN1cnNvci5rZXkgPSAzCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVj
dGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAgICBjdXJzb3IucHJpbWFyeUtleSA9IDEKK0RP
TkUKKworVGVzdGluZzogaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5k
KDMsIHRydWUpLCAyKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iu
a2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5CisgICAgIGN1cnNvci5rZXkgPSAyCitQQVNT
IGN1cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAg
ICBjdXJzb3IucHJpbWFyeUtleSA9IDIKK0RPTkUKKworVGVzdGluZzogc3RvcmUub3BlbkN1cnNv
cihJREJLZXlSYW5nZS51cHBlckJvdW5kKDE1LCBmYWxzZSksIDMpCitjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkK
KyAgICAgY3Vyc29yLmtleSA9IDE1CitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyBleHBlY3Rh
dGlvbi5leHBlY3RlZFZhbHVlCisgICAgIGN1cnNvci52YWx1ZS52YWx1ZSA9IDY2NgorUEFTUyBj
dXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZFByaW1hcnlLZXkKKyAgICAg
Y3Vyc29yLnByaW1hcnlLZXkgPSAxNQorRE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuQ3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKK2N1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyBleHBlY3RhdGlvbi5leHBlY3RlZEtleQor
ICAgICBjdXJzb3Iua2V5ID0gMTAKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIGV4cGVjdGF0
aW9uLmV4cGVjdGVkVmFsdWUKKyAgICAgY3Vyc29yLnZhbHVlLnZhbHVlID0gNjY2CitQQVNTIGN1
cnNvci5wcmltYXJ5S2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleQorICAgICBj
dXJzb3IucHJpbWFyeUtleSA9IDE1CitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5LZXlDdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5
CisgICAgIGN1cnNvci5rZXkgPSAxMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyBleHBlY3Rh
dGlvbi5leHBlY3RlZFByaW1hcnlLZXkKKyAgICAgY3Vyc29yLnByaW1hcnlLZXkgPSAxNQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByZXYtbm8tZHVw
bGljYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JmYTk3OWNiZTU3Mjk2ZjA4NDY2NGE1MjA0ZDA0M2Rj
MmViODQzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1wcmV2LW5v
LWR1cGxpY2F0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1u
by1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmFmZWQ5ZDEwMWY0OWQxYjE1MTIyOWM0ZGIxYTk0OGZjMTAwMTU0NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1k
dXBsaWNhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTgzIEBACitUZXN0IEluZGV4ZWREQjog
aXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdoIGFuIGluZGV4LCBza2lwcGluZyBkdXBsaWNhdGVz
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5k
ZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsK
K1BBU1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK0lEQkRhdGFiYXNlRXhjZXB0aW9uID0g
d2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbjsKK1BBU1MgSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCBpcyBmYWxzZQorSURC
VHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRy
YW5zYWN0aW9uOworUEFTUyBJREJUcmFuc2FjdGlvbiA9PSBudWxsIGlzIGZhbHNlCitJREJDdXJz
b3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJDdXJzb3I7CitQQVNTIElE
QkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCitJREJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5n
ZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7CitQQVNTIElEQktleVJhbmdlID09IG51bGwg
aXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQorb3BlblN1Y2Nlc3Mo
KToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK0ZpcnN0LCBhZGQgYWxsIG91ciBkYXRhIHRvIHRo
ZSBvYmplY3Qgc3RvcmUuCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0
YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7
CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2Jq
ZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0
b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ld
LmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1
ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9i
amVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CitOb3cgY3JlYXRlIHRoZSBpbmRleGVz
Lgorb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtp
XS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRl
eChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5v
cHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRl
eERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwordGVzdFByZXYoKQordHJh
bnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitvYmplY3RTdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitrZXlJbmRleCA9IDg7CityZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcpLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBS
RVYpOworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA3
MworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3NDAnCitQQVNTIGN1cnNvci52
YWx1ZS5uYW1lIGlzICdTYW0nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNzMKK1BBU1Mg
Y3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgt
LTsKKyAgPT4gNworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtl
eSBpcyA3MworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzQnCitQQVNTIGN1
cnNvci52YWx1ZS5uYW1lIGlzICdSb24nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNzMK
K1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxODAKK2N1cnNvci5jb250aW51ZSgpOwora2V5
SW5kZXgtLTsKKyAgPT4gNgorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vy
c29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzknCitQ
QVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdKZWYnCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQg
aXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMjAKK2N1cnNvci5jb250aW51ZSgp
Owora2V5SW5kZXgtLTsKKyAgPT4gNQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BB
U1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3
MzgnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdMZW8nCitQQVNTIGN1cnNvci52YWx1ZS5o
ZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxODAKK2N1cnNvci5jb250
aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gNAorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3
LTIzLTc3MzcnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdQYXQnCitQQVNTIGN1cnNvci52
YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMDAKK2N1cnNv
ci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gMworY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyAnMjM3LTIzLTc3MzYnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdKb2UnCitQQVNTIGN1
cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxNTAK
K2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gMgorY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2MAorUEFTUyBjdXJzb3IucHJpbWFy
eUtleSBpcyAnMjM3LTIzLTc3MzInCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdCb2InCitQ
QVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjAKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBp
cyAxMjAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gMQorY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA1OAorUEFTUyBjdXJzb3Iu
cHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzUnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdT
dWUnCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNTgKK1BBU1MgY3Vyc29yLnZhbHVlLndl
aWdodCBpcyAxMzAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gMAorY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA1MgorUEFTUyBj
dXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzMnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1l
IGlzICdBbm4nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNTIKK1BBU1MgY3Vyc29yLnZh
bHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4g
LTEKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitObyBjdXJzb3I6IG51bGwKK1BBU1Mg
a2V5SW5kZXggaXMgLTEKK3Rlc3RQcmV2Tm9EdXBsaWNhdGUoKQorb2JqZWN0U3RvcmUgPSBkYi50
cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7
CitrZXlJbmRleCA9IDg7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcpLm9w
ZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsKK2N1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CitrZXlJbmRleCAtPSAxCisgID0+IEVudGVyaW5nIHdpdGgga2V5
SW5kZXggPSA3CitQQVNTIGN1cnNvci5rZXkgaXMgNzMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkg
aXMgJzIzNy0yMy03NzM0JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnUm9uJworUEFTUyBj
dXJzb3IudmFsdWUuaGVpZ2h0IGlzIDczCitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTgw
CitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CitjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0Owora2V5SW5kZXggLT0gMzsKKyAgPT4gRW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9IDMK
K1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIz
LTc3MzYnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdKb2UnCitQQVNTIGN1cnNvci52YWx1
ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxNTAKK2N1cnNvci5j
b250aW51ZSgpOwora2V5SW5kZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Cisg
ID0+IEVudGVyaW5nIHdpdGgga2V5SW5kZXggPSAyCitQQVNTIGN1cnNvci5rZXkgaXMgNjAKK1BB
U1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzMyJworUEFTUyBjdXJzb3IudmFsdWUu
bmFtZSBpcyAnQm9iJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDYwCitQQVNTIGN1cnNv
ci52YWx1ZS53ZWlnaHQgaXMgMTIwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07Citj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICA9PiBFbnRlcmluZyB3aXRoIGtleUluZGV4
ID0gMQorUEFTUyBjdXJzb3Iua2V5IGlzIDU4CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcy
MzctMjMtNzczNScKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ1N1ZScKK1BBU1MgY3Vyc29y
LnZhbHVlLmhlaWdodCBpcyA1OAorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlzIDEzMAorY3Vy
c29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKKyAgPT4gRW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9IDAKK1BBU1MgY3Vyc29yLmtleSBpcyA1
MgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzMnCitQQVNTIGN1cnNvci52
YWx1ZS5uYW1lIGlzICdBbm4nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNTIKK1BBU1Mg
Y3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgt
LTsKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgID0+IEVudGVyaW5nIHdpdGgga2V5
SW5kZXggPSAtMQorTm8gY3Vyc29yOiBudWxsCitQQVNTIGtleUluZGV4IGlzIC0xCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxp
Y2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1w
cmV2LW5vLWR1cGxpY2F0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhN2NhYWRmODg2MDM2ZjgzMDM1ZGQ2
NDUyYjc2NTY0MDkzZjQyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKQEAgLTAsMCAr
MSwxOTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X2luZGV4ZXMuaHRtbD9mb3JjZT0xCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ICAgIHZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBpdGVyYXRpbmcgYmFja3dhcmRzIHRocm91Z2gg
YW4gaW5kZXgsIHNraXBwaW5nIGR1cGxpY2F0ZXMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwor
ICAgIElEQkRhdGFiYXNlRXhjZXB0aW9uID0gZXZhbEFuZExvZygiSURCRGF0YWJhc2VFeGNlcHRp
b24gPSB3aW5kb3cuSURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93LndlYmtpdElEQkRhdGFi
YXNlRXhjZXB0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFiYXNlRXhjZXB0aW9u
ID09IG51bGwiKTsKKyAgICBJREJUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coIklEQlRyYW5zYWN0
aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlv
bjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7CisgICAg
SURCQ3Vyc29yID0gZXZhbEFuZExvZygiSURCQ3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3
aW5kb3cud2Via2l0SURCQ3Vyc29yOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkN1cnNvciA9
PSBudWxsIik7CisgICAgSURCS2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJLZXlSYW5nZSA9IHdp
bmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7Iik7CisgICAgc2hv
dWxkQmVGYWxzZSgiSURCS2V5UmFuZ2UgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBvYmplY3RTdG9yZU5hbWUg
PSAiUGVvcGxlIjsKKworICAgIG9iamVjdFN0b3JlRGF0YSA9IFsKKyAgICAgICAgeyBrZXk6ICIy
MzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEy
MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5u
IiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03
NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfSwK
KyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWln
aHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2
YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgICAg
ICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUs
IHdlaWdodDogMTAwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczOCIsIHZhbHVlOiB7
IG5hbWU6ICJMZW8iLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgICAgIHsga2V5
OiAiMjM3LTIzLTc3MzkiLCB2YWx1ZTogeyBuYW1lOiAiSmVmIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0
OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFsdWU6IHsgbmFtZTog
IlNhbSIsIGhlaWdodDogNzMsIHdlaWdodDogMTEwIH0gfSwKKyAgICBdOworCisgICAgaW5kZXhE
YXRhID0gWworICAgICAgICB7IG5hbWU6ICJuYW1lIiwga2V5UGF0aDogIm5hbWUiLCBvcHRpb25z
OiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAgICAgIHsgbmFtZTogImhlaWdodCIsIGtleVBhdGg6
ICJoZWlnaHQiLCBvcHRpb25zOiB7IH0gfSwKKyAgICAgICAgeyBuYW1lOiAid2VpZ2h0Iiwga2V5
UGF0aDogIndlaWdodCIsIG9wdGlvbnM6IHsgdW5pcXVlOiBmYWxzZSB9IH0KKyAgICBdOworCisg
ICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydCA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0s
CisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVp
Z2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwg
dmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1
LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTog
eyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAgfSB9LAorICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzM4IiwgdmFsdWU6IHsgbmFtZTogIkxlbyIsIGhlaWdodDogNjUsIHdlaWdo
dDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczOSIsIHZhbHVlOiB7IG5hbWU6
ICJKZWYiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAg
fSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFsdWU6IHsgbmFtZTogIlNhbSIs
IGhlaWdodDogNzMsIHdlaWdodDogMTEwIH0gfSwKKyAgICBdOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKworICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFs
bCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOworICAgIGFkZGVkRGF0YSA9IDA7Cisg
ICAgZm9yIChpIGluIG9iamVjdFN0b3JlRGF0YSkgeworICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBv
YmplY3RTdG9yZURhdGFbaV0ua2V5KTsiKTsKKyAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBpZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3RvcmVEYXRhLmxlbmd0
aCkgeworICAgICAgICAgIGNyZWF0ZUluZGV4ZXMoKTsKKyAgICAgICAgfQorICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gY3JlYXRlSW5kZXhlcygpCit7CisgICAgZGVidWcoIk5vdyBjcmVh
dGUgdGhlIGluZGV4ZXMuIik7CisgICAgZm9yIChpIGluIGluZGV4RGF0YSkgeworICAgICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4
RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Iik7CisgICAgfQorCisKKyAg
ICB0ZXN0UHJldigpOworfQorCitmdW5jdGlvbiB0ZXN0UHJldigpIHsKKyAgICBkZWJ1ZygidGVz
dFByZXYoKSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihvYmplY3RTdG9yZU5hbWUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDg7Iik7CisgICAgLy8gZmlyc3QgdHJ5IHdp
dGgganVzdCBQUkVWCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVik7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vy
c29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICIiICsgb2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0KTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICInIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNv
cnRba2V5SW5kZXhdLmtleSArICInIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLm5hbWUiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIiIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQp
OworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIiIgKyBvYmplY3RTdG9yZURh
dGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgICAgICBkZWJ1ZygiICA9PiAiICsg
a2V5SW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVidWco
Ik5vIGN1cnNvcjogIiArIGN1cnNvcik7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgi
LCAiLTEiKTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RQ
cmV2Tm9EdXBsaWNhdGU7Cit9CisKK2Z1bmN0aW9uIHRlc3RQcmV2Tm9EdXBsaWNhdGUoKSB7Cisg
ICAgZGVidWcoInRlc3RQcmV2Tm9EdXBsaWNhdGUoKSIpOworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9n
KCJrZXlJbmRleCA9IDg7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJF
Vl9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7CisgICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gOCkgeworICAgICAgICAgICAgICAgIGV2
YWxBbmRMb2coImtleUluZGV4IC09IDEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChrZXlJbmRleCA9PSA2KSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgg
LT0gMzsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgZGVidWcoIiAgPT4gRW50ZXJpbmcgd2l0
aCBrZXlJbmRleCA9ICIgKyBrZXlJbmRleCk7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIiIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRT
b3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0u
a2V5ICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICIn
IiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUgKyAiJyIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAiIiArIG9iamVj
dFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCk7CisgICAgICAgICAg
ICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAiIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRb
a2V5SW5kZXhdLnZhbHVlLndlaWdodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygi
a2V5SW5kZXgtLTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRl
YnVnKCJObyBjdXJzb3I6ICIgKyBjdXJzb3IpOworICAgICAgICAgICAgc2hvdWxkQmUoImtleUlu
ZGV4IiwgIi0xIik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByZXYt
bm8tZHVwbGljYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZjE0OTU3NWM0YThlNDBhYzg3YjM5OGEyNTFj
YWMwZjNjZjBhYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLmpzCkBAIC0wLDAgKzEsMjAz
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMgb3Jk
ZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOwor
fQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBl
dmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1Zycp
Iik7CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
b3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIg
PSBvcGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICAgICAgICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3NvcnRlZCcpIik7
CisgICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOwor
ICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQoreworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZScpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMywgdmFsdWU6IDExMX0sIDEpIik7CisgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KHtzb3J0ZWQ6IDIsIHZhbHVlOiAyMjJ9LCAyKSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAxLCB2YWx1ZTogMzMzfSwgMykiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA0NDR9LCAxNykiKTsKKyAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA1NTV9LCAxNikiKTsK
KyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA2NjZ9LCAxNSki
KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gcnVuQWxsVGVzdHM7Cit9CisKKworZnVuY3Rpb24g
cnVuQWxsVGVzdHMoKSB7CisgICAgd2FpdEZvcigKKyAgICAgICAgdGVzdEZhclJhbmdlQ3Vyc29y
KCksCisgICAgICAgIHRlc3RCb3VuZGFyeUN1cnNvcigpLAorICAgICAgICB0ZXN0Tm9EdXBsaWNh
dGUoKQorICAgICAgICApLm9uc3VjY2VzcyA9IGZpbmlzaEpTVGVzdDsKKworICAgIC8vIGhlbHAg
dXMgZGlzdGluZ3Vpc2ggdGhlIHF1ZXVpbmcgb2YgdGhlIHRlc3RzIGZyb20gdGhlIGV4ZWN1dGlv
bgorICAgIGRlYnVnKCJcbkVYRUNVVEUgVEVTVFMuLi4uIik7Cit9CisKKworCitmdW5jdGlvbiB0
ZXN0RmFyUmFuZ2VDdXJzb3IoKQoreworICAgIC8vIHVwcGVyIGJvdW5kIGlzIHdlbGwgb3V0IG9m
IHJhbmdlLCByZXN1bHRzIGFsd2F5cyB0aGUgc2FtZSwKKyAgICAvLyB3aGV0aGVyIG9wZW4gb3Ig
Y2xvc2VkCisgICAgZGVidWcoInRlc3RGYXJSYW5nZUN1cnNvcigpIik7CisgICAgcmV0dXJuIHdh
aXRGb3IoCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoInN0b3JlIiwgNywgZmFsc2Us
IElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDMzMywg
ZXhwZWN0ZWRLZXk6IDN9KSwKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUi
LCA3LCB0cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAgeyBleHBlY3RlZFZh
bHVlOiAzMzMsIGV4cGVjdGVkS2V5OiAzfSksCisKKyAgICAgICAgLy8gaGVyZSAnNycgcmVmZXJz
IHRvIHRoZSAnc29ydGVkJyB2YWx1ZQorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJp
bmRleCIsIDcsIGZhbHNlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAgeyBleHBl
Y3RlZFZhbHVlOiAxMTEsIGV4cGVjdGVkS2V5OiAzLCBleHBlY3RlZFByaW1hcnlLZXk6IDF9KSwK
KyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigiaW5kZXgiLCA3LCB0cnVlLCBJREJDdXJz
b3IuUFJFViksCisgICAgICAgICAgICAgICAgeyBleHBlY3RlZFZhbHVlOiAxMTEsIGV4cGVjdGVk
S2V5OiAzLCBleHBlY3RlZFByaW1hcnlLZXk6IDF9KSwKKworICAgICAgICAvLyBoZXJlICc3JyBy
ZWZlcnMgdG8gdGhlIHNvcnRlZCB2YWx1ZQorICAgICAgICBydW5UZXN0KG1ha2VPcGVuS2V5Q3Vy
c29yKCJpbmRleCIsIDcsIGZhbHNlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAg
eyBleHBlY3RlZEtleTogMywgZXhwZWN0ZWRQcmltYXJ5S2V5OiAxfSksCisgICAgICAgIHJ1blRl
c3QobWFrZU9wZW5LZXlDdXJzb3IoImluZGV4IiwgNywgdHJ1ZSwgSURCQ3Vyc29yLlBSRVYpLAor
ICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVkUHJpbWFyeUtleTogMX0p
CisgICAgICAgICk7Cit9CisKK2Z1bmN0aW9uIHRlc3RCb3VuZGFyeUN1cnNvcigpCit7CisgICAg
ZGVidWcoInRlc3RCb3VuZGFyeUN1cnNvcigpIik7CisgICAgcmV0dXJuIHdhaXRGb3IoCisgICAg
ICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoInN0b3JlIiwgMywgZmFsc2UsIElEQkN1cnNvci5Q
UkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDMzMywgZXhwZWN0ZWRLZXk6
IDN9KSwKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUiLCAzLCB0cnVlLCBJ
REJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAgeyBleHBlY3RlZFZhbHVlOiAyMjIsIGV4
cGVjdGVkS2V5OiAyfSksCisKKyAgICAgICAgLy8gYnkgaW5kZXggc29ydCBvcmRlciwgd2Ugc2hv
dWxkIHJldHVybiB0aGVtIGluIGEgZGlmZmVyZW50IG9yZGVyCisgICAgICAgIHJ1blRlc3QobWFr
ZU9wZW5DdXJzb3IoImluZGV4IiwgMywgZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAg
ICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDExMSwgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVkUHJp
bWFyeUtleTogMX0pLAorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJpbmRleCIsIDMs
IHRydWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6
IDIyMiwgZXhwZWN0ZWRLZXk6IDIsIGV4cGVjdGVkUHJpbWFyeUtleTogMn0pLAorCisgICAgICAg
IC8vIG5vdyB0aGUgdmFsdWUgZG9lc24ndCBtYXR0ZXIsIGp1c3QgdGhlIHByaW1hcnkga2V5Cisg
ICAgICAgIHJ1blRlc3QobWFrZU9wZW5LZXlDdXJzb3IoImluZGV4IiwgMywgZmFsc2UsIElEQkN1
cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkS2V5OiAzLCBleHBlY3RlZFBy
aW1hcnlLZXk6IDF9KSwKKyAgICAgICAgcnVuVGVzdChtYWtlT3BlbktleUN1cnNvcigiaW5kZXgi
LCAzLCB0cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAgeyBleHBlY3RlZEtl
eTogMiwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAyfSkKKyAgICAgICAgKTsKK30KKworZnVuY3Rpb24g
dGVzdE5vRHVwbGljYXRlKCkKK3sKKyAgICBkZWJ1ZygidGVzdE5vRHVwbGljYXRlKCkiKTsKKyAg
ICAvLyB0aGVyZSBhcmUgMyB2YWx1ZXMsIGJ1dCB3ZSBzaG91bGQgcmV0dXJuIHRoZSBmaXJzdCBv
bmUKKyAgICByZXR1cm4gd2FpdEZvcigKKyAgICAgICAgLy8gUFJFVl9OT19EVVBMSUNBVEUgZG9l
c24ndCByZWFsbHkgYWZmZWN0IG5vbi1pbmRleGVkCisgICAgICAgIC8vIGN1cnNvcnMsIGJ1dCB3
ZSBzaG91bGQgbWFrZSBzdXJlIHdlIGdldCB0aGUgcmlnaHQgb25lCisgICAgICAgIC8vIGFueXdh
eQorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDE1LCBmYWxzZSwgSURC
Q3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVjdGVkVmFs
dWU6IDY2NiwgZXhwZWN0ZWRLZXk6IDE1LCBleHBlY3RlZFByaW1hcnlLZXk6IDE1IH0pLAorCisg
ICAgICAgIC8vIHN0aWxsIHRocmVlIHZhbHVlcywgYnV0IG5vdyB0aGUgaW5kZXggc2F5cyB3ZSBz
aG91bGQgcmV0dXJuIHRoZQorICAgICAgICAvLyBzZWNvbmQgb25lCisgICAgICAgIHJ1blRlc3Qo
bWFrZU9wZW5DdXJzb3IoImluZGV4IiwgMTUsIGZhbHNlLCBJREJDdXJzb3IuUFJFVl9OT19EVVBM
SUNBVEUpLAorICAgICAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogNjY2LCBleHBlY3RlZEtl
eTogMTAsIGV4cGVjdGVkUHJpbWFyeUtleTogMTV9KSwKKworICAgICAgICAvLyBzYW1lIGJlaGF2
aW9yIGFzIGFib3ZlLCB3aXRob3V0IGEgdmFsdWUKKyAgICAgICAgcnVuVGVzdChtYWtlT3Blbktl
eUN1cnNvcigiaW5kZXgiLCAxNSwgZmFsc2UsIElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSks
CisgICAgICAgICAgICAgICAgeyBleHBlY3RlZEtleTogMTAsIGV4cGVjdGVkUHJpbWFyeUtleTog
MTV9KQorICAgICAgICApOworfQorCisKK2Z1bmN0aW9uIG1ha2VPcGVuQ3Vyc29yKG9iaiwgdXBw
ZXJCb3VuZCwgb3BlbiwgZGlyZWN0aW9uKQoreworICAgIHJldHVybiBvYmogKyAiLm9wZW5DdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgiICsgdXBwZXJCb3VuZCArICIsICIgKworICAgICAg
ICBvcGVuICsgIiksICIgKworICAgICAgICAgICAgZGlyZWN0aW9uICsgIikiOworfQorCitmdW5j
dGlvbiBtYWtlT3BlbktleUN1cnNvcihvYmosIHVwcGVyQm91bmQsIG9wZW4sIGRpcmVjdGlvbikK
K3sKKyAgICByZXR1cm4gb2JqICsgIi5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91
bmQoIiArIHVwcGVyQm91bmQgKyAiLCAiICsKKyAgICAgICAgb3BlbiArICIpLCAiICsKKyAgICAg
ICAgICAgIGRpcmVjdGlvbiArICIpIjsKK30KKworZnVuY3Rpb24gcnVuVGVzdChvcGVuQ3Vyc29y
LCBleHApCit7CisgICAgZGVidWcoIlxucnVuVGVzdCgiICsgb3BlbkN1cnNvciArICIuLi4iKTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5z
YWN0aW9uLlJFQURfT05MWSkiKTsKKworICAgIC8vIGV4cG9zZSB0aGVzZSBmb3IgY29kZSBpbiBv
cGVuQ3Vyc29yCisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOyIp
OworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiRE9ORSIpOworICAgIH07CisKKyAgICB2
YXIgcmVzdWx0ID0ge307CisKKyAgICB2YXIgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgLy8gZXhwb3NlIGZvciBldmFsQW5kTG9nCisgICAgICAgIGV4cGVjdGF0aW9u
ID0gZXhwOworCisgICAgICAgIGRlYnVnKCJcblRlc3Rpbmc6ICIgKyBvcGVuQ3Vyc29yKTsKKyAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAg
ICBpZiAoY3Vyc29yID09PSBudWxsKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJudWxsIGN1
cnNvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAiZXhwZWN0YXRpb24uZXhwZWN0ZWRLZXkiKTsKKyAgICAgICAgZGVi
dWcoIiAgICAgY3Vyc29yLmtleSA9ICIgKyBjdXJzb3Iua2V5KTsKKyAgICAgICAgaWYgKCJ2YWx1
ZSIgaW4gY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLnZhbHVl
IiwgImV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgICAg
IGN1cnNvci52YWx1ZS52YWx1ZSA9ICIgKyBjdXJzb3IudmFsdWUudmFsdWUpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKCJleHBlY3RlZFZhbHVlIiBpbiBleHBlY3RhdGlvbikKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlRlc3QgYnJva2VuOiBzaG91bGRuJ3QgaGF2ZSBleHBlY3RlZFZh
bHVlIik7CisKKyAgICAgICAgaWYgKCJleHBlY3RlZFByaW1hcnlLZXkiIGluIGV4cGVjdGF0aW9u
KSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiZXhwZWN0YXRp
b24uZXhwZWN0ZWRQcmltYXJ5S2V5Iik7CisgICAgICAgICAgICBkZWJ1ZygiICAgICBjdXJzb3Iu
cHJpbWFyeUtleSA9ICIgKyBjdXJzb3IucHJpbWFyeUtleSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBMZXQgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaC4KKyAgICAgICAgcmVzdWx0Lm9uc3VjY2Vz
cygpOworICAgIH07CisKKyAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IuLi4iKTsKKyAgICBzdG9y
ZVJlcSA9IGV2YWxBbmRMb2coInN0b3JlUmVxID0gIiArIG9wZW5DdXJzb3IpOworICAgIHN0b3Jl
UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCBlNGI4ZDNmMGM0Y2E4
YTA5YzIxZGVjNzQxMGI3YmU3YjVkZDFhZGVmLi43NmYyYmZmYWFhY2NjZTM1NjE0ZTVjNjIxMTY1
OWZlYTg3MzA3MDdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9zaGFyZWQuanMKQEAgLTExMiwzICsxMTIsNDcgQEAgZnVuY3Rpb24gZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKQogICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZShkYi5vYmplY3RT
dG9yZU5hbWVzLml0ZW0oMCkpOwogICAgIGRlYnVnKCJEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVz
LiIpOwogfQorCisvLyB0YWtlIGFuIHVuc3BlY2lmaWVkIG51bWJlciBvZiBjYWxsYmFjay1saWtl
IG9iamVjdHMsIHdhaXQgZm9yIGVhY2gKKy8vIG9uZSwgYW5kIGZpcmUgYW4gb25zdWNjZXNzIGV2
ZW50IHdoZW4gYWxsIG9mIHRoZW0gY29tcGxldGUuIElmIGFueQorLy8gb2YgdGhlIGNhbGxiYWNr
IG9iamVjdHMgdGhyb3cgYW4gZXJyb3Igb3IgYWJvcnQsIGZpcmUgdGhlCisvLyBhcHByb3ByaWF0
ZSBvbmVycm9yL29uYWJvcnQgaW1tZWRpYXRlbHkuCitmdW5jdGlvbiB3YWl0Rm9yKCkKK3sKKwor
ICAgIHZhciBwcm9ncmVzcyA9IFtdOyAgICAgICAgICAvLyB3aGVuIGFsbCBvZiB0aGVzZSBhcmUg
dHJ1ZSwgd2UncmUgZG9uZQorICAgIHZhciBldmVudFJlc3VsdCA9IHt9OworCisgICAgZnVuY3Rp
b24gb25lcnJvcihlKQorICAgIHsKKyAgICAgICAgZXZlbnRSZXN1bHQub25lcnJvcihlKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBvbmFib3J0KGUpCisgICAgeworICAgICAgICBldmVudFJlc3Vs
dC5vbmFib3J0KGUpOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBldmVudCA9IGFyZ3VtZW50c1tpXTsKKyAgICAg
ICAgcHJvZ3Jlc3MucHVzaChmYWxzZSk7CisgICAgICAgIGV2ZW50Lm9uc3VjY2VzcyA9IHdhaXRG
b3Jfb25zdWNjZXNzKGksIHByb2dyZXNzLCBldmVudFJlc3VsdCk7CisgICAgICAgIGV2ZW50Lm9u
YWJvcnQgPSBvbmFib3J0OworICAgICAgICBldmVudC5vbmVycm9yID0gb25lcnJvcjsKKyAgICB9
CisgICAgcmV0dXJuIGV2ZW50UmVzdWx0OworfQorCitmdW5jdGlvbiB3YWl0Rm9yX29uc3VjY2Vz
cyhpbmRleCwgc3VjY2Vzc2VzLCBldmVudFJlc3VsdCkKK3sKKyAgICBmdW5jdGlvbiBvbnN1Y2Nl
c3MoKQorICAgIHsKKyAgICAgICAgc3VjY2Vzc2VzW2luZGV4XSA9IHRydWU7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc3VjY2Vzc2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBp
ZiAoIXN1Y2Nlc3Nlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgZXZlbnRSZXN1bHQub25zdWNjZXNzKCk7CisgICAgfQorICAgIHJldHVybiBvbnN1Y2Nl
c3M7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137609</attachid>
            <date>2012-04-17 14:35:53 -0700</date>
            <delta_ts>2012-04-17 16:03:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60746-20120417143552.patch</filename>
            <type>text/plain</type>
            <size>33820</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIyZTIzNWQ1MTcyNDU2
YTE5YWQzZDljN2YwYmRkMTBlMmJmMmJhMy4uN2JmNDIyMDZiOTA1NTI5NjY3YjMzYjJjMWRjZDM4
ZDk5YmUxNjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA0LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREIgY2hv
b3NlcyB3cm9uZyByZWNvcmQgb24gUFJFVl9OT19EVVBMSUNBVEUgaW5kZXggY3Vyc29yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDc0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gaXRlcmF0aW5n
IGJhY2t3YXJkcyB3aXRoIFBSRVZfTk9fRFVQTElDQVRFLCBrZWVwIHdhbGtpbmcgcGFzdAorICAg
ICAgICB0aGUgJ3ByZXYnIGtleSB1bnRpbCBpdCBjaGFuZ2VzLCB0aGVuIHdhbGsgZm9yd2FyZCBv
bmUgdGltZS4gVGhpcworICAgICAgICBjb3ZlcnMgdGhlIG9iamVjdCBzdG9yZSBhbmQgaW5kZXgg
Y2FzZXMuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1w
cmV2LW5vLWR1cGxpY2F0ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA0LTE2
ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGluc2Vy
dGVkSW50b0RvY3VtZW50IGFuZCBpbnNlcnRlZEludG9UcmVlIHNob3VsZCBiZSB1bml0aWZlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggOGQ1NzAyMjYwNTdiYTkyM2ZkM2ViMWY0ZmYyZTNk
MGY5NjRkNzBkYi4uNmE3ZWQyODRiYWVkZGRlYWZjZmFiNzgxYTE0ZGYxMDlmOTgyOWVmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEwMzksMjQgKzEwMzksNDggQEAgYm9vbCBDdXJzb3JJ
bXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0
YXRlIG5leHRTdGEKIHsKICAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3VycmVu
dEtleTsKIAorICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdpdGggUFJFVl9OT19EVVBMSUNBVEUsIHNw
ZWMgcmVxdWlyZXMgdGhhdCB0aGUKKyAgICAvLyB2YWx1ZSB3ZSB5aWVsZCBmb3IgZWFjaCBrZXkg
aXMgdGhlIGZpcnN0IGR1cGxpY2F0ZSBpbiBmb3J3YXJkcworICAgIC8vIG9yZGVyLgorICAgIFJl
ZlB0cjxJREJLZXk+IGxhc3REdXBsaWNhdGVLZXk7CisKKyAgICBib29sIGZvcndhcmQgPSBtX2N1
cnNvck9wdGlvbnMuZm9yd2FyZDsKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgaWYgKG5leHRT
dGF0ZSA9PSBTZWVrKSB7Ci0gICAgICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQp
CisgICAgICAgICAgICBpZiAoZm9yd2FyZCkKICAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5u
ZXh0KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+cHJl
digpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5leHRTdGF0ZSA9IFNlZWs7IC8vIGZv
ciBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMKIAotICAgICAgICBpZiAoIW1faXRlcmF0b3ItPmlzVmFs
aWQoKSkKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAg
IGlmICghZm9yd2FyZCAmJiBsYXN0RHVwbGljYXRlS2V5LmdldCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byB3YWxrIGZvcndhcmQgYmVjYXVzZSB3ZSBoaXQgdGhlIGVuZCBvZgor
ICAgICAgICAgICAgICAgIC8vIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIGZvcndhcmQgPSB0
cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAorICAgICAgICAvLyBUaGUgaXRlcmF0b3Ig
d2lsbCBjb250YWluIHZhbHVlcyBkZWxldGVkIGR1cmluZyBpdGVyYXRpb24uCiAgICAgICAgIFZl
Y3RvcjxjaGFyPiB0cmFzaDsKICAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5nZXQobV9pdGVy
YXRvci0+a2V5KCksIHRyYXNoKSkKLSAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChpc1Bhc3RCb3VuZHMoKSkgeworICAgICAgICAgICAg
aWYgKCFmb3J3YXJkICYmIGxhc3REdXBsaWNhdGVLZXkuZ2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNlIG5vdyB3ZSdyZSBiZXlvbmQgdGhl
CisgICAgICAgICAgICAgICAgLy8gYm91bmRzIGRlZmluZWQgYnkgdGhlIGN1cnNvci4KKyAgICAg
ICAgICAgICAgICBmb3J3YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNQYXN0Qm91bmRzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWhhdmVFbnRlcmVkUmFuZ2Uo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA2Nyw3ICsxMDkxLDcgQEAgYm9vbCBDdXJz
b3JJbXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRv
clN0YXRlIG5leHRTdGEKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChrZXkp
IHsKLSAgICAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgeworICAgICAgICAg
ICAgaWYgKGZvcndhcmQpIHsKICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50S2V5LT5pc0xl
c3NUaGFuKGtleSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTEwNzYsMTIgKzExMDAsMzUgQEAgYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpj
b250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRvclN0YXRlIG5leHRTdGEK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMu
dW5pcXVlICYmIG1fY3VycmVudEtleS0+aXNFcXVhbChwcmV2aW91c0tleS5nZXQoKSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy51bmlxdWUpIHsK
KworICAgICAgICAgICAgaWYgKG1fY3VycmVudEtleS0+aXNFcXVhbChwcmV2aW91c0tleS5nZXQo
KSkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYWJsZSB0byB3YWxr
IGZvcndhcmQgYWxsIHRoZSB3YXkKKyAgICAgICAgICAgICAgICAvLyB0byB0aGUgcHJldmlvdXMg
a2V5LgorICAgICAgICAgICAgICAgIEFTU0VSVCghbGFzdER1cGxpY2F0ZUtleS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICghZm9yd2FyZCkgeworICAgICAgICAgICAgICAgIGlmICghbGFzdER1cGxpY2F0ZUtleS5nZXQo
KSkgeworICAgICAgICAgICAgICAgICAgICBsYXN0RHVwbGljYXRlS2V5ID0gbV9jdXJyZW50S2V5
OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNlIHdlIGhpdCB0
aGUgYm91bmRhcnkKKyAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIGtleSByYW5nZXMuCisgICAg
ICAgICAgICAgICAgaWYgKCFsYXN0RHVwbGljYXRlS2V5LT5pc0VxdWFsKG1fY3VycmVudEtleS5n
ZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIEFTU0VSVCghbGFzdER1cGxpY2F0ZUtleS5nZXQoKSB8fCAoZm9yd2FyZCAmJiBs
YXN0RHVwbGljYXRlS2V5LT5pc0VxdWFsKG1fY3VycmVudEtleS5nZXQoKSkpKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY3MmE4MTU0NTdhZmI2ODg4MjE5YWViYWIyOTU3MzMyNWYy
YTgyZDguLjA1YWJhNDU2MzE0YWI1MmI5ZGVlZmM1ZTExMmUyODdlMzljNGVmNjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMSBAQAorMjAxMi0wNC0xMyAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCIGNob29zZXMgd3JvbmcgcmVjb3JkIG9uIFBSRVZf
Tk9fRFVQTElDQVRFIGluZGV4IGN1cnNvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjA3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0IGZvciBQUkVWX05PX0RVUExJQ0FURS4KKworICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYt
bm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRl
LmpzOiBBZGRlZC4KKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3VjY2Vzcy52
ZXJyZXEub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgorICAgICAgICAocG9wdWxhdGVTdG9y
ZSk6CisgICAgICAgIChydW5BbGxUZXN0cyk6CisgICAgICAgICh3YWl0Rm9yKToKKyAgICAgICAg
KGNvbXBsZXRlLmZpcmVDYWxsYmFjayk6CisgICAgICAgIChjb21wbGV0ZSk6CisgICAgICAgICh0
ZXN0RmFyUmFuZ2VDdXJzb3IpOgorICAgICAgICAobWFrZU9wZW5LZXlDdXJzb3IpOgorICAgICAg
ICAocnVuVGVzdC50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3QudGVzdEZ1bmN0
aW9uKToKKyAgICAgICAgKHJ1blRlc3QpOgorCiAyMDEyLTA0LTE2ICBEYXZpZCBCYXJyICA8ZGF2
aWRiYXJyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTdGFjayBvdmVyZmxvdyBpbiBDU1MgcGFy
c2VyIGNhdXNlZCBieSByZWN1cnNpdmUgc3R5bGVzaGVldCBpbXBvcnQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1k
dXBsaWNhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZWMxMWViM2I5M2NlNWQwOWUxMDkx
MDAxOTkwNGEwOGZkMmY1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTI1IEBACitUZXN0IEluZGV4ZWREQiBiZWhhdmlvciB3aGVuIGl0ZXJhdGluZyBiYWNrd2Fy
ZHMgd2l0aCBhbmQgd2l0aG91dCBOT19EVVBMSUNBVEUKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhl
ZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5k
ZXhlZERCOworCisKK29wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXByZXYtbm8tZHVw
bGljYXRlJykKK2RiID0gb3BlbnJlcS5yZXN1bHQKK3ZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEn
KQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykKK3N0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICdzb3J0ZWQnKQorCitwb3B1
bGF0aW5nIHN0b3JlLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOwor
c3RvcmUucHV0KHtzb3J0ZWQ6IDMsIHZhbHVlOiAxMTF9LCAxKQorc3RvcmUucHV0KHtzb3J0ZWQ6
IDIsIHZhbHVlOiAyMjJ9LCAyKQorc3RvcmUucHV0KHtzb3J0ZWQ6IDEsIHZhbHVlOiAzMzN9LCAz
KQorc3RvcmUucHV0KHtzb3J0ZWQ6IDEwLCB2YWx1ZTogNDQ0fSwgMTcpCitzdG9yZS5wdXQoe3Nv
cnRlZDogMTAsIHZhbHVlOiA1NTV9LCAxNikKK3N0b3JlLnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6
IDY2Nn0sIDE1KQordGVzdEZhclJhbmdlQ3Vyc29yOiB1cHBlciBib3VuZCBpcyB3ZWxsIG91dCBv
ZiByYW5nZSwgcmVzdWx0cyBhbHdheXMgdGhlIHNhbWUsIHdoZXRoZXIgb3BlbiBvciBjbG9zZWQK
K3N0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIGZh
bHNlKSwgMikKKworVGVzdGluZzogc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJv
dW5kKDcsIGZhbHNlKSwgMikKK1BBU1MgY3Vyc29yLmtleSBpcyAzCitQQVNTIGN1cnNvci52YWx1
ZS52YWx1ZSBpcyAzMzMKK3N0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51
cHBlckJvdW5kKDcsIHRydWUpLCAyKQorRE9ORQorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29y
KElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCitQQVNTIGN1cnNvci5rZXkgaXMg
MworUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgMzMzCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5D
dXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIpCitET05FCisKK1Rlc3Rp
bmc6IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIp
CitQQVNTIGN1cnNvci5rZXkgaXMgMworUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgMTExCitQ
QVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIDEKK3N0b3JlUmVxID0gaW5kZXgub3BlbkN1cnNvcihJ
REJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKQorRE9ORQorCitUZXN0aW5nOiBpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgdHJ1ZSksIDIpCitQQVNTIGN1
cnNvci5rZXkgaXMgMworUEFTUyBjdXJzb3IudmFsdWUudmFsdWUgaXMgMTExCitQQVNTIGN1cnNv
ci5wcmltYXJ5S2V5IGlzIDEKK3N0b3JlUmVxID0gaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlS
YW5nZS51cHBlckJvdW5kKDcsIGZhbHNlKSwgMikKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIGZhbHNlKSwgMikKK1BBU1MgY3Vy
c29yLmtleSBpcyAzCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIDEKK3N0b3JlUmVxID0gaW5k
ZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKQorRE9O
RQorCitUZXN0aW5nOiBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQo
NywgdHJ1ZSksIDIpCitQQVNTIGN1cnNvci5rZXkgaXMgMworUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyAxCitzdG9yZVJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCgzLCBmYWxzZSksIDIpCitET05FCisKK1Rlc3Rpbmc6IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIpCitQQVNTIGN1cnNvci5rZXkgaXMgMworUEFT
UyBjdXJzb3IudmFsdWUudmFsdWUgaXMgMzMzCitzdG9yZVJlcSA9IHN0b3JlLm9wZW5DdXJzb3Io
SURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikKK0RPTkUKKworVGVzdGluZzogc3Rv
cmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorUEFTUyBj
dXJzb3Iua2V5IGlzIDIKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIDIyMgorc3RvcmVSZXEg
PSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQor
RE9ORQorCitUZXN0aW5nOiBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQo
MywgZmFsc2UpLCAyKQorUEFTUyBjdXJzb3Iua2V5IGlzIDMKK1BBU1MgY3Vyc29yLnZhbHVlLnZh
bHVlIGlzIDExMQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAxCitzdG9yZVJlcSA9IGluZGV4
Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikKK0RPTkUKKwor
VGVzdGluZzogaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIHRydWUp
LCAyKQorUEFTUyBjdXJzb3Iua2V5IGlzIDIKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIDIy
MgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAyCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5LZXlD
dXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSksIDIpCitET05FCisKK1Rlc3Rp
bmc6IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCBmYWxzZSks
IDIpCitQQVNTIGN1cnNvci5rZXkgaXMgMworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAxCitz
dG9yZVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0
cnVlKSwgMikKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5n
ZS51cHBlckJvdW5kKDMsIHRydWUpLCAyKQorUEFTUyBjdXJzb3Iua2V5IGlzIDIKK1BBU1MgY3Vy
c29yLnByaW1hcnlLZXkgaXMgMgordGVzdE5vRHVwbGljYXRlOiB0aGVyZSBhcmUgMyB2YWx1ZXMs
IGJ1dCB3ZSBzaG91bGQgcmV0dXJuIGFsd2F5cyB0aGUgZmlyc3Qgb25lCitzdG9yZVJlcSA9IHN0
b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorRE9O
RQorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUs
IGZhbHNlKSwgMykKK1BBU1MgY3Vyc29yLmtleSBpcyAxNQorUEFTUyBjdXJzb3IudmFsdWUudmFs
dWUgaXMgNjY2CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIDE1CitzdG9yZVJlcSA9IGluZGV4
Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorRE9ORQor
CitUZXN0aW5nOiBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZh
bHNlKSwgMykKK1BBU1MgY3Vyc29yLmtleSBpcyAxMAorUEFTUyBjdXJzb3IudmFsdWUudmFsdWUg
aXMgNjY2CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIDE1CitzdG9yZVJlcSA9IGluZGV4Lm9w
ZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgxNSwgZmFsc2UpLCAzKQorRE9ORQor
CitUZXN0aW5nOiBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUs
IGZhbHNlKSwgMykKK1BBU1MgY3Vyc29yLmtleSBpcyAxMAorUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyAxNQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2
LW5vLWR1cGxpY2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JmYTk3OWNiZTU3Mjk2ZjA4NDY2
NGE1MjA0ZDA0M2RjMmViODQzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCkBAIC0wLDAgKzEsMTAg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1
cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
aW5kZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmFmZWQ5ZDEwMWY0OWQxYjE1MTIyOWM0ZGIxYTk0OGZjMTAwMTU0NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5k
ZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTgzIEBACitUZXN0
IEluZGV4ZWREQjogaXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdoIGFuIGluZGV4LCBza2lwcGlu
ZyBkdXBsaWNhdGVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsKK1BBU1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK0lEQkRhdGFiYXNl
RXhjZXB0aW9uID0gd2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbjsKK1BBU1MgSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCBp
cyBmYWxzZQorSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93
LndlYmtpdElEQlRyYW5zYWN0aW9uOworUEFTUyBJREJUcmFuc2FjdGlvbiA9PSBudWxsIGlzIGZh
bHNlCitJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJDdXJz
b3I7CitQQVNTIElEQkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCitJREJLZXlSYW5nZSA9IHdpbmRv
dy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7CitQQVNTIElEQktleVJh
bmdlID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQor
b3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK0ZpcnN0LCBhZGQgYWxsIG91
ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9i
amVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7City
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0
U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3Jl
RGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtl
eSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwg
b2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVj
dFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CitOb3cgY3JlYXRl
IHRoZSBpbmRleGVzLgorb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUs
IGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9y
ZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGlu
ZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtp
XS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwordGVz
dFByZXYoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCitvYmplY3RT
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitrZXlJbmRleCA9IDg7
CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcpLm9wZW5DdXJzb3IobnVsbCwg
SURCQ3Vyc29yLlBSRVYpOworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vy
c29yLmtleSBpcyA3MworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3NDAnCitQ
QVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdTYW0nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQg
aXMgNzMKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgp
Owora2V5SW5kZXgtLTsKKyAgPT4gNworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BB
U1MgY3Vyc29yLmtleSBpcyA3MworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3
MzQnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdSb24nCitQQVNTIGN1cnNvci52YWx1ZS5o
ZWlnaHQgaXMgNzMKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxODAKK2N1cnNvci5jb250
aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gNgorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3
LTIzLTc3MzknCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdKZWYnCitQQVNTIGN1cnNvci52
YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMjAKK2N1cnNv
ci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gNQorY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyAnMjM3LTIzLTc3MzgnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdMZW8nCitQQVNTIGN1
cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxODAK
K2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gNAorY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFy
eUtleSBpcyAnMjM3LTIzLTc3MzcnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdQYXQnCitQ
QVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBp
cyAxMDAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gMworY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3Iu
cHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzYnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdK
b2UnCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndl
aWdodCBpcyAxNTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4gMgorY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA2MAorUEFTUyBj
dXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzInCitQQVNTIGN1cnNvci52YWx1ZS5uYW1l
IGlzICdCb2InCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjAKK1BBU1MgY3Vyc29yLnZh
bHVlLndlaWdodCBpcyAxMjAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKKyAgPT4g
MQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBpcyA1OAor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzUnCitQQVNTIGN1cnNvci52YWx1
ZS5uYW1lIGlzICdTdWUnCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNTgKK1BBU1MgY3Vy
c29yLnZhbHVlLndlaWdodCBpcyAxMzAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsK
KyAgPT4gMAorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK1BBU1MgY3Vyc29yLmtleSBp
cyA1MgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzMnCitQQVNTIGN1cnNv
ci52YWx1ZS5uYW1lIGlzICdBbm4nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNTIKK1BB
U1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5k
ZXgtLTsKKyAgPT4gLTEKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitObyBjdXJzb3I6
IG51bGwKK1BBU1Mga2V5SW5kZXggaXMgLTEKK3Rlc3RQcmV2Tm9EdXBsaWNhdGUoKQorb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVj
dFN0b3JlTmFtZSk7CitrZXlJbmRleCA9IDg7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgo
J2hlaWdodCcpLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitrZXlJbmRleCAtPSAxCisgID0+IEVudGVy
aW5nIHdpdGgga2V5SW5kZXggPSA3CitQQVNTIGN1cnNvci5rZXkgaXMgNzMKK1BBU1MgY3Vyc29y
LnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM0JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAn
Um9uJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDczCitQQVNTIGN1cnNvci52YWx1ZS53
ZWlnaHQgaXMgMTgwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CitjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0Owora2V5SW5kZXggLT0gMzsKKyAgPT4gRW50ZXJpbmcgd2l0aCBr
ZXlJbmRleCA9IDMKK1BBU1MgY3Vyc29yLmtleSBpcyA2NQorUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyAnMjM3LTIzLTc3MzYnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdKb2UnCitQQVNT
IGN1cnNvci52YWx1ZS5oZWlnaHQgaXMgNjUKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAx
NTAKK2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CisgID0+IEVudGVyaW5nIHdpdGgga2V5SW5kZXggPSAyCitQQVNTIGN1cnNvci5r
ZXkgaXMgNjAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzMyJworUEFTUyBj
dXJzb3IudmFsdWUubmFtZSBpcyAnQm9iJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDYw
CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTIwCitjdXJzb3IuY29udGludWUoKTsKK2tl
eUluZGV4LS07CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICA9PiBFbnRlcmluZyB3
aXRoIGtleUluZGV4ID0gMQorUEFTUyBjdXJzb3Iua2V5IGlzIDU4CitQQVNTIGN1cnNvci5wcmlt
YXJ5S2V5IGlzICcyMzctMjMtNzczNScKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ1N1ZScK
K1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA1OAorUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0
IGlzIDEzMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgPT4gRW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9IDAKK1BBU1MgY3Vy
c29yLmtleSBpcyA1MgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzMnCitQ
QVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdBbm4nCitQQVNTIGN1cnNvci52YWx1ZS5oZWlnaHQg
aXMgNTIKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMTAKK2N1cnNvci5jb250aW51ZSgp
Owora2V5SW5kZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgID0+IEVudGVy
aW5nIHdpdGgga2V5SW5kZXggPSAtMQorTm8gY3Vyc29yOiBudWxsCitQQVNTIGtleUluZGV4IGlz
IC0xCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1w
cmV2LW5vLWR1cGxpY2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhN2NhYWRmODg2
MDM2ZjgzMDM1ZGQ2NDUyYjc2NTY0MDkzZjQyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0
bWwKQEAgLTAsMCArMSwxOTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0
ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVk
REIvdGVzdC90ZXN0X2luZGV4ZXMuaHRtbD9mb3JjZT0xCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwg
dGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorICAgIHZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBpdGVyYXRpbmcgYmFja3dh
cmRzIHRocm91Z2ggYW4gaW5kZXgsIHNraXBwaW5nIGR1cGxpY2F0ZXMiKTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIg
fHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIg
PT0gbnVsbCIpOworICAgIElEQkRhdGFiYXNlRXhjZXB0aW9uID0gZXZhbEFuZExvZygiSURCRGF0
YWJhc2VFeGNlcHRpb24gPSB3aW5kb3cuSURCRGF0YWJhc2VFeGNlcHRpb24gfHwgd2luZG93Lndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFi
YXNlRXhjZXB0aW9uID09IG51bGwiKTsKKyAgICBJREJUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
IklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJ
REJUcmFuc2FjdGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBu
dWxsIik7CisgICAgSURCQ3Vyc29yID0gZXZhbEFuZExvZygiSURCQ3Vyc29yID0gd2luZG93LklE
QkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURCQ3Vyc29yOyIpOworICAgIHNob3VsZEJlRmFsc2Uo
IklEQkN1cnNvciA9PSBudWxsIik7CisgICAgSURCS2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJL
ZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCS2V5UmFuZ2UgPT0gbnVsbCIpOworCisgICAgbmFt
ZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBvYmpl
Y3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAgIG9iamVjdFN0b3JlRGF0YSA9IFsKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYw
LCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTog
eyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdo
dDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6
ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAg
fSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIs
IGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
OCIsIHZhbHVlOiB7IG5hbWU6ICJMZW8iLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE4MCB9IH0sCisg
ICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzkiLCB2YWx1ZTogeyBuYW1lOiAiSmVmIiwgaGVpZ2h0
OiA2NSwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFs
dWU6IHsgbmFtZTogIlNhbSIsIGhlaWdodDogNzMsIHdlaWdodDogMTEwIH0gfSwKKyAgICBdOwor
CisgICAgaW5kZXhEYXRhID0gWworICAgICAgICB7IG5hbWU6ICJuYW1lIiwga2V5UGF0aDogIm5h
bWUiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAgICAgIHsgbmFtZTogImhlaWdo
dCIsIGtleVBhdGg6ICJoZWlnaHQiLCBvcHRpb25zOiB7IH0gfSwKKyAgICAgICAgeyBuYW1lOiAi
d2VpZ2h0Iiwga2V5UGF0aDogIndlaWdodCIsIG9wdGlvbnM6IHsgdW5pcXVlOiBmYWxzZSB9IH0K
KyAgICBdOworCisgICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydCA9IFsKKyAgICAgICAgeyBr
ZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWln
aHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1l
OiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIz
Ny0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIw
IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2Ui
LCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM4IiwgdmFsdWU6IHsgbmFtZTogIkxlbyIsIGhlaWdo
dDogNjUsIHdlaWdodDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczOSIsIHZh
bHVlOiB7IG5hbWU6ICJKZWYiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywg
d2VpZ2h0OiAxODAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFsdWU6IHsg
bmFtZTogIlNhbSIsIGhlaWdodDogNzMsIHdlaWdodDogMTEwIH0gfSwKKyAgICBdOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKworICAgIGRlYnVnKCJG
aXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOworICAgIGFkZGVk
RGF0YSA9IDA7CisgICAgZm9yIChpIGluIG9iamVjdFN0b3JlRGF0YSkgeworICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
W2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsiKTsKKyAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBpZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3Rv
cmVEYXRhLmxlbmd0aCkgeworICAgICAgICAgIGNyZWF0ZUluZGV4ZXMoKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gY3JlYXRlSW5kZXhlcygpCit7CisgICAgZGVi
dWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuIik7CisgICAgZm9yIChpIGluIGluZGV4RGF0YSkg
eworICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ld
Lm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Iik7Cisg
ICAgfQorCisKKyAgICB0ZXN0UHJldigpOworfQorCitmdW5jdGlvbiB0ZXN0UHJldigpIHsKKyAg
ICBkZWJ1ZygidGVzdFByZXYoKSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7
Iik7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDg7Iik7CisgICAgLy8g
Zmlyc3QgdHJ5IHdpdGgganVzdCBQUkVWCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJz
b3IuUFJFVik7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
ICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICIi
ICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0KTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICInIiArIG9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSArICInIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIiIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52
YWx1ZS5oZWlnaHQpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkg
eworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIiIgKyBv
YmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgICAgICBkZWJ1
ZygiICA9PiAiICsga2V5SW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZGVidWcoIk5vIGN1cnNvcjogIiArIGN1cnNvcik7CisgICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJhbnMub25jb21w
bGV0ZSA9IHRlc3RQcmV2Tm9EdXBsaWNhdGU7Cit9CisKK2Z1bmN0aW9uIHRlc3RQcmV2Tm9EdXBs
aWNhdGUoKSB7CisgICAgZGVidWcoInRlc3RQcmV2Tm9EdXBsaWNhdGUoKSIpOworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RT
dG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDg7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJ
REJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gOCkgeworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4IC09IDEiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA2KSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExv
Zygia2V5SW5kZXggLT0gMzsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgZGVidWcoIiAgPT4g
RW50ZXJpbmcgd2l0aCBrZXlJbmRleCA9ICIgKyBrZXlJbmRleCk7CisgICAgICAgIGlmIChjdXJz
b3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIiIgKyBvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQpOworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dFtrZXlJbmRleF0ua2V5ICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUubmFtZSIsICInIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUgKyAiJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQi
LCAiIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCk7
CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAiIiArIG9iamVjdFN0b3JlRGF0
YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJObyBjdXJzb3I6ICIgKyBjdXJzb3IpOworICAgICAgICAgICAgc2hv
dWxkQmUoImtleUluZGV4IiwgIi0xIik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rl
c3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJldi1u
by1kdXBsaWNhdGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
Y3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZmYyYzQ5ODQ0ZGIzZTA1
OTZlN2Q4MzhlNWI1Y2RjZThhNDE5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLmpzCkBA
IC0wLDAgKzEsMjM2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCIGJlaGF2aW9yIHdoZW4gaXRlcmF0aW5nIGJhY2t3YXJkcyB3aXRoIGFuZCB3aXRob3V0IE5P
X0RVUExJQ0FURSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworCisgICAgcHJlcGFyZURhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVE
YXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGV2YWxBbmRMb2coIm9wZW5yZXEgPSBp
bmRleGVkREIub3BlbignY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlJykiKTsKKyAgICBvcGVucmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVucmVxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5y
ZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScp
Iik7CisgICAgICAgIHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHZlcnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgICAgICAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICdzb3J0ZWQnKSIpOwor
ICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBsZXRlID0gcG9wdWxhdGVTdG9yZTsKKyAg
ICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwb3B1bGF0ZVN0b3JlKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4iKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KHtzb3J0ZWQ6IDMsIHZhbHVlOiAxMTF9LCAxKSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlLnB1dCh7c29ydGVkOiAyLCB2YWx1ZTogMjIyfSwgMikiKTsKKyAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMSwgdmFsdWU6IDMzM30sIDMpIik7CisgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KHtzb3J0ZWQ6IDEwLCB2YWx1ZTogNDQ0fSwgMTcpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KHtzb3J0ZWQ6IDEwLCB2YWx1ZTogNTU1fSwgMTYpIik7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtzb3J0ZWQ6IDEwLCB2YWx1ZTogNjY2fSwgMTUpIik7
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RGYXJSYW5nZUN1cnNvcl9jbG9zZWQ7Cit9CisK
KworZnVuY3Rpb24gdGVzdEZhclJhbmdlQ3Vyc29yX2Nsb3NlZCgpCit7CisgICAgZGVidWcoInRl
c3RGYXJSYW5nZUN1cnNvcjogdXBwZXIgYm91bmQgaXMgd2VsbCBvdXQgb2YgcmFuZ2UsIHJlc3Vs
dHMgYWx3YXlzIHRoZSBzYW1lLCB3aGV0aGVyIG9wZW4gb3IgY2xvc2VkIik7CisKKyAgICBydW5U
ZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDcsIGZhbHNlLCBJREJDdXJzb3IuUFJFViksCisg
ICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDMzMywgZXhwZWN0ZWRLZXk6IDN9KS5vbnN1Y2Nl
c3MgPQorICAgICAgICAgICAgICAgIHRlc3RGYXJSYW5nZUN1cnNvcl9vcGVuOworfQorCitmdW5j
dGlvbiB0ZXN0RmFyUmFuZ2VDdXJzb3Jfb3BlbigpCit7CisgICAgcnVuVGVzdChtYWtlT3BlbkN1
cnNvcigic3RvcmUiLCA3LCB0cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICB7IGV4
cGVjdGVkVmFsdWU6IDMzMywgZXhwZWN0ZWRLZXk6IDN9KS5vbnN1Y2Nlc3MgPQorICAgICAgICAg
ICAgICAgIHRlc3RGYXJSYW5nZUN1cnNvcl9pbmRleENsb3NlZDsKK30KKworZnVuY3Rpb24gdGVz
dEZhclJhbmdlQ3Vyc29yX2luZGV4Q2xvc2VkKCkKK3sKKyAgICAgICAgLy8gaGVyZSAnNycgcmVm
ZXJzIHRvIHRoZSAnc29ydGVkJyB2YWx1ZQorICAgICAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29y
KCJpbmRleCIsIDcsIGZhbHNlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICAgICAgeyBl
eHBlY3RlZFZhbHVlOiAxMTEsIGV4cGVjdGVkS2V5OiAzLCBleHBlY3RlZFByaW1hcnlLZXk6IDF9
KS5vbnN1Y2Nlc3MgPQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFyUmFuZ2VDdXJzb3JfaW5k
ZXhPcGVuOworfQorZnVuY3Rpb24gdGVzdEZhclJhbmdlQ3Vyc29yX2luZGV4T3BlbigpCit7Cisg
ICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigiaW5kZXgiLCA3LCB0cnVlLCBJREJDdXJzb3IuUFJF
ViksCisgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDExMSwgZXhwZWN0ZWRLZXk6IDMsIGV4
cGVjdGVkUHJpbWFyeUtleTogMX0pLm9uc3VjY2VzcyA9CisgICAgICAgICAgICAgICAgdGVzdEZh
clJhbmdlQ3Vyc29yX2luZGV4S2V5T3BlbjsKK30KKworZnVuY3Rpb24gdGVzdEZhclJhbmdlQ3Vy
c29yX2luZGV4S2V5T3BlbigpCit7CisgICAgLy8gaGVyZSAnNycgcmVmZXJzIHRvIHRoZSBzb3J0
ZWQgdmFsdWUKKyAgICBydW5UZXN0KG1ha2VPcGVuS2V5Q3Vyc29yKCJpbmRleCIsIDcsIGZhbHNl
LCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICB7IGV4cGVjdGVkS2V5OiAzLCBleHBlY3Rl
ZFByaW1hcnlLZXk6IDF9KS5vbnN1Y2Nlc3MgPQorICAgICAgICAgICAgICAgIHRlc3RGYXJSYW5n
ZUN1cnNvcl9pbmRleEtleUNsb3NlZDsKK30KKworZnVuY3Rpb24gdGVzdEZhclJhbmdlQ3Vyc29y
X2luZGV4S2V5Q2xvc2VkKCkKK3sKKyAgICBydW5UZXN0KG1ha2VPcGVuS2V5Q3Vyc29yKCJpbmRl
eCIsIDcsIHRydWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWRLZXk6
IDMsIGV4cGVjdGVkUHJpbWFyeUtleTogMX0pLm9uc3VjY2VzcyA9CisgICAgICAgICAgICAgICAg
dGVzdEJvdW5kYXJ5Q3Vyc29yX2Nsb3NlZDsKK30KKworZnVuY3Rpb24gdGVzdEJvdW5kYXJ5Q3Vy
c29yX2Nsb3NlZCgpCit7CisgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUiLCAzLCBm
YWxzZSwgSURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgeyBleHBlY3RlZFZhbHVlOiAzMzMs
IGV4cGVjdGVkS2V5OiAzfSkub25zdWNjZXNzID0KKyAgICAgICAgICAgICAgICB0ZXN0Qm91bmRh
cnlDdXJzb3Jfb3BlbjsKK307CisKK2Z1bmN0aW9uIHRlc3RCb3VuZGFyeUN1cnNvcl9vcGVuKCkK
K3sKKyAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDMsIHRydWUsIElEQkN1cnNv
ci5QUkVWKSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMjIyLCBleHBlY3RlZEtleTog
Mn0pLm9uc3VjY2VzcyA9CisgICAgICAgICAgICAgICAgdGVzdEJvdW5kYXJ5Q3Vyc29yX2luZGV4
Q2xvc2VkOworfQorCitmdW5jdGlvbiB0ZXN0Qm91bmRhcnlDdXJzb3JfaW5kZXhDbG9zZWQoKQor
eworICAgIC8vIGJ5IGluZGV4IHNvcnQgb3JkZXIsIHdlIHNob3VsZCByZXR1cm4gdGhlbSBpbiBh
IGRpZmZlcmVudCBvcmRlcgorICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoImluZGV4IiwgMywg
ZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMTEx
LCBleHBlY3RlZEtleTogMywgZXhwZWN0ZWRQcmltYXJ5S2V5OiAxfSkub25zdWNjZXNzID0KKyAg
ICAgICAgICAgICAgICB0ZXN0Qm91bmRhcnlDdXJzb3JfaW5kZXhPcGVuOworfQorCitmdW5jdGlv
biB0ZXN0Qm91bmRhcnlDdXJzb3JfaW5kZXhPcGVuKCkKK3sKKyAgICBydW5UZXN0KG1ha2VPcGVu
Q3Vyc29yKCJpbmRleCIsIDMsIHRydWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgIHsg
ZXhwZWN0ZWRWYWx1ZTogMjIyLCBleHBlY3RlZEtleTogMiwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAy
fSkub25zdWNjZXNzID0KKyAgICAgICAgICAgICAgICB0ZXN0Qm91bmRhcnlDdXJzb3JfaW5kZXhL
ZXlDbG9zZWQ7Cit9CisKK2Z1bmN0aW9uIHRlc3RCb3VuZGFyeUN1cnNvcl9pbmRleEtleUNsb3Nl
ZCgpCit7CisKKyAgICAvLyBub3cgdGhlIHZhbHVlIGRvZXNuJ3QgbWF0dGVyLCBqdXN0IHRoZSBw
cmltYXJ5IGtleQorICAgIHJ1blRlc3QobWFrZU9wZW5LZXlDdXJzb3IoImluZGV4IiwgMywgZmFs
c2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWRLZXk6IDMsIGV4cGVj
dGVkUHJpbWFyeUtleTogMX0pLm9uc3VjY2VzcyA9CisgICAgICAgICAgICAgICAgdGVzdEJvdW5k
YXJ5Q3Vyc29yX2luZGV4S2V5T3BlbjsKK30KKworZnVuY3Rpb24gdGVzdEJvdW5kYXJ5Q3Vyc29y
X2luZGV4S2V5T3BlbigpCit7CisgICAgcnVuVGVzdChtYWtlT3BlbktleUN1cnNvcigiaW5kZXgi
LCAzLCB0cnVlLCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICB7IGV4cGVjdGVkS2V5OiAy
LCBleHBlY3RlZFByaW1hcnlLZXk6IDJ9KS5vbnN1Y2Nlc3MgPQorICAgICAgICAgICAgICAgIHRl
c3ROb0R1cGxpY2F0ZV9jbG9zZWQ7Cit9CisKK2Z1bmN0aW9uIHRlc3ROb0R1cGxpY2F0ZV9jbG9z
ZWQoKQoreworICAgIGRlYnVnKCJ0ZXN0Tm9EdXBsaWNhdGU6IHRoZXJlIGFyZSAzIHZhbHVlcywg
YnV0IHdlIHNob3VsZCByZXR1cm4gYWx3YXlzIHRoZSBmaXJzdCBvbmUiKTsKKworICAgIC8vIFBS
RVZfTk9fRFVQTElDQVRFIGRvZXNuJ3QgcmVhbGx5IGFmZmVjdCBub24taW5kZXhlZAorICAgIC8v
IGN1cnNvcnMsIGJ1dCB3ZSBzaG91bGQgbWFrZSBzdXJlIHdlIGdldCB0aGUgcmlnaHQgb25lCisg
ICAgLy8gYW55d2F5CisgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigic3RvcmUiLCAxNSwgZmFs
c2UsIElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSksCisgICAgICAgICAgICB7IGV4cGVjdGVk
VmFsdWU6IDY2NiwgZXhwZWN0ZWRLZXk6IDE1LCBleHBlY3RlZFByaW1hcnlLZXk6IDE1IH0pCisg
ICAgICAgICAgICAgICAgLm9uc3VjY2VzcyA9IHRlc3ROb0R1cGxpY2F0ZV9vcGVuOworfQorCitm
dW5jdGlvbiB0ZXN0Tm9EdXBsaWNhdGVfb3BlbigpCit7CisgICAgLy8gc3RpbGwgdGhyZWUgdmFs
dWVzLCBidXQgbm93IHRoZSBpbmRleCBzYXlzIHdlIHNob3VsZCByZXR1cm4gdGhlCisgICAgLy8g
c2Vjb25kIG9uZQorICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoImluZGV4IiwgMTUsIGZhbHNl
LCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpLAorICAgICAgICAgICAgeyBleHBlY3RlZFZh
bHVlOiA2NjYsIGV4cGVjdGVkS2V5OiAxMCwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAxNX0pLm9uc3Vj
Y2VzcyA9IHRlc3ROb0R1cGxpY2F0ZV9pbmRleEtleUNsb3NlZDsKK30KKworCitmdW5jdGlvbiB0
ZXN0Tm9EdXBsaWNhdGVfaW5kZXhLZXlDbG9zZWQoKQoreworICAgIC8vIHNhbWUgYmVoYXZpb3Ig
YXMgYWJvdmUsIHdpdGhvdXQgYSB2YWx1ZQorICAgIHJ1blRlc3QobWFrZU9wZW5LZXlDdXJzb3Io
ImluZGV4IiwgMTUsIGZhbHNlLCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpLAorICAgICAg
ICAgICAgeyBleHBlY3RlZEtleTogMTAsIGV4cGVjdGVkUHJpbWFyeUtleTogMTV9KS5vbnN1Y2Nl
c3MgPQorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdDsKK30KKworCitmdW5jdGlvbiBtYWtl
T3BlbkN1cnNvcihvYmosIHVwcGVyQm91bmQsIG9wZW4sIGRpcmVjdGlvbikKK3sKKyAgICByZXR1
cm4gb2JqICsgIi5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoIiArIHVwcGVyQm91
bmQgKyAiLCAiICsKKyAgICAgICAgb3BlbiArICIpLCAiICsKKyAgICAgICAgICAgIGRpcmVjdGlv
biArICIpIjsKK30KKworZnVuY3Rpb24gbWFrZU9wZW5LZXlDdXJzb3Iob2JqLCB1cHBlckJvdW5k
LCBvcGVuLCBkaXJlY3Rpb24pCit7CisgICAgcmV0dXJuIG9iaiArICIub3BlbktleUN1cnNvcihJ
REJLZXlSYW5nZS51cHBlckJvdW5kKCIgKyB1cHBlckJvdW5kICsgIiwgIiArCisgICAgICAgIG9w
ZW4gKyAiKSwgIiArCisgICAgICAgICAgICBkaXJlY3Rpb24gKyAiKSI7Cit9CisKK2Z1bmN0aW9u
IHJ1blRlc3Qob3BlbkN1cnNvciwgZXhwKQoreworICAgIHRyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKTsKKworICAgIC8vIGV4cG9zZSB0aGVz
ZSBmb3IgY29kZSBpbiBvcGVuQ3Vyc29yCisgICAgc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKTsKKyAgICBpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOworICAgIHRyYW5zLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGRlYnVnKCJET05FIik7CisgICAgfTsKKworICAgIHZhciByZXN1bHQg
PSB7fTsKKworICAgIHZhciB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICAvLyBleHBvc2UgZm9yIGV2YWxBbmRMb2cKKyAgICAgICAgZXhwZWN0YXRpb24gPSBleHA7CisK
KyAgICAgICAgZGVidWcoIlxuVGVzdGluZzogIiArIG9wZW5DdXJzb3IpOworICAgICAgICBjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBpZiAoY3Vyc29yID09PSBudWxsKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJudWxsIGN1cnNvciIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBKU09OLnN0
cmluZ2lmeShleHBlY3RhdGlvbi5leHBlY3RlZEtleSkpOworICAgICAgICBpZiAoInZhbHVlIiBp
biBjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudmFsdWUiLCBK
U09OLnN0cmluZ2lmeShleHBlY3RhdGlvbi5leHBlY3RlZFZhbHVlKSk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAoImV4cGVjdGVkVmFsdWUiIGluIGV4cGVjdGF0aW9uKQorICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiVGVzdCBicm9rZW46IHNob3VsZG4ndCBoYXZlIGV4cGVjdGVkVmFsdWUi
KTsKKworICAgICAgICBpZiAoImV4cGVjdGVkUHJpbWFyeUtleSIgaW4gZXhwZWN0YXRpb24pIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsIEpTT04uc3RyaW5naWZ5
KGV4cGVjdGF0aW9uLmV4cGVjdGVkUHJpbWFyeUtleSkpOworICAgICAgICB9CisKKyAgICAgICAg
cmVzdWx0Lm9uc3VjY2VzcygpOworICAgIH07CisKKyAgICBzdG9yZVJlcSA9IGV2YWxBbmRMb2co
InN0b3JlUmVxID0gIiArIG9wZW5DdXJzb3IpOworICAgIHN0b3JlUmVxLm9uc3VjY2VzcyA9IHRl
c3RGdW5jdGlvbjsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137624</attachid>
            <date>2012-04-17 16:04:00 -0700</date>
            <delta_ts>2012-04-17 16:26:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-60746-20120417160359.patch</filename>
            <type>text/plain</type>
            <size>33702</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIyZTIzNWQ1MTcyNDU2
YTE5YWQzZDljN2YwYmRkMTBlMmJmMmJhMy4uMjc2ODViYzVmZmYxNjlkNjNlMjZjZTcyMzMwMmJl
YWU0OWVkMGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA0LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREIgY2hv
b3NlcyB3cm9uZyByZWNvcmQgb24gUFJFVl9OT19EVVBMSUNBVEUgaW5kZXggY3Vyc29yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDc0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgV2hlbiBpdGVyYXRpbmcgYmFj
a3dhcmRzIHdpdGggUFJFVl9OT19EVVBMSUNBVEUsIGtlZXAgd2Fsa2luZyBwYXN0CisgICAgICAg
IHRoZSAncHJldicga2V5IHVudGlsIGl0IGNoYW5nZXMsIHRoZW4gd2FsayBmb3J3YXJkIG9uZSB0
aW1lLiBUaGlzCisgICAgICAgIGNvdmVycyB0aGUgb2JqZWN0IHN0b3JlIGFuZCBpbmRleCBjYXNl
cy4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYt
bm8tZHVwbGljYXRlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDQtMTYgIEhh
amltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgaW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQgYW5kIGluc2VydGVkSW50b1RyZWUgc2hvdWxkIGJlIHVuaXRpZmVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAppbmRleCA4ZDU3MDIyNjA1N2JhOTIzZmQzZWIxZjRmZjJlM2QwZjk2
NGQ3MGRiLi42YTdlZDI4NGJhZWRkZGVhZmNmYWI3ODFhMTRkZjEwOWY5ODI5ZWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcApAQCAtMTAzOSwyNCArMTAzOSw0OCBAQCBib29sIEN1cnNvckltcGxD
b21tb246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXksIEl0ZXJhdG9yU3RhdGUg
bmV4dFN0YQogewogICAgIFJlZlB0cjxJREJLZXk+IHByZXZpb3VzS2V5ID0gbV9jdXJyZW50S2V5
OwogCisgICAgLy8gV2hlbiBpdGVyYXRpbmcgd2l0aCBQUkVWX05PX0RVUExJQ0FURSwgc3BlYyBy
ZXF1aXJlcyB0aGF0IHRoZQorICAgIC8vIHZhbHVlIHdlIHlpZWxkIGZvciBlYWNoIGtleSBpcyB0
aGUgZmlyc3QgZHVwbGljYXRlIGluIGZvcndhcmRzCisgICAgLy8gb3JkZXIuCisgICAgUmVmUHRy
PElEQktleT4gbGFzdER1cGxpY2F0ZUtleTsKKworICAgIGJvb2wgZm9yd2FyZCA9IG1fY3Vyc29y
T3B0aW9ucy5mb3J3YXJkOworCiAgICAgZm9yICg7OykgewogICAgICAgICBpZiAobmV4dFN0YXRl
ID09IFNlZWspIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkKKyAg
ICAgICAgICAgIGlmIChmb3J3YXJkKQogICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPm5leHQo
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5wcmV2KCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmV4dFN0YXRlID0gU2VlazsgLy8gZm9yIHN1
YnNlcXVlbnQgaXRlcmF0aW9ucwogCi0gICAgICAgIGlmICghbV9pdGVyYXRvci0+aXNWYWxpZCgp
KQorICAgICAgICBpZiAoIW1faXRlcmF0b3ItPmlzVmFsaWQoKSkgeworICAgICAgICAgICAgaWYg
KCFmb3J3YXJkICYmIGxhc3REdXBsaWNhdGVLZXkuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNlIHdlIGhpdCB0aGUgZW5kIG9mCisgICAg
ICAgICAgICAgICAgLy8gdGhlIGRhdGEuCisgICAgICAgICAgICAgICAgZm9yd2FyZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogCisgICAgICAgIC8vIFRoZSBpdGVyYXRvciB3aWxs
IGNvbnRhaW4gdmFsdWVzIGRlbGV0ZWQgZHVyaW5nIGl0ZXJhdGlvbi4KICAgICAgICAgVmVjdG9y
PGNoYXI+IHRyYXNoOwogICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmdldChtX2l0ZXJhdG9y
LT5rZXkoKSwgdHJhc2gpKQotICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKGlzUGFzdEJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAo
IWZvcndhcmQgJiYgbGFzdER1cGxpY2F0ZUtleS5nZXQoKSkgeworICAgICAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gd2FsayBmb3J3YXJkIGJlY2F1c2Ugbm93IHdlJ3JlIGJleW9uZCB0aGUKKyAg
ICAgICAgICAgICAgICAvLyBib3VuZHMgZGVmaW5lZCBieSB0aGUgY3Vyc29yLgorICAgICAgICAg
ICAgICAgIGZvcndhcmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChpc1Bhc3RCb3VuZHMoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghaGF2ZUVudGVyZWRSYW5nZSgpKQog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0xMDY3LDcgKzEwOTEsNyBAQCBib29sIEN1cnNvcklt
cGxDb21tb246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXksIEl0ZXJhdG9yU3Rh
dGUgbmV4dFN0YQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGtleSkgewot
ICAgICAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7CisgICAgICAgICAgICBp
ZiAoZm9yd2FyZCkgewogICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRLZXktPmlzTGVzc1Ro
YW4oa2V5KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9IGVs
c2UgewpAQCAtMTA3NiwxMiArMTEwMCwzNSBAQCBib29sIEN1cnNvckltcGxDb21tb246OmNvbnRp
bnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXksIEl0ZXJhdG9yU3RhdGUgbmV4dFN0YQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy51bmlx
dWUgJiYgbV9jdXJyZW50S2V5LT5pc0VxdWFsKHByZXZpb3VzS2V5LmdldCgpKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLnVuaXF1ZSkgeworCisg
ICAgICAgICAgICBpZiAobV9jdXJyZW50S2V5LT5pc0VxdWFsKHByZXZpb3VzS2V5LmdldCgpKSkg
eworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBhYmxlIHRvIHdhbGsgZm9y
d2FyZCBhbGwgdGhlIHdheQorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBwcmV2aW91cyBrZXku
CisgICAgICAgICAgICAgICAgQVNTRVJUKCFsYXN0RHVwbGljYXRlS2V5LmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFm
b3J3YXJkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFsYXN0RHVwbGljYXRlS2V5LmdldCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGxhc3REdXBsaWNhdGVLZXkgPSBtX2N1cnJlbnRLZXk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgICAgIC8vIFdlIG5lZWQgdG8gd2FsayBmb3J3YXJkIGJlY2F1c2Ugd2UgaGl0IHRoZSBi
b3VuZGFyeQorICAgICAgICAgICAgICAgIC8vIGJldHdlZW4ga2V5IHJhbmdlcy4KKyAgICAgICAg
ICAgICAgICBpZiAoIWxhc3REdXBsaWNhdGVLZXktPmlzRXF1YWwobV9jdXJyZW50S2V5LmdldCgp
KSkgeworICAgICAgICAgICAgICAgICAgICBmb3J3YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgQVNTRVJUKCFsYXN0RHVwbGljYXRlS2V5LmdldCgpIHx8IChmb3J3YXJkICYmIGxhc3RE
dXBsaWNhdGVLZXktPmlzRXF1YWwobV9jdXJyZW50S2V5LmdldCgpKSkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNjcyYTgxNTQ1N2FmYjY4ODgyMTlhZWJhYjI5NTczMzI1ZjJhODJk
OC4uYTc5MjM4N2JjMzBiNjU0NjE0NmEzOGM5ZTE0MGI3YWI2YmY0ZDI4NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEyLTA0LTEzICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREIgY2hvb3NlcyB3cm9uZyByZWNvcmQgb24gUFJFVl9OT19E
VVBMSUNBVEUgaW5kZXggY3Vyc29yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MDc0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisK
KyAgICAgICAgVGVzdCBmb3IgUFJFVl9OT19EVVBMSUNBVEUuCisKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLnR4dDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxp
Y2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZS5qczogQWRk
ZWQuCisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5vbnN1Y2Nlc3MudmVycmVxLm9u
c3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5vbnN1Y2Nlc3MpOgor
ICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKHBvcHVsYXRlU3RvcmUpOgorICAg
ICAgICAocnVuQWxsVGVzdHMpOgorICAgICAgICAod2FpdEZvcik6CisgICAgICAgIChjb21wbGV0
ZS5maXJlQ2FsbGJhY2spOgorICAgICAgICAoY29tcGxldGUpOgorICAgICAgICAodGVzdEZhclJh
bmdlQ3Vyc29yKToKKyAgICAgICAgKG1ha2VPcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKHJ1blRl
c3QudHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChydW5UZXN0LnRlc3RGdW5jdGlvbik6Cisg
ICAgICAgIChydW5UZXN0KToKKwogMjAxMi0wNC0xNiAgRGF2aWQgQmFyciAgPGRhdmlkYmFyckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3RhY2sgb3ZlcmZsb3cgaW4gQ1NTIHBhcnNlciBjYXVz
ZWQgYnkgcmVjdXJzaXZlIHN0eWxlc2hlZXQgaW1wb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWVjMTFlYjNiOTNjZTVkMDllMTA5MTAwMTk5MDRh
MDhmZDJmNTQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyNSBA
QAorVGVzdCBJbmRleGVkREIgYmVoYXZpb3Igd2hlbiBpdGVyYXRpbmcgYmFja3dhcmRzIHdpdGgg
YW5kIHdpdGhvdXQgTk9fRFVQTElDQVRFCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBz
ZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsK
KworCitvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1wcmV2LW5vLWR1cGxpY2F0ZScp
CitkYiA9IG9wZW5yZXEucmVzdWx0Cit2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykKK0RlbGV0
ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZScpCitzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnc29ydGVkJykKKworcG9wdWxhdGluZyBz
dG9yZS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK3N0b3JlLnB1
dCh7c29ydGVkOiAzLCB2YWx1ZTogMTExfSwgMSkKK3N0b3JlLnB1dCh7c29ydGVkOiAyLCB2YWx1
ZTogMjIyfSwgMikKK3N0b3JlLnB1dCh7c29ydGVkOiAxLCB2YWx1ZTogMzMzfSwgMykKK3N0b3Jl
LnB1dCh7c29ydGVkOiAxMCwgdmFsdWU6IDQ0NH0sIDE3KQorc3RvcmUucHV0KHtzb3J0ZWQ6IDEw
LCB2YWx1ZTogNTU1fSwgMTYpCitzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA2NjZ9LCAx
NSkKK3Rlc3RGYXJSYW5nZUN1cnNvcjogdXBwZXIgYm91bmQgaXMgd2VsbCBvdXQgb2YgcmFuZ2Us
IHJlc3VsdHMgYWx3YXlzIHRoZSBzYW1lLCB3aGV0aGVyIG9wZW4gb3IgY2xvc2VkCitzdG9yZVJl
cSA9IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIp
CisKK1Rlc3Rpbmc6IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBm
YWxzZSksIDIpCitQQVNTIGN1cnNvci5rZXkgaXMgMworUEFTUyBjdXJzb3IudmFsdWUudmFsdWUg
aXMgMzMzCitzdG9yZVJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCg3LCB0cnVlKSwgMikKK0RPTkUKKworVGVzdGluZzogc3RvcmUub3BlbkN1cnNvcihJREJLZXlS
YW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKQorUEFTUyBjdXJzb3Iua2V5IGlzIDMKK1BBU1Mg
Y3Vyc29yLnZhbHVlLnZhbHVlIGlzIDMzMworc3RvcmVSZXEgPSBpbmRleC5vcGVuQ3Vyc29yKElE
QktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQorRE9ORQorCitUZXN0aW5nOiBpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoNywgZmFsc2UpLCAyKQorUEFTUyBj
dXJzb3Iua2V5IGlzIDMKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIDExMQorUEFTUyBjdXJz
b3IucHJpbWFyeUtleSBpcyAxCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFu
Z2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikKK0RPTkUKKworVGVzdGluZzogaW5kZXgub3BlbkN1
cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUpLCAyKQorUEFTUyBjdXJzb3Iua2V5
IGlzIDMKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIDExMQorUEFTUyBjdXJzb3IucHJpbWFy
eUtleSBpcyAxCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBw
ZXJCb3VuZCg3LCBmYWxzZSksIDIpCitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5LZXlDdXJz
b3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCBmYWxzZSksIDIpCitQQVNTIGN1cnNvci5rZXkg
aXMgMworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAxCitzdG9yZVJlcSA9IGluZGV4Lm9wZW5L
ZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg3LCB0cnVlKSwgMikKK0RPTkUKKworVGVz
dGluZzogaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDcsIHRydWUp
LCAyKQorUEFTUyBjdXJzb3Iua2V5IGlzIDMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgMQor
c3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFs
c2UpLCAyKQorRE9ORQorCitUZXN0aW5nOiBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVw
cGVyQm91bmQoMywgZmFsc2UpLCAyKQorUEFTUyBjdXJzb3Iua2V5IGlzIDMKK1BBU1MgY3Vyc29y
LnZhbHVlLnZhbHVlIGlzIDMzMworc3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCitET05FCisKK1Rlc3Rpbmc6IHN0b3JlLm9wZW5D
dXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikKK1BBU1MgY3Vyc29yLmtl
eSBpcyAyCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyAyMjIKK3N0b3JlUmVxID0gaW5kZXgu
b3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNlKSwgMikKK0RPTkUKKwor
VGVzdGluZzogaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDMsIGZhbHNl
KSwgMikKK1BBU1MgY3Vyc29yLmtleSBpcyAzCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyAx
MTEKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgMQorc3RvcmVSZXEgPSBpbmRleC5vcGVuQ3Vy
c29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIpCitET05FCisKK1Rlc3Rpbmc6
IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgzLCB0cnVlKSwgMikKK1BB
U1MgY3Vyc29yLmtleSBpcyAyCitQQVNTIGN1cnNvci52YWx1ZS52YWx1ZSBpcyAyMjIKK1BBU1Mg
Y3Vyc29yLnByaW1hcnlLZXkgaXMgMgorc3RvcmVSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElE
QktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorRE9ORQorCitUZXN0aW5nOiBpbmRl
eC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgZmFsc2UpLCAyKQorUEFT
UyBjdXJzb3Iua2V5IGlzIDMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgMQorc3RvcmVSZXEg
PSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMywgdHJ1ZSksIDIp
CitET05FCisKK1Rlc3Rpbmc6IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJC
b3VuZCgzLCB0cnVlKSwgMikKK1BBU1MgY3Vyc29yLmtleSBpcyAyCitQQVNTIGN1cnNvci5wcmlt
YXJ5S2V5IGlzIDIKK3Rlc3ROb0R1cGxpY2F0ZTogdGhlcmUgYXJlIDMgdmFsdWVzLCBidXQgd2Ug
c2hvdWxkIHJldHVybiBhbHdheXMgdGhlIGZpcnN0IG9uZQorc3RvcmVSZXEgPSBzdG9yZS5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKK0RPTkUKKworVGVz
dGluZzogc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDE1LCBmYWxzZSks
IDMpCitQQVNTIGN1cnNvci5rZXkgaXMgMTUKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIDY2
NgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAxNQorc3RvcmVSZXEgPSBpbmRleC5vcGVuQ3Vy
c29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKK0RPTkUKKworVGVzdGlu
ZzogaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDE1LCBmYWxzZSksIDMp
CitQQVNTIGN1cnNvci5rZXkgaXMgMTAKK1BBU1MgY3Vyc29yLnZhbHVlLnZhbHVlIGlzIDY2Ngor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAxNQorc3RvcmVSZXEgPSBpbmRleC5vcGVuS2V5Q3Vy
c29yKElEQktleVJhbmdlLnVwcGVyQm91bmQoMTUsIGZhbHNlKSwgMykKK0RPTkUKKworVGVzdGlu
ZzogaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKDE1LCBmYWxzZSks
IDMpCitQQVNTIGN1cnNvci5rZXkgaXMgMTAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgMTUK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBs
aWNhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmV2LW5v
LWR1cGxpY2F0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiZmE5NzljYmU1NzI5NmYwODQ2NjRhNTIwNGQw
NDNkYzJlYjg0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItcHJl
di1uby1kdXBsaWNhdGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXBy
ZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhZmVkOWQxMDFmNDlkMWIxNTEyMjljNGRiMWE5NDhmYzEwMDE1NDcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYt
bm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4MyBAQAorVGVzdCBJbmRleGVk
REI6IGl0ZXJhdGluZyBiYWNrd2FyZHMgdGhyb3VnaCBhbiBpbmRleCwgc2tpcHBpbmcgZHVwbGlj
YXRlcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitJREJEYXRhYmFzZUV4Y2VwdGlv
biA9IHdpbmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb247CitQQVNTIElEQkRhdGFiYXNlRXhjZXB0aW9uID09IG51bGwgaXMgZmFsc2UK
K0lEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJ
REJUcmFuc2FjdGlvbjsKK1BBU1MgSURCVHJhbnNhY3Rpb24gPT0gbnVsbCBpcyBmYWxzZQorSURC
Q3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURCQ3Vyc29yOworUEFT
UyBJREJDdXJzb3IgPT0gbnVsbCBpcyBmYWxzZQorSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5
UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlOworUEFTUyBJREJLZXlSYW5nZSA9PSBu
dWxsIGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKK29wZW5TdWNj
ZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0
byB0aGUgb2JqZWN0IHN0b3JlLgorcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9y
ZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5r
ZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUs
IG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmpl
Y3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0
YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0u
dmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworcmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0
b3JlRGF0YVtpXS5rZXkpOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURh
dGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworTm93IGNyZWF0ZSB0aGUgaW5k
ZXhlcy4KK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERh
dGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOworb2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFb
aV0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwg
aW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK3Rlc3RQcmV2KCkK
K3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKQorb2JqZWN0U3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwora2V5SW5kZXggPSA4OworcmVxdWVz
dCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNv
ci5QUkVWKTsKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNTIGN1cnNvci5rZXkg
aXMgNzMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzQwJworUEFTUyBjdXJz
b3IudmFsdWUubmFtZSBpcyAnU2FtJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDczCitQ
QVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTEwCitjdXJzb3IuY29udGludWUoKTsKK2tleUlu
ZGV4LS07CisgID0+IDcKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNTIGN1cnNv
ci5rZXkgaXMgNzMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM0JworUEFT
UyBjdXJzb3IudmFsdWUubmFtZSBpcyAnUm9uJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlz
IDczCitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTgwCitjdXJzb3IuY29udGludWUoKTsK
K2tleUluZGV4LS07CisgID0+IDYKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNT
IGN1cnNvci5rZXkgaXMgNjUKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM5
JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnSmVmJworUEFTUyBjdXJzb3IudmFsdWUuaGVp
Z2h0IGlzIDY1CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTIwCitjdXJzb3IuY29udGlu
dWUoKTsKK2tleUluZGV4LS07CisgID0+IDUKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CitQQVNTIGN1cnNvci5rZXkgaXMgNjUKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0y
My03NzM4JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnTGVvJworUEFTUyBjdXJzb3IudmFs
dWUuaGVpZ2h0IGlzIDY1CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTgwCitjdXJzb3Iu
Y29udGludWUoKTsKK2tleUluZGV4LS07CisgID0+IDQKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CitQQVNTIGN1cnNvci5rZXkgaXMgNjUKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMg
JzIzNy0yMy03NzM3JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnUGF0JworUEFTUyBjdXJz
b3IudmFsdWUuaGVpZ2h0IGlzIDY1CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTAwCitj
dXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CisgID0+IDMKK2N1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CitQQVNTIGN1cnNvci5rZXkgaXMgNjUKK1BBU1MgY3Vyc29yLnByaW1hcnlL
ZXkgaXMgJzIzNy0yMy03NzM2JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnSm9lJworUEFT
UyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDY1CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMg
MTUwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CisgID0+IDIKK2N1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNTIGN1cnNvci5rZXkgaXMgNjAKK1BBU1MgY3Vyc29yLnBy
aW1hcnlLZXkgaXMgJzIzNy0yMy03NzMyJworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnQm9i
JworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDYwCitQQVNTIGN1cnNvci52YWx1ZS53ZWln
aHQgaXMgMTIwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CisgID0+IDEKK2N1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNTIGN1cnNvci5rZXkgaXMgNTgKK1BBU1MgY3Vy
c29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM1JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBp
cyAnU3VlJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDU4CitQQVNTIGN1cnNvci52YWx1
ZS53ZWlnaHQgaXMgMTMwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07CisgID0+IDAK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitQQVNTIGN1cnNvci5rZXkgaXMgNTIKK1BB
U1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzMzJworUEFTUyBjdXJzb3IudmFsdWUu
bmFtZSBpcyAnQW5uJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDUyCitQQVNTIGN1cnNv
ci52YWx1ZS53ZWlnaHQgaXMgMTEwCitjdXJzb3IuY29udGludWUoKTsKK2tleUluZGV4LS07Cisg
ID0+IC0xCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworTm8gY3Vyc29yOiBudWxsCitQ
QVNTIGtleUluZGV4IGlzIC0xCit0ZXN0UHJldk5vRHVwbGljYXRlKCkKK29iamVjdFN0b3JlID0g
ZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpOwora2V5SW5kZXggPSA4OworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQn
KS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSk7CitjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0Owora2V5SW5kZXggLT0gMQorICA9PiBFbnRlcmluZyB3aXRo
IGtleUluZGV4ID0gNworUEFTUyBjdXJzb3Iua2V5IGlzIDczCitQQVNTIGN1cnNvci5wcmltYXJ5
S2V5IGlzICcyMzctMjMtNzczNCcKK1BBU1MgY3Vyc29yLnZhbHVlLm5hbWUgaXMgJ1JvbicKK1BB
U1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA3MworUEFTUyBjdXJzb3IudmFsdWUud2VpZ2h0IGlz
IDE4MAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0tOworY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKK2tleUluZGV4IC09IDM7CisgID0+IEVudGVyaW5nIHdpdGgga2V5SW5kZXgg
PSAzCitQQVNTIGN1cnNvci5rZXkgaXMgNjUKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIz
Ny0yMy03NzM2JworUEFTUyBjdXJzb3IudmFsdWUubmFtZSBpcyAnSm9lJworUEFTUyBjdXJzb3Iu
dmFsdWUuaGVpZ2h0IGlzIDY1CitQQVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTUwCitjdXJz
b3IuY29udGludWUoKTsKK2tleUluZGV4LS07CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OworICA9PiBFbnRlcmluZyB3aXRoIGtleUluZGV4ID0gMgorUEFTUyBjdXJzb3Iua2V5IGlzIDYw
CitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczMicKK1BBU1MgY3Vyc29yLnZh
bHVlLm5hbWUgaXMgJ0JvYicKK1BBU1MgY3Vyc29yLnZhbHVlLmhlaWdodCBpcyA2MAorUEFTUyBj
dXJzb3IudmFsdWUud2VpZ2h0IGlzIDEyMAorY3Vyc29yLmNvbnRpbnVlKCk7CitrZXlJbmRleC0t
OworY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgPT4gRW50ZXJpbmcgd2l0aCBrZXlJ
bmRleCA9IDEKK1BBU1MgY3Vyc29yLmtleSBpcyA1OAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyAnMjM3LTIzLTc3MzUnCitQQVNTIGN1cnNvci52YWx1ZS5uYW1lIGlzICdTdWUnCitQQVNTIGN1
cnNvci52YWx1ZS5oZWlnaHQgaXMgNTgKK1BBU1MgY3Vyc29yLnZhbHVlLndlaWdodCBpcyAxMzAK
K2N1cnNvci5jb250aW51ZSgpOwora2V5SW5kZXgtLTsKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CisgID0+IEVudGVyaW5nIHdpdGgga2V5SW5kZXggPSAwCitQQVNTIGN1cnNvci5rZXkg
aXMgNTIKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzMzJworUEFTUyBjdXJz
b3IudmFsdWUubmFtZSBpcyAnQW5uJworUEFTUyBjdXJzb3IudmFsdWUuaGVpZ2h0IGlzIDUyCitQ
QVNTIGN1cnNvci52YWx1ZS53ZWlnaHQgaXMgMTEwCitjdXJzb3IuY29udGludWUoKTsKK2tleUlu
ZGV4LS07CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICA9PiBFbnRlcmluZyB3aXRo
IGtleUluZGV4ID0gLTEKK05vIGN1cnNvcjogbnVsbAorUEFTUyBrZXlJbmRleCBpcyAtMQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1k
dXBsaWNhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5k
ZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjEyMWExMzY3ZjhmNjllNDJl
MzEwMTgzOTliYjc0ZGUyMmY3OGRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCkBAIC0w
LDAgKzEsMTkzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9pbmRleGVzLmh0bWw/Zm9yY2U9MQorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Cisg
ICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgor
LS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgdmFyIGpzVGVzdElz
QXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdoIGFuIGluZGV4LCBz
a2lwcGluZyBkdXBsaWNhdGVzIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93Lmlu
ZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKyAgICBJREJEYXRh
YmFzZUV4Y2VwdGlvbiA9IGV2YWxBbmRMb2coIklEQkRhdGFiYXNlRXhjZXB0aW9uID0gd2luZG93
LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIik7
CisgICAgSURCVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJJREJUcmFuc2FjdGlvbiA9IHdpbmRv
dy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb247Iik7CisgICAg
c2hvdWxkQmVGYWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOworICAgIElEQkN1cnNvciA9
IGV2YWxBbmRMb2coIklEQkN1cnNvciA9IHdpbmRvdy5JREJDdXJzb3IgfHwgd2luZG93LndlYmtp
dElEQkN1cnNvcjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJDdXJzb3IgPT0gbnVsbCIpOwor
ICAgIElEQktleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5
UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlOyIpOworICAgIHNob3VsZEJlRmFsc2Uo
IklEQktleVJhbmdlID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgb2JqZWN0U3RvcmVOYW1lID0gIlBlb3BsZSI7
CisKKyAgICBvYmplY3RTdG9yZURhdGEgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIi
LCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAg
ICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdodDog
NTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVl
OiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2Vp
Z2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFt
ZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIy
MzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEw
MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzgiLCB2YWx1ZTogeyBuYW1lOiAiTGVv
IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxODAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03
NzM5IiwgdmFsdWU6IHsgbmFtZTogIkplZiIsIGhlaWdodDogNjUsIHdlaWdodDogMTIwIH0gfSwK
KyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzc0MCIsIHZhbHVlOiB7IG5hbWU6ICJTYW0iLCBoZWln
aHQ6IDczLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgXTsKKworICAgIGluZGV4RGF0YSA9IFsKKyAg
ICAgICAgeyBuYW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlxdWU6
IHRydWUgfSB9LAorICAgICAgICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwg
b3B0aW9uczogeyB9IH0sCisgICAgICAgIHsgbmFtZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWln
aHQiLCBvcHRpb25zOiB7IHVuaXF1ZTogZmFsc2UgfSB9CisgICAgXTsKKworICAgIG9iamVjdFN0
b3JlRGF0YUhlaWdodFNvcnQgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1
ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7
IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdl
aWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5h
bWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAi
MjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAx
NTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBh
dCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczOCIsIHZhbHVlOiB7IG5hbWU6ICJMZW8iLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE4MCB9IH0s
CisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzkiLCB2YWx1ZTogeyBuYW1lOiAiSmVmIiwgaGVp
Z2h0OiA2NSwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0Iiwg
dmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfSwKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzc0MCIsIHZhbHVlOiB7IG5hbWU6ICJTYW0iLCBoZWlnaHQ6IDcz
LCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgXTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVj
dFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9i
amVjdFN0b3JlTmFtZSk7Iik7CisKKyAgICBkZWJ1ZygiRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEg
dG8gdGhlIG9iamVjdCBzdG9yZS4iKTsKKyAgICBhZGRlZERhdGEgPSAwOworICAgIGZvciAoaSBp
biBvYmplY3RTdG9yZURhdGEpIHsKKyAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7Iik7CisgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpCisgICAg
ICB7CisgICAgICAgIGlmICgrK2FkZGVkRGF0YSA9PSBvYmplY3RTdG9yZURhdGEubGVuZ3RoKSB7
CisgICAgICAgICAgY3JlYXRlSW5kZXhlcygpOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
fQorCitmdW5jdGlvbiBjcmVhdGVJbmRleGVzKCkKK3sKKyAgICBkZWJ1ZygiTm93IGNyZWF0ZSB0
aGUgaW5kZXhlcy4iKTsKKyAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7CisgICAgICBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRh
W2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsiKTsKKyAgICB9CisKKworICAgIHRl
c3RQcmV2KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQcmV2KCkKK3sKKyAgICBkZWJ1ZygidGVzdFBy
ZXYoKSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihv
YmplY3RTdG9yZU5hbWUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDg7Iik7CisgICAgLy8gZmlyc3QgdHJ5IHdpdGgg
anVzdCBQUkVWCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVik7Iik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChj
dXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIiIgKyBvYmplY3RT
dG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0
U29ydFtrZXlJbmRleF0ua2V5ICsgIiciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUubmFtZSIsICInIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUgKyAiJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWln
aHQiLCAiIiArIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdo
dCk7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAiIiArIG9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgID0+ICIg
KyBrZXlJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkZWJ1
ZygiTm8gY3Vyc29yOiAiICsgY3Vyc29yKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICItMSIpOworICAgICAgICB9CisgICAgfTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVz
dFByZXZOb0R1cGxpY2F0ZTsKK30KKworZnVuY3Rpb24gdGVzdFByZXZOb0R1cGxpY2F0ZSgpCit7
CisgICAgZGVidWcoInRlc3RQcmV2Tm9EdXBsaWNhdGUoKSIpOworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUp
Lm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAga2V5SW5kZXggPSBldmFsQW5k
TG9nKCJrZXlJbmRleCA9IDg7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3Iu
UFJFVl9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKKyAgICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA4KSB7CisgICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygia2V5SW5kZXggLT0gMSIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGtleUluZGV4ID09IDYpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleCAtPSAzOyIpOworICAgICAgICAgICAgfQorICAgICAgICBkZWJ1ZygiICA9PiBFbnRl
cmluZyB3aXRoIGtleUluZGV4ID0gIiArIGtleUluZGV4KTsKKyAgICAgICAgaWYgKGN1cnNvcikg
eworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiIiArIG9iamVjdFN0b3JlRGF0
YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCk7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS5rZXkgKyAiJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5u
YW1lIiwgIiciICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSArICInIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICIi
ICsgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0KTsKKyAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICIiICsgb2JqZWN0U3RvcmVEYXRhSGVp
Z2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZGVidWcoIk5vIGN1cnNvcjogIiArIGN1cnNvcik7CisgICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisgICAgfQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgp
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmV2LW5vLWR1
cGxpY2F0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3ItcHJldi1uby1kdXBsaWNhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmZjJjNDk4NDRkYjNlMDU5NmU3
ZDgzOGU1YjVjZGNlOGE0MTkxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJldi1uby1kdXBsaWNhdGUuanMKQEAgLTAs
MCArMSwyMzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
YmVoYXZpb3Igd2hlbiBpdGVyYXRpbmcgYmFja3dhcmRzIHdpdGggYW5kIHdpdGhvdXQgTk9fRFVQ
TElDQVRFIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBwcmVwYXJlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFi
YXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4
ZWREQi5vcGVuKCdjdXJzb3ItcHJldi1uby1kdXBsaWNhdGUnKSIpOworICAgIG9wZW5yZXEub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5yZXEub25zdWNjZXNzID0g
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSBvcGVucmVxLnJlc3Vs
dCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
KyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICAgICAgICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3NvcnRlZCcpIik7CisgICAg
ICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAg
ICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOworICAgIGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
OyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoe3NvcnRlZDogMywgdmFsdWU6IDExMX0sIDEpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KHtzb3J0ZWQ6IDIsIHZhbHVlOiAyMjJ9LCAyKSIpOworICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCh7c29ydGVkOiAxLCB2YWx1ZTogMzMzfSwgMykiKTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA0NDR9LCAxNykiKTsKKyAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA1NTV9LCAxNikiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoe3NvcnRlZDogMTAsIHZhbHVlOiA2NjZ9LCAxNSkiKTsKKyAg
ICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEZhclJhbmdlQ3Vyc29yX2Nsb3NlZDsKK30KKworCitm
dW5jdGlvbiB0ZXN0RmFyUmFuZ2VDdXJzb3JfY2xvc2VkKCkKK3sKKyAgICBkZWJ1ZygidGVzdEZh
clJhbmdlQ3Vyc29yOiB1cHBlciBib3VuZCBpcyB3ZWxsIG91dCBvZiByYW5nZSwgcmVzdWx0cyBh
bHdheXMgdGhlIHNhbWUsIHdoZXRoZXIgb3BlbiBvciBjbG9zZWQiKTsKKworICAgIHJ1blRlc3Qo
bWFrZU9wZW5DdXJzb3IoInN0b3JlIiwgNywgZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAg
ICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMzMzLCBleHBlY3RlZEtleTogM30pLm9uc3VjY2VzcyA9
CisgICAgICAgICAgICAgICAgdGVzdEZhclJhbmdlQ3Vyc29yX29wZW47Cit9CisKK2Z1bmN0aW9u
IHRlc3RGYXJSYW5nZUN1cnNvcl9vcGVuKCkKK3sKKyAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29y
KCJzdG9yZSIsIDcsIHRydWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgIHsgZXhwZWN0
ZWRWYWx1ZTogMzMzLCBleHBlY3RlZEtleTogM30pLm9uc3VjY2VzcyA9CisgICAgICAgICAgICAg
ICAgdGVzdEZhclJhbmdlQ3Vyc29yX2luZGV4Q2xvc2VkOworfQorCitmdW5jdGlvbiB0ZXN0RmFy
UmFuZ2VDdXJzb3JfaW5kZXhDbG9zZWQoKQoreworICAgICAgICAvLyBoZXJlICc3JyByZWZlcnMg
dG8gdGhlICdzb3J0ZWQnIHZhbHVlCisgICAgICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoImlu
ZGV4IiwgNywgZmFsc2UsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgICAgICB7IGV4cGVj
dGVkVmFsdWU6IDExMSwgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVkUHJpbWFyeUtleTogMX0pLm9u
c3VjY2VzcyA9CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYXJSYW5nZUN1cnNvcl9pbmRleE9w
ZW47Cit9CitmdW5jdGlvbiB0ZXN0RmFyUmFuZ2VDdXJzb3JfaW5kZXhPcGVuKCkKK3sKKyAgICBy
dW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJpbmRleCIsIDcsIHRydWUsIElEQkN1cnNvci5QUkVWKSwK
KyAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1ZTogMTExLCBleHBlY3RlZEtleTogMywgZXhwZWN0
ZWRQcmltYXJ5S2V5OiAxfSkub25zdWNjZXNzID0KKyAgICAgICAgICAgICAgICB0ZXN0RmFyUmFu
Z2VDdXJzb3JfaW5kZXhLZXlPcGVuOworfQorCitmdW5jdGlvbiB0ZXN0RmFyUmFuZ2VDdXJzb3Jf
aW5kZXhLZXlPcGVuKCkKK3sKKyAgICAvLyBoZXJlICc3JyByZWZlcnMgdG8gdGhlIHNvcnRlZCB2
YWx1ZQorICAgIHJ1blRlc3QobWFrZU9wZW5LZXlDdXJzb3IoImluZGV4IiwgNywgZmFsc2UsIElE
QkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWRLZXk6IDMsIGV4cGVjdGVkUHJp
bWFyeUtleTogMX0pLm9uc3VjY2VzcyA9CisgICAgICAgICAgICAgICAgdGVzdEZhclJhbmdlQ3Vy
c29yX2luZGV4S2V5Q2xvc2VkOworfQorCitmdW5jdGlvbiB0ZXN0RmFyUmFuZ2VDdXJzb3JfaW5k
ZXhLZXlDbG9zZWQoKQoreworICAgIHJ1blRlc3QobWFrZU9wZW5LZXlDdXJzb3IoImluZGV4Iiwg
NywgdHJ1ZSwgSURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgeyBleHBlY3RlZEtleTogMywg
ZXhwZWN0ZWRQcmltYXJ5S2V5OiAxfSkub25zdWNjZXNzID0KKyAgICAgICAgICAgICAgICB0ZXN0
Qm91bmRhcnlDdXJzb3JfY2xvc2VkOworfQorCitmdW5jdGlvbiB0ZXN0Qm91bmRhcnlDdXJzb3Jf
Y2xvc2VkKCkKK3sKKyAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDMsIGZhbHNl
LCBJREJDdXJzb3IuUFJFViksCisgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6IDMzMywgZXhw
ZWN0ZWRLZXk6IDN9KS5vbnN1Y2Nlc3MgPQorICAgICAgICAgICAgICAgIHRlc3RCb3VuZGFyeUN1
cnNvcl9vcGVuOworfTsKKworZnVuY3Rpb24gdGVzdEJvdW5kYXJ5Q3Vyc29yX29wZW4oKQorewor
ICAgIHJ1blRlc3QobWFrZU9wZW5DdXJzb3IoInN0b3JlIiwgMywgdHJ1ZSwgSURCQ3Vyc29yLlBS
RVYpLAorICAgICAgICAgICAgeyBleHBlY3RlZFZhbHVlOiAyMjIsIGV4cGVjdGVkS2V5OiAyfSku
b25zdWNjZXNzID0KKyAgICAgICAgICAgICAgICB0ZXN0Qm91bmRhcnlDdXJzb3JfaW5kZXhDbG9z
ZWQ7Cit9CisKK2Z1bmN0aW9uIHRlc3RCb3VuZGFyeUN1cnNvcl9pbmRleENsb3NlZCgpCit7Cisg
ICAgLy8gYnkgaW5kZXggc29ydCBvcmRlciwgd2Ugc2hvdWxkIHJldHVybiB0aGVtIGluIGEgZGlm
ZmVyZW50IG9yZGVyCisgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigiaW5kZXgiLCAzLCBmYWxz
ZSwgSURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgeyBleHBlY3RlZFZhbHVlOiAxMTEsIGV4
cGVjdGVkS2V5OiAzLCBleHBlY3RlZFByaW1hcnlLZXk6IDF9KS5vbnN1Y2Nlc3MgPQorICAgICAg
ICAgICAgICAgIHRlc3RCb3VuZGFyeUN1cnNvcl9pbmRleE9wZW47Cit9CisKK2Z1bmN0aW9uIHRl
c3RCb3VuZGFyeUN1cnNvcl9pbmRleE9wZW4oKQoreworICAgIHJ1blRlc3QobWFrZU9wZW5DdXJz
b3IoImluZGV4IiwgMywgdHJ1ZSwgSURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgeyBleHBl
Y3RlZFZhbHVlOiAyMjIsIGV4cGVjdGVkS2V5OiAyLCBleHBlY3RlZFByaW1hcnlLZXk6IDJ9KS5v
bnN1Y2Nlc3MgPQorICAgICAgICAgICAgICAgIHRlc3RCb3VuZGFyeUN1cnNvcl9pbmRleEtleUNs
b3NlZDsKK30KKworZnVuY3Rpb24gdGVzdEJvdW5kYXJ5Q3Vyc29yX2luZGV4S2V5Q2xvc2VkKCkK
K3sKKworICAgIC8vIG5vdyB0aGUgdmFsdWUgZG9lc24ndCBtYXR0ZXIsIGp1c3QgdGhlIHByaW1h
cnkga2V5CisgICAgcnVuVGVzdChtYWtlT3BlbktleUN1cnNvcigiaW5kZXgiLCAzLCBmYWxzZSwg
SURCQ3Vyc29yLlBSRVYpLAorICAgICAgICAgICAgeyBleHBlY3RlZEtleTogMywgZXhwZWN0ZWRQ
cmltYXJ5S2V5OiAxfSkub25zdWNjZXNzID0KKyAgICAgICAgICAgICAgICB0ZXN0Qm91bmRhcnlD
dXJzb3JfaW5kZXhLZXlPcGVuOworfQorCitmdW5jdGlvbiB0ZXN0Qm91bmRhcnlDdXJzb3JfaW5k
ZXhLZXlPcGVuKCkKK3sKKyAgICBydW5UZXN0KG1ha2VPcGVuS2V5Q3Vyc29yKCJpbmRleCIsIDMs
IHRydWUsIElEQkN1cnNvci5QUkVWKSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWRLZXk6IDIsIGV4
cGVjdGVkUHJpbWFyeUtleTogMn0pLm9uc3VjY2VzcyA9CisgICAgICAgICAgICAgICAgdGVzdE5v
RHVwbGljYXRlX2Nsb3NlZDsKK30KKworZnVuY3Rpb24gdGVzdE5vRHVwbGljYXRlX2Nsb3NlZCgp
Cit7CisgICAgZGVidWcoInRlc3ROb0R1cGxpY2F0ZTogdGhlcmUgYXJlIDMgdmFsdWVzLCBidXQg
d2Ugc2hvdWxkIHJldHVybiBhbHdheXMgdGhlIGZpcnN0IG9uZSIpOworCisgICAgLy8gUFJFVl9O
T19EVVBMSUNBVEUgZG9lc24ndCByZWFsbHkgYWZmZWN0IG5vbi1pbmRleGVkCisgICAgLy8gY3Vy
c29ycywgYnV0IHdlIHNob3VsZCBtYWtlIHN1cmUgd2UgZ2V0IHRoZSByaWdodCBvbmUKKyAgICAv
LyBhbnl3YXkKKyAgICBydW5UZXN0KG1ha2VPcGVuQ3Vyc29yKCJzdG9yZSIsIDE1LCBmYWxzZSwg
SURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKSwKKyAgICAgICAgICAgIHsgZXhwZWN0ZWRWYWx1
ZTogNjY2LCBleHBlY3RlZEtleTogMTUsIGV4cGVjdGVkUHJpbWFyeUtleTogMTUgfSkKKyAgICAg
ICAgICAgICAgICAub25zdWNjZXNzID0gdGVzdE5vRHVwbGljYXRlX29wZW47Cit9CisKK2Z1bmN0
aW9uIHRlc3ROb0R1cGxpY2F0ZV9vcGVuKCkKK3sKKyAgICAvLyBzdGlsbCB0aHJlZSB2YWx1ZXMs
IGJ1dCBub3cgdGhlIGluZGV4IHNheXMgd2Ugc2hvdWxkIHJldHVybiB0aGUKKyAgICAvLyBzZWNv
bmQgb25lCisgICAgcnVuVGVzdChtYWtlT3BlbkN1cnNvcigiaW5kZXgiLCAxNSwgZmFsc2UsIElE
QkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSksCisgICAgICAgICAgICB7IGV4cGVjdGVkVmFsdWU6
IDY2NiwgZXhwZWN0ZWRLZXk6IDEwLCBleHBlY3RlZFByaW1hcnlLZXk6IDE1fSkub25zdWNjZXNz
ID0gdGVzdE5vRHVwbGljYXRlX2luZGV4S2V5Q2xvc2VkOworfQorCisKK2Z1bmN0aW9uIHRlc3RO
b0R1cGxpY2F0ZV9pbmRleEtleUNsb3NlZCgpCit7CisgICAgLy8gc2FtZSBiZWhhdmlvciBhcyBh
Ym92ZSwgd2l0aG91dCBhIHZhbHVlCisgICAgcnVuVGVzdChtYWtlT3BlbktleUN1cnNvcigiaW5k
ZXgiLCAxNSwgZmFsc2UsIElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSksCisgICAgICAgICAg
ICB7IGV4cGVjdGVkS2V5OiAxMCwgZXhwZWN0ZWRQcmltYXJ5S2V5OiAxNX0pLm9uc3VjY2VzcyA9
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0OworfQorCisKK2Z1bmN0aW9uIG1ha2VPcGVu
Q3Vyc29yKG9iaiwgdXBwZXJCb3VuZCwgb3BlbiwgZGlyZWN0aW9uKQoreworICAgIHJldHVybiBv
YmogKyAiLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgiICsgdXBwZXJCb3VuZCAr
ICIsICIgKworICAgICAgICBvcGVuICsgIiksICIgKworICAgICAgICAgICAgZGlyZWN0aW9uICsg
IikiOworfQorCitmdW5jdGlvbiBtYWtlT3BlbktleUN1cnNvcihvYmosIHVwcGVyQm91bmQsIG9w
ZW4sIGRpcmVjdGlvbikKK3sKKyAgICByZXR1cm4gb2JqICsgIi5vcGVuS2V5Q3Vyc29yKElEQktl
eVJhbmdlLnVwcGVyQm91bmQoIiArIHVwcGVyQm91bmQgKyAiLCAiICsKKyAgICAgICAgb3BlbiAr
ICIpLCAiICsKKyAgICAgICAgICAgIGRpcmVjdGlvbiArICIpIjsKK30KKworZnVuY3Rpb24gcnVu
VGVzdChvcGVuQ3Vyc29yLCBleHApCit7CisgICAgdHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpOworCisgICAgLy8gZXhwb3NlIHRoZXNlIGZv
ciBjb2RlIGluIG9wZW5DdXJzb3IKKyAgICBzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpOworICAgIGluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CisgICAgdHJhbnMub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgZGVidWcoIkRPTkUiKTsKKyAgICB9OworCisgICAgdmFyIHJlc3VsdCA9IHt9
OworCisgICAgdmFyIHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8v
IGV4cG9zZSBmb3IgZXZhbEFuZExvZworICAgICAgICBleHBlY3RhdGlvbiA9IGV4cDsKKworICAg
ICAgICBkZWJ1ZygiXG5UZXN0aW5nOiAiICsgb3BlbkN1cnNvcik7CisgICAgICAgIGN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIm51bGwgY3Vyc29yIik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsIEpTT04uc3RyaW5n
aWZ5KGV4cGVjdGF0aW9uLmV4cGVjdGVkS2V5KSk7CisgICAgICAgIGlmICgidmFsdWUiIGluIGN1
cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS52YWx1ZSIsIEpTT04u
c3RyaW5naWZ5KGV4cGVjdGF0aW9uLmV4cGVjdGVkVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmICgiZXhwZWN0ZWRWYWx1ZSIgaW4gZXhwZWN0YXRpb24pCisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJUZXN0IGJyb2tlbjogc2hvdWxkbid0IGhhdmUgZXhwZWN0ZWRWYWx1ZSIpOwor
CisgICAgICAgIGlmICgiZXhwZWN0ZWRQcmltYXJ5S2V5IiBpbiBleHBlY3RhdGlvbikgeworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgSlNPTi5zdHJpbmdpZnkoZXhw
ZWN0YXRpb24uZXhwZWN0ZWRQcmltYXJ5S2V5KSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1
bHQub25zdWNjZXNzKCk7CisgICAgfTsKKworICAgIHN0b3JlUmVxID0gZXZhbEFuZExvZygic3Rv
cmVSZXEgPSAiICsgb3BlbkN1cnNvcik7CisgICAgc3RvcmVSZXEub25zdWNjZXNzID0gdGVzdEZ1
bmN0aW9uOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>