<?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>78399</bug_id>
          
          <creation_ts>2012-02-10 16:17:12 -0800</creation_ts>
          <short_desc>IndexedDB: Support overloaded methods that take IDBKey or IDBKeyRange</short_desc>
          <delta_ts>2012-02-23 16:51:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>girard</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>michaeln</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554482</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-10 16:17:12 -0800</bug_when>
    <thetext>IndexedDB: Support overloaded methods that take IDBKey or IDBKeyRange</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554483</commentid>
    <comment_count>1</comment_count>
      <attachid>126600</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-10 16:17:34 -0800</bug_when>
    <thetext>Created attachment 126600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554484</commentid>
    <comment_count>2</comment_count>
      <attachid>126600</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-10 16:18:10 -0800</bug_when>
    <thetext>Comment on attachment 126600
Patch

This is just a stub, to demonstrate the binding code generator and IDL changes that would be required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554488</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-10 16:26:51 -0800</bug_when>
    <thetext>The following Chromium bugs depend on this:

http://crbug.com/101384 - IDBObjectStore.delete()
http://crbug.com/107916 - IDBObjectStore.count() / IDBIndex.count()
http://crbug.com/92046 - IDBObjectStore.openCursor() / IDBIndex.openCursor() / IDBIndex.openKeyCursor()
http://crbug.com/92047 - IDBObjectStore.get() / IDBIndex.get() / IDBIndex.getKey()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554510</commentid>
    <comment_count>4</comment_count>
      <attachid>126600</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-10 17:06:43 -0800</bug_when>
    <thetext>Comment on attachment 126600
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3212
&gt; +        if ($parameter-&gt;type eq &quot;IDBKey&quot; || $parameter-&gt;type eq &quot;NodeFilter&quot; || $parameter-&gt;type eq &quot;XPathNSResolver&quot;) {

- I am not sure why this change becomes necessary NOW. How has the binding for add(..., PassRefPtr&lt;IDBKey&gt; key, ...) or put(..., PassRefPtr&lt;IDBKey&gt; key, ...) worked so far?
- If possible, we do not want to hard-code &apos;... eq &quot;IDLKey&quot;&apos; in code generators. Can we change the method signature to deleteFunction(ScriptExecutionContext*, IDBKey*, ExceptionCode&amp;) so that the hard-coding goes away?
- Don&apos;t we need similar change in CodeGeneratorJS.pm?
- How about IDBKeyRange?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554514</commentid>
    <comment_count>5</comment_count>
      <attachid>126600</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-10 17:21:00 -0800</bug_when>
    <thetext>Comment on attachment 126600
Patch

Attachment 126600 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11487911

New failing tests:
storage/indexeddb/objectStore-required-arguments.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554515</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-10 17:23:53 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 126600 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126600&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3212
&gt; &gt; +        if ($parameter-&gt;type eq &quot;IDBKey&quot; || $parameter-&gt;type eq &quot;NodeFilter&quot; || $parameter-&gt;type eq &quot;XPathNSResolver&quot;) {
&gt; 
&gt; - I am not sure why this change becomes necessary NOW. How has the binding for add(..., PassRefPtr&lt;IDBKey&gt; key, ...) or put(..., PassRefPtr&lt;IDBKey&gt; key, ...) worked so far?

The overloads take PassRefPtr&lt;IDBKeyRange&gt; and PassRefPtr&lt;IDBKey&gt; respectively. Passing RefPtr&lt;IDBKey&gt; in results in an ambiguity since these both derive from a common base.

&gt; - If possible, we do not want to hard-code &apos;... eq &quot;IDLKey&quot;&apos; in code generators. Can we change the method signature to deleteFunction(ScriptExecutionContext*, IDBKey*, ExceptionCode&amp;) so that the hard-coding goes away?

That probably works too - I&apos;ll play around. I agree, hard-coding is evil. This CL is more a stake in the ground to investigate further than a serious suggestion (which is why I removed the r? flag), since a minimal change had eluded me when I looked at it a few months ago.

&gt; - Don&apos;t we need similar change in CodeGeneratorJS.pm?

The IDB implementation is only enabled in Chromium/V8, so nothing builds via that path. Adding similar changes would be flying blind.

&gt; - How about IDBKeyRange?

Looking at the generated code, it&apos;s held locally in an IDBKeyRange* not a RefPtr&lt;&gt; so the overload isn&apos;t ambiguous when called that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555406</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-13 11:20:15 -0800</bug_when>
    <thetext>&gt; &gt; - If possible, we do not want to hard-code &apos;... eq &quot;IDLKey&quot;&apos; in code generators. Can we change the method signature to deleteFunction(ScriptExecutionContext*, IDBKey*, ExceptionCode&amp;) so that the hard-coding goes away?
&gt; 
&gt; That probably works too - I&apos;ll play around. I agree, hard-coding is evil. 

Nope, doesn&apos;t work. The generated code is:

  EXCEPTION_BLOCK(RefPtr&lt;IDBKey&gt;, key, createIDBKeyFromValue(MAYBE_MISSING_PARAMETER(args, 0, DefaultIsUndefined)));
  ...
  RefPtr&lt;IDBRequest&gt; result = imp-&gt;deleteFunction(scriptContext, key, ec);

It looks like the types in that if() clause - IDBKey, NodeFilter, and XPathNSResolver are all types that may be created within the callback function. See notes elsewhere in the script...

  # temporary hack
  return &quot;RefPtr&lt;NodeFilter&gt;&quot; if $type eq &quot;NodeFilter&quot;;
  ...  
  # necessary as resolvers could be constructed on fly.
  return &quot;RefPtr&lt;XPathNSResolver&gt;&quot; if $type eq &quot;XPathNSResolver&quot;;

Possibly refactor and introduce a IsConstructedInCallback() function that is tested instead? Other suggestions appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555720</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-13 16:12:22 -0800</bug_when>
    <thetext>Thanks jsbell.

(In reply to comment #7)
&gt;   EXCEPTION_BLOCK(RefPtr&lt;IDBKey&gt;, key, createIDBKeyFromValue(MAYBE_MISSING_PARAMETER(args, 0, DefaultIsUndefined)));
&gt;   ...
&gt;   RefPtr&lt;IDBRequest&gt; result = imp-&gt;deleteFunction(scriptContext, key, ec);
&gt; 
&gt; It looks like the types in that if() clause - IDBKey, NodeFilter, and XPathNSResolver are all types that may be created within the callback function. See notes elsewhere in the script...
&gt; 
&gt;   # temporary hack
&gt;   return &quot;RefPtr&lt;IDBKey&gt;&quot; if $type eq &quot;IDBKey&quot;;

I am not still sure why the native type of IDBKey needs to be RefPtr&lt;IDBKey&gt;, instead of IDBKey.

Would it be possible to change all &quot;RefPtr&lt;IDBKey&gt;&quot;s to &quot;IDBKey&quot;s in IDBObjectStore.h? For example, would it require a big change in WebCore implementation if we try to change the following current signatures:

    PassRefPtr&lt;IDBRequest&gt; get(ScriptExecutionContext*, PassRefPtr&lt;IDBKey&gt;, ExceptionCode&amp;);
    PassRefPtr&lt;IDBRequest&gt; add(ScriptExecutionContext*, PassRefPtr&lt;SerializedScriptValue&gt;, PassRefPtr&lt;IDBKey&gt;, ExceptionCode&amp;);
    PassRefPtr&lt;IDBRequest&gt; put(ScriptExecutionContext*, PassRefPtr&lt;SerializedScriptValue&gt;, PassRefPtr&lt;IDBKey&gt;, ExceptionCode&amp;);

to the following signatures?:

    PassRefPtr&lt;IDBRequest&gt; get(ScriptExecutionContext*, IDBKey*, ExceptionCode&amp;);
    PassRefPtr&lt;IDBRequest&gt; add(ScriptExecutionContext*, PassRefPtr&lt;SerializedScriptValue&gt;, IDBKey*, ExceptionCode&amp;);
    PassRefPtr&lt;IDBRequest&gt; put(ScriptExecutionContext*, PassRefPtr&lt;SerializedScriptValue&gt;, IDBKey*, ExceptionCode&amp;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555734</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-13 16:27:48 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Thanks jsbell.
&gt; 
&gt; (In reply to comment #7)
&gt; &gt;   EXCEPTION_BLOCK(RefPtr&lt;IDBKey&gt;, key, createIDBKeyFromValue(MAYBE_MISSING_PARAMETER(args, 0, DefaultIsUndefined)));
&gt; &gt;   ...
&gt; &gt;   RefPtr&lt;IDBRequest&gt; result = imp-&gt;deleteFunction(scriptContext, key, ec);
&gt; &gt; 
&gt; &gt; It looks like the types in that if() clause - IDBKey, NodeFilter, and XPathNSResolver are all types that may be created within the callback function. See notes elsewhere in the script...
&gt; &gt; 
&gt; &gt;   # temporary hack
&gt; &gt;   return &quot;RefPtr&lt;IDBKey&gt;&quot; if $type eq &quot;IDBKey&quot;;
&gt; 
&gt; I am not still sure why the native type of IDBKey needs to be RefPtr&lt;IDBKey&gt;, instead of IDBKey.

The createIDBKeyFromValue() is actually creating an new IDBKey; something needs to hold on to it, doesn&apos;t it?
 
&gt; Would it be possible to change all &quot;RefPtr&lt;IDBKey&gt;&quot;s to &quot;IDBKey&quot;s in IDBObjectStore.h? 

That&apos;s fine but doesn&apos;t help. With *only* that change, the code generator tries to pass a RefPtr&lt;IDBKey&gt; to an IDBKey* argument. We still need the generated function to both (1) hold a RefPtr&lt;T&gt; and (2) pass a non-RefPtr (either T* or PassRefPtr&lt;T&gt;). 

&gt; For example, would it require a big change in WebCore implementation if we try to change the following current signatures:

If this turns out to be what we want it&apos;s not a problem, these methods are only called from script via the IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555738</commentid>
    <comment_count>10</comment_count>
      <attachid>126862</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-13 16:31:50 -0800</bug_when>
    <thetext>Created attachment 126862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555744</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-13 16:35:47 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; I am not still sure why the native type of IDBKey needs to be RefPtr&lt;IDBKey&gt;, instead of IDBKey.
&gt; 
&gt; The createIDBKeyFromValue() is actually creating an new IDBKey; something needs to hold on to it, doesn&apos;t it?

Thank you for the clarification. From what we observed, it seems to me that allowing the &quot;IDBKey&quot; hard-coding might be a good approach in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555747</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 16:37:40 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555748</commentid>
    <comment_count>13</comment_count>
      <attachid>126862</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-13 16:38:09 -0800</bug_when>
    <thetext>Comment on attachment 126862
Patch

This will need to be split up before landing into WebKit/Chromium API changes, the Chromium side, and finally the bulk of the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555749</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-13 16:40:14 -0800</bug_when>
    <thetext>r+ for the code generator change and IDL change. Would anyone review Indexed DB changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556435</commentid>
    <comment_count>15</comment_count>
      <attachid>126862</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-14 11:22:19 -0800</bug_when>
    <thetext>Comment on attachment 126862
Patch

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

&gt; Source/WebKit/chromium/public/WebIDBObjectStore.h:72
&gt; +    virtual void deleteFunction(const WebIDBKeyRange&amp;, WebIDBCallbacks*, const WebIDBTransaction&amp;, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }

API change LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556744</commentid>
    <comment_count>16</comment_count>
      <attachid>126862</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-14 16:21:46 -0800</bug_when>
    <thetext>Comment on attachment 126862
Patch

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

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:372
&gt; +                if (!objectStore-&gt;m_backingStore-&gt;deleteIndexDataForRecord(objectStore-&gt;m_databaseId, objectStore-&gt;id(), it-&gt;second-&gt;id(), recordIdentifier.get()))
&gt; +                    ASSERT_NOT_REACHED();

Nit: I think assigning to a bool and using ASSERT_UNUSED would be a bit clearer here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559431</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-17 12:41:47 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Nit: I think assigning to a bool and using ASSERT_UNUSED would be a bit clearer here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559454</commentid>
    <comment_count>18</comment_count>
      <attachid>127637</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-17 13:02:38 -0800</bug_when>
    <thetext>Created attachment 127637
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559464</commentid>
    <comment_count>19</comment_count>
      <attachid>127641</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-17 13:15:41 -0800</bug_when>
    <thetext>Created attachment 127641
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559687</commentid>
    <comment_count>20</comment_count>
      <attachid>127641</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-17 18:46:32 -0800</bug_when>
    <thetext>Comment on attachment 127641
Patch for landing

Clearing flags on attachment: 127641

Committed r108150: &lt;http://trac.webkit.org/changeset/108150&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559688</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-17 18:46:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563686</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 16:49:53 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563687</commentid>
    <comment_count>23</comment_count>
      <attachid>128603</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 16:49:55 -0800</bug_when>
    <thetext>Created attachment 128603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563689</commentid>
    <comment_count>24</comment_count>
      <attachid>128603</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 16:51:42 -0800</bug_when>
    <thetext>Comment on attachment 128603
Patch

Oops, ignore this attachment. Need a new bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126600</attachid>
            <date>2012-02-10 16:17:34 -0800</date>
            <delta_ts>2012-02-13 16:31:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78399-20120210161733.patch</filename>
            <type>text/plain</type>
            <size>4563</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3Mzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFhYTc0NjUyNmI0M2Y5
NWQ3YmMxMWE0ZWM2MGM0NmM3ODc2OTE5Ny4uYzhhZDg2ZTBhOWE4NjgyMDRlNTNiMmEyZWQ1OWZh
YTNmOWRkNTM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAyLTEwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTdXBw
b3J0IG92ZXJsb2FkZWQgbWV0aG9kcyB0aGF0IHRha2UgSURCS2V5IG9yIElEQktleVJhbmdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKE9PUFMhKQorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsOgorCiAyMDEyLTAyLTEwICBWc2V2b2xvZCBWbGFz
b3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZpbGVT
ZWxlY3RvciBzaG91bGQgbm90IGRlcGVuZCBvbiBEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQppbmRleCAzM2QzOTZmZmZkZGIwNmJlYTM2NDYzMDBhZjE4NDMxYTQyMTMwYmEzLi41OGI0YzBm
MWVkM2RhNDRhN2ZmNDViMDgxYjk1YmI4YjkzY2NiZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzIwOSw3ICszMjA5
LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgbXkgJHBhcmFt
TmFtZSA9ICRwYXJhbWV0ZXItPm5hbWU7CiAgICAgICAgIG15ICRwYXJhbVR5cGUgPSAkcGFyYW1l
dGVyLT50eXBlOwogCi0gICAgICAgIGlmICgkcGFyYW1ldGVyLT50eXBlIGVxICJOb2RlRmlsdGVy
IiB8fCAkcGFyYW1ldGVyLT50eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgIGlm
ICgkcGFyYW1ldGVyLT50eXBlIGVxICJJREJLZXkiIHx8ICRwYXJhbWV0ZXItPnR5cGUgZXEgIk5v
ZGVGaWx0ZXIiIHx8ICRwYXJhbWV0ZXItPnR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKICAg
ICAgICAgICAgIHB1c2ggQGFyZ3VtZW50cywgIiRwYXJhbU5hbWUuZ2V0KCkiOwogICAgICAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHBhcmFtZXRl
ci0+dHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7CiAgICAgICAgICAg
ICBwdXNoIEBhcmd1bWVudHMsICIkcGFyYW1OYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgpIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZTRjOTY1YjE0OGYx
MzgxYmEzYWQ1YTdhZWEzYjZiOTA1MDY1OWI5Yy4uMjgzZWRjY2NiMzEwZGM4Njk3Njk4NWMxODA2
OWVhNDUyNjU4OGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5j
cHAKQEAgLTEyMSw2ICsxMjEsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICByZXR1
cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICByZXR1cm4gMDsK
K30KKwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0g
SURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmUuaAppbmRleCAyNTE2NjYzZmFiMTliOTQ0YTU5ZDVmOTMwOTY0Y2QzNjE3MzE2ZmRmLi42MGE5
YjFkM2YyMjBjODdiMzgwYjIwZmI2N2I2NDE3MzZhMjYxODJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBh
ZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7
CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0
aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCmlu
ZGV4IGNlYTkyYWIxMGYxZThhMjc1OTBlNGI1YmY4YjU4MGQ1Yjg0NGE5MTMuLjViY2FmOGVjNGM4
ZTEwNTViZDYxNzNkYjQ3ZWM2YjczOTNjODY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmUuaWRsCkBAIC0zNyw2ICszNyw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAg
ICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBhZGQoaW4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlIHZhbHVlLCBpbiBbT3B0aW9uYWxdIElEQktleSBrZXkpCiAgICAgICAgICAgICBy
YWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3Qg
ZGVsZXRlKGluIElEQktleVJhbmdlIGtleVJhbmdlKQorICAgICAgICAgICAgcmFpc2VzIChJREJE
YXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZShpbiBJ
REJLZXkga2V5KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAg
ICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNsZWFy
KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126862</attachid>
            <date>2012-02-13 16:31:50 -0800</date>
            <delta_ts>2012-02-17 13:02:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78399-20120213163149.patch</filename>
            <type>text/plain</type>
            <size>36872</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3Mzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFhYTc0NjUyNmI0M2Y5
NWQ3YmMxMWE0ZWM2MGM0NmM3ODc2OTE5Ny4uODkzMmVlNTI4ZWIzOTZhN2Y0NWQwM2E2ZjQyZGZh
OWM2MWVlNTYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAyLTEzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTdXBw
b3J0IG92ZXJsb2FkZWQgbWV0aG9kcyB0aGF0IHRha2UgSURCS2V5IG9yIElEQktleVJhbmdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM5OQorCisg
ICAgICAgIEltcGxlbWVudHMgSURCT2JqZWN0U3RvcmUuZGVsZXRlKElEQktleVJhbmdlKSB0byBl
eGVyY2lzZSB0aGUgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgCisgICAgICAgIE5PVEU6IFRoZSBi
aW5kaW5nIGNvZGUgZ2VuZXJhdG9yIGNoYW5nZXMgYXJlIE5PVCBGSU5BTCBhbmQgd2lsbCBsaWtl
bHkgTk9UIExBTkQKKyAgICAgICAgaW4gdGhlIGN1cnJlbnQgZm9ybS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGUtcmFuZ2UuaHRtbAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAg
ICAgICogc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKElEQk9iamVj
dFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAg
KiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpk
ZWxldGVJbnRlcm5hbCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmg6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oOgorCiAyMDEyLTAyLTEwICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEZpbGVTZWxlY3RvciBzaG91bGQgbm90IGRlcGVuZCBvbiBEZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0NzkzNWEwZmEwNDFjZGRj
NzY0ZDEyZmJhYjdlMDZhMzA4ODVjYzBlLi41ZmNiNzA4NDljMGZlNTk1MzUwZDk1NWM2MzdmOWRk
ZWNiNTIyNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDEyLTAyLTEzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW5kZXhlZERCOiBTdXBwb3J0IG92ZXJsb2FkZWQgbWV0aG9kcyB0aGF0IHRha2UgSURCS2V5IG9y
IElEQktleVJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODM5OQorCisgICAgICAgIEltcGxlbWVudHMgdGhlIFdlYktpdCBBUEkgZm9yIElEQk9i
amVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSksCisgICAgICAgIHRvIGV4ZXJjaXNlIHRoZSBv
dmVybG9hZCBjYXBhYmlsaXR5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3JjL0lE
Qk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6ZGVsZXRl
RnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJJREJPYmplY3RTdG9yZUltcGwpOgorCiAyMDEyLTAy
LTA5ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBB
ZGQgV2ViU29ja2V0IGV4dGVuc2lvbiBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDMzZDM5NmZmZmRkYjA2YmVh
MzY0NjMwMGFmMTg0MzFhNDIxMzBiYTMuLjU4YjRjMGYxZWQzZGE0NGE3ZmY0NWIwODFiOTViYjhi
OTNjY2JmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC0zMjA5LDcgKzMyMDksNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlv
bkNhbGxTdHJpbmcoKQogICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtZXRlci0+bmFtZTsK
ICAgICAgICAgbXkgJHBhcmFtVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CiAKLSAgICAgICAgaWYg
KCRwYXJhbWV0ZXItPnR5cGUgZXEgIk5vZGVGaWx0ZXIiIHx8ICRwYXJhbWV0ZXItPnR5cGUgZXEg
IlhQYXRoTlNSZXNvbHZlciIpIHsKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXItPnR5cGUgZXEgIklE
QktleSIgfHwgJHBhcmFtZXRlci0+dHlwZSBlcSAiTm9kZUZpbHRlciIgfHwgJHBhcmFtZXRlci0+
dHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgewogICAgICAgICAgICAgcHVzaCBAYXJndW1lbnRz
LCAiJHBhcmFtTmFtZS5nZXQoKSI7CiAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c1NWR1R5cGVOZWVkaW5nVGVhck9mZigkcGFyYW1ldGVyLT50eXBlKSBhbmQgbm90ICRpbXBsQ2xh
c3NOYW1lID1+IC9MaXN0JC8pIHsKICAgICAgICAgICAgIHB1c2ggQGFyZ3VtZW50cywgIiRwYXJh
bU5hbWUtPnByb3BlcnR5UmVmZXJlbmNlKCkiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNTI4ZDFlOTEyMGNkY2I3MGY5MjRm
OGNkM2Q3N2Y4NzFiZGVjMTYwZi4uZjQyM2JiMDA3ZjIyYzZjZjY3OTk5OWZmNjM2YjNmMmQwNmY1
NzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwCkBAIC05NjgsNyArOTY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJLZXk+IGtleSgpIHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0K
ICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IG9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllcigpID0gMDsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBh
Y3R1YWxseSB1c2VkLCBzbyBkcm9wIGl0LgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gb2JqZWN0U3RvcmVSZWNvcmRJ
ZGVudGlmaWVyKCkgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBpbmRleERhdGFJZCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7IH0KIApAQCAtMTExNyw3ICsxMTE3LDEwIEBAIHB1
YmxpYzoKIAogICAgIC8vIEN1cnNvckltcGxDb21tb24KICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1
ZSgpIHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBvYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRl
bnRpZmllcj4gb2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKCkgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisgICAgfQogICAgIHZpcnR1YWwgaW50NjRfdCBp
bmRleERhdGFJZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKQEAgLTExMzQsNiArMTEzNyw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgU3RyaW5nIG1fY3VycmVudFZhbHVlOworICAgIFJlZlB0cjxMZXZl
bERCUmVjb3JkSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyOwogfTsKIAogYm9vbCBPYmplY3RTdG9y
ZUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKQEAgLTExNTQsNyArMTE1OCw5IEBAIGJvb2wg
T2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgQVNTRVJUKHEpOwog
ICAgIGlmICghcSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICh2b2lkKSB2ZXJzaW9uOwor
CisgICAgLy8gRklYTUU6IFRoaXMgcmUtZW5jb2RlcyB3aGF0IHdhcyBqdXN0IGRlY29kZWQ7IHRy
eSBhbmQgb3B0aW1pemUuCisgICAgbV9pZGVudGlmaWVyID0gTGV2ZWxEQlJlY29yZElkZW50aWZp
ZXI6OmNyZWF0ZShlbmNvZGVJREJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24pOwogCiAgICAg
bV9jdXJyZW50VmFsdWUgPSBkZWNvZGVTdHJpbmcocSwgbV9pdGVyYXRvci0+dmFsdWUoKS5lbmQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZTRj
OTY1YjE0OGYxMzgxYmEzYWQ1YTdhZWEzYjZiOTA1MDY1OWI5Yy4uZmJlMzc2YjVlMmI4NTJiZTZk
YWZjODNhZjdmNGYzNWFhZjQ1YjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5jcHAKQEAgLTEyMSw5ICsxMjEsMjUgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MK
ICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIWtleVJhbmdlKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJB
bnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgbV9iYWNrZW5kLT5k
ZWxldGVGdW5jdGlvbihrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgp
LCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7
Cit9CisKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09
IElEQktleTo6SW52YWxpZFR5cGUpKSB7CisgICAgaWYgKCFrZXkgfHwgIWtleS0+dmFsaWQoKSkg
ewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCmlu
ZGV4IDI1MTY2NjNmYWIxOWI5NDRhNTlkNWY5MzA5NjRjZDM2MTczMTZmZGYuLjYwYTliMWQzZjIy
MGM4N2IzODBiMjBmYjY3YjY0MTczNmEyNjE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQ
YXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IHB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2Rl
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
aWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXggY2Vh
OTJhYjEwZjFlOGEyNzU5MGU0YjViZjhiNTgwZDViODQ0YTkxMy4uNWJjYWY4ZWM0YzhlMTA1NWJk
NjE3M2RiNDdlYzZiNzM5M2M4NjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5pZGwKQEAgLTM3LDYgKzM3LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAg
ICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGFkZChpbiBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgdmFsdWUsIGluIFtPcHRpb25hbF0gSURCS2V5IGtleSkKICAgICAgICAgICAgIHJhaXNlcyAo
SURCRGF0YWJhc2VFeGNlcHRpb24pOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUo
aW4gSURCS2V5UmFuZ2Uga2V5UmFuZ2UpCisgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNl
RXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIElt
cGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKGluIElEQktleSBr
ZXkpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgY2xlYXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAKaW5kZXggZjA3ZWEzZWViYTZlZTdhMzA1ZTdlOTVmMjMzY2E3MGU5OTA3ZTY2OC4uZDVlMmI4
ZTQxMDdlMjE1MTlmMzliNGJkOTBmYzRiOWM4N2JjNjA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0zMjYsNDEg
KzMyNiw2MCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogCiB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFJlZlB0
cjxJREJLZXk+IGtleSA9IHBycEtleTsKKyAgICBpZiAoIWtleSB8fCAha2V5LT52YWxpZCgpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktl
eVJhbmdlOjpvbmx5KGtleSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZGVsZXRlRnVuY3Rpb24oa2V5UmFuZ2UucmVsZWFzZSgpLCBwcnBDYWxsYmFja3MsIHRyYW5z
YWN0aW9uLCBlYyk7Cit9CisKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRl
RnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorewogICAgIGlmICh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKICAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9
IHRoaXM7Ci0gICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OworICAgIFJlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UgPSBwcnBLZXlSYW5nZTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCFrZXkgfHwgIWtleS0+dmFsaWQo
KSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhj
cmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVy
bmFsLCBvYmplY3RTdG9yZSwga2V5LCBjYWxsYmFja3MpKSkKKyAgICBpZiAoIXRyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpkZWxldGVJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGtleVJhbmdlLCBjYWxsYmFja3MpKSkK
ICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpk
ZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgUmVm
UHRyPElEQkJhY2tpbmdTdG9yZTo6T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJ
ZGVudGlmaWVyID0gb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5jcmVhdGVJbnZhbGlkUmVj
b3JkSWRlbnRpZmllcigpOwotICAgIGlmICghb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5r
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0
b3JlLT5pZCgpLCAqa2V5LCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkgewotICAgICAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJvb2xlYW5WYWx1ZShmYWxz
ZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6
Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcjsKIAotICAgIGZv
ciAoSW5kZXhNYXA6Oml0ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5iZWdpbigp
OyBpdCAhPSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlm
ICghaXQtPnNlY29uZC0+aGFzVmFsaWRJZCgpKQotICAgICAgICAgICAgY29udGludWU7IC8vIFRo
ZSBpbmRleCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgYnV0IGRvZXMgbm90IGV4aXN0IGluIHRo
ZSBkYXRhYmFzZSB5ZXQuCisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNr
aW5nU3RvcmVDdXJzb3IgPSBvYmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RT
dG9yZUN1cnNvcihvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwg
a2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgaWYgKGJhY2tpbmdTdG9yZUN1
cnNvcikgewogCi0gICAgICAgIGlmICghb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5kZWxl
dGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmUtPmlkKCksIGl0LT5zZWNvbmQtPmlkKCksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKQotICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IHJlY29yZElkZW50aWZpZXIgPSBiYWNraW5nU3RvcmVDdXJzb3ItPm9iamVjdFN0b3JlUmVjb3Jk
SWRlbnRpZmllcigpOworCisgICAgICAgICAgICBmb3IgKEluZGV4TWFwOjppdGVyYXRvciBpdCA9
IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0U3RvcmUtPm1faW5k
ZXhlcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgIGlmICghaXQtPnNlY29uZC0+aGFz
VmFsaWRJZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gVGhlIGluZGV4IG9i
amVjdCBoYXMgYmVlbiBjcmVhdGVkLCBidXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNl
IHlldC4KKworICAgICAgICAgICAgICAgIGlmICghb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3Jl
LT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmUtPmlkKCksIGl0LT5zZWNvbmQtPmlkKCksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmpl
Y3RTdG9yZVJlY29yZChvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQo
KSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7CisKKyAgICAgICAgfSB3aGlsZSAoYmFja2luZ1N0
b3JlQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDApKTsKKworICAgICAgICBiYWNraW5nU3RvcmVD
dXJzb3ItPmNsb3NlKCk7CiAgICAgfQogCi0gICAgb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3Jl
LT5kZWxldGVPYmplY3RTdG9yZVJlY29yZChvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZS0+aWQoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7Ci0gICAgY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpib29sZWFuVmFsdWUodHJ1ZSkpOworICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFs
dWUoKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IGJkYmYxZjE2
YWY2MmFlOTJjODYyOTk5ZjIyODI3NmRhYmRmNzU2YjUuLmNkZjM2MGNkZjA1NzNiZWQ0Njg0ZTE0
Y2YzMjUzMThmNmY5ZDJjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC02OCw3ICs2OCw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRy
PElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnks
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTkw
LDcgKzkxLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGdldEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAg
IHN0YXRpYyB2b2lkIHB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwotICAg
IHN0YXRpYyB2b2lkIGRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+KTsKICAgICBzdGF0aWMgdm9pZCBjbGVhckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4s
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlSW5kZXhJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDFkNzEyNWU2
NDlkNTUzN2QyMzNhZjNkZDcxYWEwMjk2NmJmYWM2MzMuLjVlNmJmNDljNTY0MDRlOTE1MDQ1NDky
N2ZlNzU4YTkyNWE5Yjk5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjAsNiArNjAsNyBAQCBwdWJs
aWM6CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgcHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5kZXggNmJkNTFm
NDE5YWViMWFjNjljNGMzYjlkY2YxODRmZWQwMGIwOTA4Zi4uOTgxZjVlYzdlZDY4ODk0YTc1NjUw
NDU5OGY2YTkyMTMwOTJiZGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBwdXQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3Qg
V2ViSURCS2V5JiwgUHV0TW9kZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2Vi
SURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3Mq
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUlu
ZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAppbmRl
eCA3MWZiNTcxZDEyNWU0MzQyYzBjOWM0NDMxMjgxYzZmNGZkNWYwNmY0Li40ODU0ODdhYzAxODY3
ZTM0ZjljNGYxNjgzMjQ1Y2EzNThmNzkxZDIzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCkBAIC05OCw2
ICs5OCwxNCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpkZWxldGVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUAogICAgIG1fd2ViSURCT2JqZWN0U3Rv
cmUtPmRlbGV0ZUZ1bmN0aW9uKGtleSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAor
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRl
ZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIs
CisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkg
b2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94
eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24p
OworICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPmRlbGV0ZUZ1bmN0aW9uKGtleVJhbmdlLCBuZXcg
V2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2Vi
SURCVHJhbnNhY3Rpb24oKSwgZWMpOworfQorCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5OjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9p
bnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgK
aW5kZXggNmQzMzU2MzVjNWY1YzllYzUwNDA4YTIzOTVkYWRjNGMxNDc5YzMzZC4uYzE5YTBmMGE0
YzA5NGI0NzllZTI2YjBmMGRjOGZkMDQzZTAyMWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCkBAIC00OSw2
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1
bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpRW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDFlYzhhZjViYzJjMDVkODlkZjNiNWZh
ODEyM2Q5ZWY1NDEwMzgyMGIuLjU1YTZhZGQ1N2EwOWFiYjQwOTZlZmYzYjM1ZDhlYjU4N2FhY2M5
YTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmNwcApAQCAtODIsNiArODIsMTEgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUlt
cGw6OmRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYga2V5LCBXZWJJREJDYWxsYmFja3MK
ICAgICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihrZXksIElEQkNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKK3ZvaWQgV2ViSURCT2JqZWN0U3RvcmVJ
bXBsOjpkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5UmFuZ2UsIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1fb2JqZWN0U3RvcmUtPmRlbGV0ZUZ1
bmN0aW9uKGtleVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxi
YWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwg
ZWMpOworfQorCiB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y2xlYXIoV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2Vi
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbV9vYmplY3RTdG9yZS0+Y2xlYXIoSURCQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggNmY1ODBmMDFhZDAz
MTYyYzU1YmJhYzBmZmJkZjJkZDcxM2FjOTM1OC4uZDIyMDJmYzdmMzQ1ODkwNjlmNmY1NjY3ZGQy
ZmY0MWFlNmQ3NWNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTUxLDcgKzUxLDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBnZXQoY29uc3QgV2ViSURCS2V5JiBrZXksIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcHV0KGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklEQktleSYsIFB1dE1vZGUsIFdlYklE
QkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiBrZXksIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tz
KiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyos
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
Y2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNl
cHRpb25Db2RlJik7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgY2FsbGVycyBhcmUgdXBk
YXRlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAzNDFmOGVlMWMyZjg1ZWRkZGJjYTJkYzlkZDY1YWY1OTU1YjA1NjIyLi5l
MjAwNTZlY2RkYzc1MGIyYjRiZmMzMzcwODhiMzNhZGRlNTI5MWExIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTItMDItMTMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbmRleGVkREI6IFN1cHBvcnQgb3ZlcmxvYWRlZCBtZXRob2RzIHRoYXQgdGFrZSBJ
REJLZXkgb3IgSURCS2V5UmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc4Mzk5CisKKyAgICAgICAgVGVzdHMgSURCT2JqZWN0U3RvcmUuZGVsZXRl
KElEQktleVJhbmdlKS4gVGhlIHNwZWMgaGFzIGJlZW4gdXBkYXRlZCBzdWNoIAorICAgICAgICB0
aGF0IGRlbGV0ZSgpIGFsd2F5cyB5aWVsZHMgYSByZXN1bHQgb2YgdW5kZWZpbmVkIHJhdGhlciB0
aGFuIGEgYm9vbGVhbiwKKyAgICAgICAgc28gb3RoZXIgdGVzdCBleHBlY3RhdGlvbnMgYXJlIHVw
ZGF0ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFuZ2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2RlbGV0ZS1yZXN1bHQuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1
bWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanM6CisgICAgICAgIChjcmVh
dGVJbmRleCk6CisgICAgICAgIChyZW1vdmVTdWNjZXNzKToKKyAgICAgICAgKHJlbW92ZVN1Y2Nl
c3NCdXROb3RUaGVyZSk6CisKIDIwMTItMDItMTAgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHRlc3QgZml4IGZvbGxvd2luZyByMTA3
MzczLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJh
bmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1y
YW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRjYjc2YzE1ZjhiODVlNDFmMWI3MTBiNDgw
ZWM0MzE0OGFhMmMzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2RlbGV0ZS1yYW5nZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5MyBAQAorVGVzdCBJ
bmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpIG1ldGhvZC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVk
REIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQgorUEFTUyBpbmRleGVkREIgIT0gbnVsbCBpcyB0
cnVlCitJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Vi
a2l0SURCVHJhbnNhY3Rpb24KK1BBU1MgSURCVHJhbnNhY3Rpb24gIT0gbnVsbCBpcyB0cnVlCitJ
REJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFu
Z2UKK1BBU1MgSURCS2V5UmFuZ2UgIT0gbnVsbCBpcyB0cnVlCityZXF1ZXN0ID0gaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKCdkZWxldGUtcmFuZ2UnKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KCdkZWxldGUtcmFuZ2UnKQorZGIgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKQordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlJykKKwordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUu
cHV0KDEsMSkKK3N0b3JlLnB1dCgyLDIpCitzdG9yZS5wdXQoMywzKQorc3RvcmUucHV0KDQsNCkK
K3N0b3JlLnB1dCg1LDUpCitzdG9yZS5wdXQoNiw2KQorc3RvcmUucHV0KDcsNykKK3N0b3JlLnB1
dCg4LDgpCitzdG9yZS5wdXQoOSw5KQorc3RvcmUucHV0KDEwLDEwKQorc3RvcmUuZGVsZXRlKElE
QktleVJhbmdlLmJvdW5kKDMsIDgsIGZhbHNlLCBmYWxzZSkpCitnZXR0aW5nIGtleXMgZnJvbSBz
dG9yZS4uLgorZXhwZWN0OiBbMSwyLDksMTBdCithY3R1YWw6IFsxLDIsOSwxMF0KK1BBU1MgTWF0
Y2ghCisKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCgx
LDEpCitzdG9yZS5wdXQoMiwyKQorc3RvcmUucHV0KDMsMykKK3N0b3JlLnB1dCg0LDQpCitzdG9y
ZS5wdXQoNSw1KQorc3RvcmUucHV0KDYsNikKK3N0b3JlLnB1dCg3LDcpCitzdG9yZS5wdXQoOCw4
KQorc3RvcmUucHV0KDksOSkKK3N0b3JlLnB1dCgxMCwxMCkKK3N0b3JlLmRlbGV0ZShJREJLZXlS
YW5nZS5ib3VuZCgzLCA4LCB0cnVlLCBmYWxzZSkpCitnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4u
LgorZXhwZWN0OiBbMSwyLDMsOSwxMF0KK2FjdHVhbDogWzEsMiwzLDksMTBdCitQQVNTIE1hdGNo
IQorCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpCitzdG9yZS5wdXQoMSwx
KQorc3RvcmUucHV0KDIsMikKK3N0b3JlLnB1dCgzLDMpCitzdG9yZS5wdXQoNCw0KQorc3RvcmUu
cHV0KDUsNSkKK3N0b3JlLnB1dCg2LDYpCitzdG9yZS5wdXQoNyw3KQorc3RvcmUucHV0KDgsOCkK
K3N0b3JlLnB1dCg5LDkpCitzdG9yZS5wdXQoMTAsMTApCitzdG9yZS5kZWxldGUoSURCS2V5UmFu
Z2UuYm91bmQoMywgOCwgZmFsc2UsIHRydWUpKQorZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4K
K2V4cGVjdDogWzEsMiw4LDksMTBdCithY3R1YWw6IFsxLDIsOCw5LDEwXQorUEFTUyBNYXRjaCEK
KwordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUucHV0KDEsMSkK
K3N0b3JlLnB1dCgyLDIpCitzdG9yZS5wdXQoMywzKQorc3RvcmUucHV0KDQsNCkKK3N0b3JlLnB1
dCg1LDUpCitzdG9yZS5wdXQoNiw2KQorc3RvcmUucHV0KDcsNykKK3N0b3JlLnB1dCg4LDgpCitz
dG9yZS5wdXQoOSw5KQorc3RvcmUucHV0KDEwLDEwKQorc3RvcmUuZGVsZXRlKElEQktleVJhbmdl
LmJvdW5kKDMsIDgsIHRydWUsIHRydWUpKQorZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4KK2V4
cGVjdDogWzEsMiwzLDgsOSwxMF0KK2FjdHVhbDogWzEsMiwzLDgsOSwxMF0KK1BBU1MgTWF0Y2gh
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFuZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZDcxMTE0MGU0NTM4MTdjMTU3ODAxYzAzYjM2YTkwMTJlMTIzMGJhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwK
QEAgLTAsMCArMSwxMDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuZGVsZXRlKElEQktleVJh
bmdlKSBtZXRob2QuIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93
LndlYmtpdEluZGV4ZWREQiIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCICE9IG51bGwi
KTsKKyAgICBldmFsQW5kTG9nKCJJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlv
biB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIklE
QlRyYW5zYWN0aW9uICE9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJJREJLZXlSYW5nZSA9IHdp
bmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2UiKTsKKyAgICBzaG91
bGRCZVRydWUoIklEQktleVJhbmdlICE9IG51bGwiKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2RlbGV0ZS1yYW5nZScpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbignZGVsZXRlLXJhbmdlJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIp
OworICAgICAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKwor
ICAgICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBydW5UZXN0czsKKyAgICAgICAgICAg
IH07CisgICAgICAgIH07CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja0tleXMoZXhwZWN0ZWQs
IGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4uLiIpOwor
ICAgIGRlYnVnKCJleHBlY3Q6ICIgKyBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpOworICAgIHZh
ciBrZXlzID0gW107CisgICAgcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Cisg
ICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIGtleXMucHVzaChjdXJzb3Iua2V5KTsK
KyAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgZGVidWcoImFjdHVhbDogIiArIEpTT04uc3RyaW5naWZ5KGtleXMpKTsKKyAgICAgICAg
ICAgIGlmIChKU09OLnN0cmluZ2lmeShleHBlY3RlZCkgPT09IEpTT04uc3RyaW5naWZ5KGtleXMp
KSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTWF0Y2ghIik7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRvbid0IG1hdGNoISIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KKwordmFyIHRlc3RzID0gWworICAgIHsg
bG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlck9wZW46IGZhbHNlLCBl
eHBlY3RlZDogWzEsIDIsIDksIDEwXX0sCisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2Vy
T3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IFsxLCAyLCAzLCA5LCAxMF19
LAorICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlck9wZW46
IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgOCwgOSwgMTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBl
cjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwg
MywgOCwgOSwgMTBdfQorXTsKKworZnVuY3Rpb24gcnVuVGVzdHMoKQoreworICAgIGZ1bmN0aW9u
IG5leHRUZXN0KCkgeworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAg
IGlmICh0ZXN0KSB7CisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IDEwOyArK2kpIHsK
KyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIGkgKyAiLCIgKyBpICsg
IikiKTsgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5k
ZWxldGUoSURCS2V5UmFuZ2UuYm91bmQoIiArIAorICAgICAgICAgICAgICAgIHRlc3QubG93ZXIg
KyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVyICsgIiwgIiArCisgICAgICAgICAg
ICAgICAgdGVzdC5sb3dlck9wZW4gKyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVy
T3BlbiArICIpKSIpOworICAgICAgICAgICAgY2hlY2tLZXlzKHRlc3QuZXhwZWN0ZWQsIG5leHRU
ZXN0KTsKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBuZXh0VGVzdDsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKyAgICBuZXh0VGVzdCgpOworfQorCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9kZWxldGUtcmVzdWx0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvZGVsZXRlLXJlc3VsdC1leHBlY3RlZC50eHQKaW5kZXggNTU2NTBj
M2M3M2UzZmQzMzA2YjdlYmIxOWQ4NDdkYjZkMTM3M2Y1Ny4uMDc1NTRiMzM1OWU0NmU1MTcwN2Q1
MDI2MDBjNTUyYTAwMjdmNzA5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2RlbGV0ZS1yZXN1bHQtZXhwZWN0ZWQudHh0CkBA
IC0xMyw5ICsxMyw5IEBAIG9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zvbycs
IHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9CiByZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHt9KTsKIGlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5kZWxldGUoaWQpOwotUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1BB
U1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKIHJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5kZWxldGUoaWQpOwotUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIGZhbHNlCitQQVNTIGV2
ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVkCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvZGVsZXRlLXJlc3VsdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKaW5kZXggYzEzNmEzNTE1ZmVl
ZWYzN2UxZmRhOGYzZDE2M2E2MThhZWVmNTQyYy4uMmE1ZjRlYWZmMDAyNjdmYThjM2VjYzA1MGQ1
MjljMzIzMjExNjY0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rp
b24gZGVsZXRlUmVjb3JkMSgpCiAKIGZ1bmN0aW9uIGRlbGV0ZVJlY29yZDIoKQogewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpZCk7Iik7CiAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmaW5hbENoZWNrOwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNj
ZXNzQ2FsbGJhY2s7CkBAIC02Niw3ICs2Niw3IEBAIGZ1bmN0aW9uIGRlbGV0ZVJlY29yZDIoKQog
CiBmdW5jdGlvbiBmaW5hbENoZWNrKCkKIHsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVu
ZGVmaW5lZCIpOwogICAgIGRvbmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFy
Z3VtZW50cy1leHBlY3RlZC50eHQKaW5kZXggZDliMWIyYWQyMWM0NWYyYTIyOTM1OTM3M2UxYWVh
OGZmZWRmY2Y3Mi4uNDY3YzIyMWVjMWUzZDEyMWQyODlkYjY2MTMwMGI4ZmEwNGE5ZGJiMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWly
ZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xOCw3
ICsxOCw3IEBAIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsKIFBBU1Mgb2JqZWN0U3RvcmUucHV0KCk7IHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBvYmplY3RTdG9y
ZS5hZGQoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMu
Ci1QQVNTIG9iamVjdFN0b3JlLmRlbGV0ZSgpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mgb2JqZWN0U3RvcmUuZGVsZXRlKCk7IHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG9iamVjdFN0b3JlLmdldCgpOyB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgb2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMuCiBQQVNTIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmb28nKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNz
LWV4cGVjdGVkLnR4dAppbmRleCBiMzc5NWI2OWU1ZTMxNTMyYzYzZjIxOGFjNDcyY2MxMmUxMzU3
MzFjLi5mOWE5MGMzZDViMjc2OWE5OWU0YTc4ZDZiMDMxNGJlYTQzODI4OWZiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJh
c2ljcy1leHBlY3RlZC50eHQKQEAgLTExMiwxMCArMTEyLDEwIEBAIGdldFN1Y2Nlc3NEYXRlS2V5
KCk6CiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQueCBpcyAiZm9vIgogc3RvcmUuZGVsZXRlKCdr
ZXknKQogcmVtb3ZlU3VjY2VzcygpOgotUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUK
K1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKIHN0b3JlLmRlbGV0ZSgna2V5
JykKLXJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpOgotUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlz
IGZhbHNlCityZW1vdmVTdWNjZXNzQnV0Tm90VGhlcmUoKToKK1BBU1MgZXZlbnQudGFyZ2V0LnJl
c3VsdCBpcyB1bmRlZmluZWQKIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZQogUGFzc2luZyBh
biBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLgogRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IHN0b3JlLmdldCh7fSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dApp
bmRleCAxZjM0YjU4ZWU4MzM1NTBiMTc3MzIzMTUxMjE3NjQ5MWYxZjM3MTIxLi5mZGNjNDZkNGY4
YzI3YmNjYTc1MmI3ZjRkODhkNzZmMTJhMzQwZGU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdv
cmtlcnMtZXhwZWN0ZWQudHh0CkBAIC0xMTMsMTAgKzExMywxMCBAQCBQQVNTIFtXb3JrZXJdIGV2
ZW50LnRhcmdldC5yZXN1bHQueSBpcyAidmFsdWUiCiBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdl
dC5yZXN1bHQueCBpcyAiZm9vIgogW1dvcmtlcl0gc3RvcmUuZGVsZXRlKCdrZXknKQogW1dvcmtl
cl0gcmVtb3ZlU3VjY2VzcygpOgotUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlz
IHRydWUKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKIFtX
b3JrZXJdIHN0b3JlLmRlbGV0ZSgna2V5JykKLVtXb3JrZXJdIHJlbW92ZVN1Y2Nlc3NCdXRGYWxz
ZSgpOgotUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzIGZhbHNlCitbV29ya2Vy
XSByZW1vdmVTdWNjZXNzQnV0Tm90VGhlcmUoKToKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0
LnJlc3VsdCBpcyB1bmRlZmluZWQKIFtXb3JrZXJdIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJj
ZQogW1dvcmtlcl0gUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLgogW1dv
cmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCh7fSkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNp
Y3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3Rv
cmUtYmFzaWNzLmpzCmluZGV4IDkzOTE4YWI0MDk4MTk2ODNhM2I1MWQ5MDBiOTc1NzAzZDI2YTI2
YzMuLmZmNGMwM2RiNTg3Y2I0ODY0YzY2YzE0MjYxMzE5YTc1YzY2ZGQxZDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNp
Y3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVj
dHN0b3JlLWJhc2ljcy5qcwpAQCAtOTAsNyArOTAsNyBAQCBmdW5jdGlvbiBjcmVhdGVJbmRleCgp
CiAgICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUn
KSIpOwogICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhO
YW1lJykiKTsKICAgICBzaG91bGRCZVRydWUoImluZGV4ICE9PSBudWxsIik7Ci0gCisKICAgICBk
ZWJ1ZygiQXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7CiAgICAgdHJ5IHsK
ICAgICAgICAgZGVidWcoImluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOwpAQCAtMjQ4LDE4
ICsyNDgsMTggQEAgZnVuY3Rpb24gcmVtb3ZlU3VjY2VzcyhldnQpCiB7CiAgICAgZXZlbnQgPSBl
dnQ7CiAgICAgZGVidWcoInJlbW92ZVN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAidW5kZWZpbmVkIik7CiAKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVs
ZXRlKCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dEZh
bHNlOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dE5vdFRoZXJlOwog
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogfQogCi1mdW5j
dGlvbiByZW1vdmVTdWNjZXNzQnV0RmFsc2UoZXZ0KQorZnVuY3Rpb24gcmVtb3ZlU3VjY2Vzc0J1
dE5vdFRoZXJlKGV2dCkKIHsKICAgICBldmVudCA9IGV2dDsKLSAgICBkZWJ1ZygicmVtb3ZlU3Vj
Y2Vzc0J1dEZhbHNlKCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAi
ZmFsc2UiKTsKKyAgICBkZWJ1ZygicmVtb3ZlU3VjY2Vzc0J1dE5vdFRoZXJlKCk6Iik7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CiAgICAgdmFyIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBldmVudC50YXJnZXQuc291cmNlIik7CiAKICAgICBk
ZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127637</attachid>
            <date>2012-02-17 13:02:38 -0800</date>
            <delta_ts>2012-02-17 13:15:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-78399-20120217130237.patch</filename>
            <type>text/plain</type>
            <size>36911</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBhYjY4NGIyMzY3M2I4
M2E3Yjg4OGFiYjVjODIzMzhjYTE3MWI1NC4uOGYyMDUxYzMyY2FjMWMwMDNhNWIyN2QyNTFjMTg4
MGRiZDQzOTY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAyLTEzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTdXBw
b3J0IG92ZXJsb2FkZWQgbWV0aG9kcyB0aGF0IHRha2UgSURCS2V5IG9yIElEQktleVJhbmdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM5OQorCisg
ICAgICAgIEltcGxlbWVudHMgSURCT2JqZWN0U3RvcmUuZGVsZXRlKElEQktleVJhbmdlKSB0byBl
eGVyY2lzZSB0aGUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1s
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmg6CisKKzIwMTItMDItMTAgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN1cHBvcnQgb3ZlcmxvYWRlZCBt
ZXRob2RzIHRoYXQgdGFrZSBJREJLZXkgb3IgSURCS2V5UmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVG9ueSBDaGFuZy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJh
dGVGdW5jdGlvbkNhbGxTdHJpbmcpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoK
KyAgICAgICAgKElEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmlkbDoKKwogMjAxMi0wMi0xNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwODA3MS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDg3M2VhN2QwYjc0MDEwMGE2NGZhYjM3ODYyMzU2ZjBh
MDFlMzgwOC4uNTBhZDEwMzYwMjZmYjBlNTFkYzk0ZDI5MTcwYmQzY2FjYTFlM2I4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wMi0xMyAgSm9zaHVh
IEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3VwcG9y
dCBvdmVybG9hZGVkIG1ldGhvZHMgdGhhdCB0YWtlIElEQktleSBvciBJREJLZXlSYW5nZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzOTkKKworICAg
ICAgICBJbXBsZW1lbnRzIHRoZSBXZWJLaXQgQVBJIGZvciBJREJPYmplY3RTdG9yZS5kZWxldGUo
SURCS2V5UmFuZ2UpLAorICAgICAgICB0byBleGVyY2lzZSB0aGUgb3ZlcmxvYWQgY2FwYWJpbGl0
eS4KKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogcHVibGlj
L1dlYklEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3Jl
OjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmRl
bGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94
eSk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6CisgICAgICAg
IChXZWJJREJPYmplY3RTdG9yZUltcGwpOgorCiAyMDEyLTAyLTE3ICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTA4MDcxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCBmODMzODcwNzczNGIwN2NlOGRlZmQzMGQ4ZmNiYWVmODM3Njlh
NjUyLi42YjE3NjYxZWVlNDM5YWRiYWQ0ZjJmYTA2NmYxODYxZTQ1NDI1M2RmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
MzE3Nyw3ICszMTc3LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAg
ICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbWV0ZXItPm5hbWU7CiAgICAgICAgIG15ICRwYXJhbVR5
cGUgPSAkcGFyYW1ldGVyLT50eXBlOwogCi0gICAgICAgIGlmICgkcGFyYW1ldGVyLT50eXBlIGVx
ICJOb2RlRmlsdGVyIiB8fCAkcGFyYW1ldGVyLT50eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7
CisgICAgICAgIGlmICgkcGFyYW1ldGVyLT50eXBlIGVxICJJREJLZXkiIHx8ICRwYXJhbWV0ZXIt
PnR5cGUgZXEgIk5vZGVGaWx0ZXIiIHx8ICRwYXJhbWV0ZXItPnR5cGUgZXEgIlhQYXRoTlNSZXNv
bHZlciIpIHsKICAgICAgICAgICAgIHB1c2ggQGFyZ3VtZW50cywgIiRwYXJhbU5hbWUuZ2V0KCki
OwogICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJP
ZmYoJHBhcmFtZXRlci0+dHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7
CiAgICAgICAgICAgICBwdXNoIEBhcmd1bWVudHMsICIkcGFyYW1OYW1lLT5wcm9wZXJ0eVJlZmVy
ZW5jZSgpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggYjQ0YjY4MzQxMDRhMmU3MDNhZmIzMGM1OGRiMmYyNDcy
N2YwZDdmMy4uNDhhNjhkNzc5MjQxZGM4MTAwOTc1Yjc2NjhiZThhMTI0NGNjY2UwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAKQEAgLTEwNzYsNyArMTA3Niw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
aWRiS2V5Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlwZUVycm9yKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwog
ICAgIEVYQ0VQVElPTl9CTE9DSyhSZWZQdHI8SURCS2V5Piwga2V5LCBjcmVhdGVJREJLZXlGcm9t
VmFsdWUoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpOwotICAgIGltcC0+aWRiS2V5KGtleSk7CisgICAgaW1wLT5pZGJLZXkoa2V5LmdldCgpKTsK
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDUyOGQxZTkx
MjBjZGNiNzBmOTI0ZjhjZDNkNzdmODcxYmRlYzE2MGYuLmY0MjNiYjAwN2YyMmM2Y2Y2Nzk5OTlm
ZjYzNmIzZjJkMDZmNTc2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtOTY4LDcgKzk2OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0K
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9j
dXJyZW50S2V5OyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVy
PiBvYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIoKSA9IDA7IC8vIEZJWE1FOiBJIGRvbid0IHRo
aW5rIHRoaXMgaXMgYWN0dWFsbHkgdXNlZCwgc28gZHJvcCBpdC4KKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IG9iamVj
dFN0b3JlUmVjb3JkSWRlbnRpZmllcigpID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3QgaW5kZXhE
YXRhSWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyB9CiAKQEAgLTExMTcsNyAr
MTExNywxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCiAgICAgdmlydHVh
bCBTdHJpbmcgdmFsdWUoKSB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4g
b2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpPYmplY3RT
dG9yZVJlY29yZElkZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpIE9WRVJS
SURFCisgICAgeworICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIH0KICAgICB2aXJ0
dWFsIGludDY0X3QgaW5kZXhEYXRhSWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
MDsgfQogICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCkBAIC0xMTM0LDYgKzEx
MzcsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFN0cmluZyBtX2N1cnJlbnRWYWx1ZTsKKyAg
ICBSZWZQdHI8TGV2ZWxEQlJlY29yZElkZW50aWZpZXI+IG1faWRlbnRpZmllcjsKIH07CiAKIGJv
b2wgT2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCkBAIC0xMTU0LDcgKzEx
NTgsOSBAQCBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAg
IEFTU0VSVChxKTsKICAgICBpZiAoIXEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAodm9p
ZCkgdmVyc2lvbjsKKworICAgIC8vIEZJWE1FOiBUaGlzIHJlLWVuY29kZXMgd2hhdCB3YXMganVz
dCBkZWNvZGVkOyB0cnkgYW5kIG9wdGltaXplLgorICAgIG1faWRlbnRpZmllciA9IExldmVsREJS
ZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoZW5jb2RlSURCS2V5KCptX2N1cnJlbnRLZXkpLCB2ZXJz
aW9uKTsKIAogICAgIG1fY3VycmVudFZhbHVlID0gZGVjb2RlU3RyaW5nKHEsIG1faXRlcmF0b3It
PnZhbHVlKCkuZW5kKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwCmluZGV4IGU0Yzk2NWIxNDhmMTM4MWJhM2FkNWE3YWVhM2I2YjkwNTA2NTliOWMuLmZiZTM3
NmI1ZTJiODUyYmU2ZGFmYzgzYWY3ZjRmMzVhYWY0NWI3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0xMjEsOSArMTIxLDI1IEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCitQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFrZXlSYW5nZSkgeworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAg
IG1fYmFja2VuZC0+ZGVsZXRlRnVuY3Rpb24oa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0LT5tYXJr
RWFybHlEZWF0aCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlcXVl
c3QucmVsZWFzZSgpOworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoa2V5ICYmIChr
ZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgeworICAgIGlmICgha2V5IHx8ICFr
ZXktPnZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9F
UlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuaAppbmRleCAyNTE2NjYzZmFiMTliOTQ0YTU5ZDVmOTMwOTY0Y2QzNjE3MzE2ZmRm
Li42MGE5YjFkM2YyMjBjODdiMzgwYjIwZmI2N2I2NDE3MzZhMjYxODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBhZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25D
b2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
aWRsCmluZGV4IGNlYTkyYWIxMGYxZThhMjc1OTBlNGI1YmY4YjU4MGQ1Yjg0NGE5MTMuLjViY2Fm
OGVjNGM4ZTEwNTViZDYxNzNkYjQ3ZWM2YjczOTNjODY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCkBAIC0zNyw2ICszNyw4IEBAIG1vZHVsZSBzdG9yYWdl
IHsKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBhZGQoaW4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlIHZhbHVlLCBpbiBbT3B0aW9uYWxdIElEQktleSBrZXkpCiAgICAgICAg
ICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJl
cXVlc3QgZGVsZXRlKGluIElEQktleVJhbmdlIGtleVJhbmdlKQorICAgICAgICAgICAgcmFpc2Vz
IChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0
ZShpbiBJREJLZXkga2V5KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlv
bik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0
IGNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwCmluZGV4IGYwN2VhM2VlYmE2ZWU3YTMwNWU3ZTk1ZjIzM2NhNzBlOTkw
N2U2NjguLjY5YTNiMjQ4YmEwYTA3YTk5YWQxMTc3ZTAxNjY3ZTY4ZjUxM2U0NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNw
cApAQCAtMzI2LDQxICszMjYsNjAgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpw
dXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKIAogdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktl
eT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKKyAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CisgICAgaWYgKCFrZXkgfHwgIWtl
eS0+dmFsaWQoKSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAg
IHJldHVybjsKKworICAgIGRlbGV0ZUZ1bmN0aW9uKGtleVJhbmdlLnJlbGVhc2UoKSwgcHJwQ2Fs
bGJhY2tzLCB0cmFuc2FjdGlvbiwgZWMpOworfQorCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKICAgICBp
ZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7CiAg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4g
b2JqZWN0U3RvcmUgPSB0aGlzOwotICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKKyAg
ICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gcHJwS2V5UmFuZ2U7CiAgICAgUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIGlmICgha2V5IHx8
ICFrZXktPnZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpkZWxldGVJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGtleSwgY2FsbGJhY2tzKSkpCisgICAgaWYg
KCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzKSkpCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUjsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpk
ZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRp
Zmllcj4gcmVjb3JkSWRlbnRpZmllciA9IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+Y3Jl
YXRlSW52YWxpZFJlY29yZElkZW50aWZpZXIoKTsKLSAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2Jh
Y2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZShvYmplY3RTdG9yZS0+bV9kYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsK
LSAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpib29s
ZWFuVmFsdWUoZmFsc2UpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZp
ZXI7CiAKLSAgICBmb3IgKEluZGV4TWFwOjppdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLT5tX2lu
ZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5lbmQoKTsgKytpdCkg
ewotICAgICAgICBpZiAoIWl0LT5zZWNvbmQtPmhhc1ZhbGlkSWQoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOyAvLyBUaGUgaW5kZXggb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBkb2VzIG5v
dCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgeWV0LgorICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6
OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vyc29yID0gb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3Jl
LT5vcGVuT2JqZWN0U3RvcmVDdXJzb3Iob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmUtPmlkKCksIGtleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgIGlmIChi
YWNraW5nU3RvcmVDdXJzb3IpIHsKIAotICAgICAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2JhY2tp
bmdTdG9yZS0+ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNl
SWQsIG9iamVjdFN0b3JlLT5pZCgpLCBpdC0+c2Vjb25kLT5pZCgpLCByZWNvcmRJZGVudGlmaWVy
LmdldCgpKSkKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBkbyB7
CisgICAgICAgICAgICByZWNvcmRJZGVudGlmaWVyID0gYmFja2luZ1N0b3JlQ3Vyc29yLT5vYmpl
Y3RTdG9yZVJlY29yZElkZW50aWZpZXIoKTsKKworICAgICAgICAgICAgZm9yIChJbmRleE1hcDo6
aXRlcmF0b3IgaXQgPSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG9iamVj
dFN0b3JlLT5tX2luZGV4ZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWl0
LT5zZWNvbmQtPmhhc1ZhbGlkSWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8v
IFRoZSBpbmRleCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgYnV0IGRvZXMgbm90IGV4aXN0IGlu
IHRoZSBkYXRhYmFzZSB5ZXQuCisKKyAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBvYmpl
Y3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChvYmplY3RT
dG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgaXQtPnNlY29uZC0+aWQoKSwg
cmVjb3JkSWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChz
dWNjZXNzLCBzdWNjZXNzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb2JqZWN0U3Rv
cmUtPm1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZVJlY29yZChvYmplY3RTdG9yZS0+
bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7
CisKKyAgICAgICAgfSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9u
KDApKTsKKworICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3ItPmNsb3NlKCk7CiAgICAgfQogCi0g
ICAgb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZVJlY29yZChv
YmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgcmVjb3JkSWRlbnRp
Zmllci5nZXQoKSk7Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpib29sZWFuVmFsdWUodHJ1ZSkpOworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUoKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oCmluZGV4IGJkYmYxZjE2YWY2MmFlOTJjODYyOTk5ZjIyODI3NmRhYmRm
NzU2YjUuLmNkZjM2MGNkZjA1NzNiZWQ0Njg0ZTE0Y2YzMjUzMThmNmY5ZDJjZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBA
IC02OCw3ICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHB1dChQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0
TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9u
KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFj
ZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHJpdmF0ZToKIAogICAg
IHN0YXRpYyB2b2lkIGdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIHB1dEludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
OworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBjbGVh
ckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2
b2lkIGNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW1wbD4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAg
c3RhdGljIHZvaWQgZGVsZXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oCmluZGV4IDFkNzEyNWU2NDlkNTUzN2QyMzNhZjNkZDcxYWEwMjk2NmJm
YWM2MzMuLjVlNmJmNDljNTY0MDRlOTE1MDQ1NDkyN2ZlNzU4YTkyNWE5Yjk5NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2UuaApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2aXJ0dWFsIHZv
aWQgcHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJL
ZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IDcxZmI1NzFkMTI1ZTQzNDJj
MGM5YzQ0MzEyODFjNmY0ZmQ1ZjA2ZjQuLjQ4NTQ4N2FjMDE4NjdlMzRmOWM0ZjE2ODMyNDVjYTM1
OGY3OTFkMjMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTk4LDYgKzk4LDE0IEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQCiAgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24o
a2V5LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94
eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCit2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZFByb3h5OjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
Ly8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIg
dG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVt
ZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgbV93ZWJJREJPYmpl
Y3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24oa2V5UmFuZ2UsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBs
KGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBl
Yyk7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNsZWFyKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2Fj
dGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2Jq
ZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAppbmRleCA2ZDMzNTYzNWM1ZjVj
OWVjNTA0MDhhMjM5NWRhZGM0YzE0NzljMzNkLi5jMTlhMGYwYTRjMDk0YjQ3OWVlMjZiMGYwZGM4
ZmQwNDNlMDIxZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cHV0KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxi
YWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4s
IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5jcHAKaW5kZXggMWVjOGFmNWJjMmMwNWQ4OWRmM2I1ZmE4MTIzZDllZjU0MTAzODIwYi4u
NTVhNmFkZDU3YTA5YWJiNDA5NmVmZjNiMzVkOGViNTg3YWFjYzlhNiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC04
Miw2ICs4MiwxMSBAQCB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6ZGVsZXRlRnVuY3Rpb24o
Y29uc3QgV2ViSURCS2V5JiBrZXksIFdlYklEQkNhbGxiYWNrcwogICAgIG1fb2JqZWN0U3RvcmUt
PmRlbGV0ZUZ1bmN0aW9uKGtleSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihj
YWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KCksIGVjKTsKIH0KIAordm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OmRlbGV0ZUZ1bmN0aW9u
KGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgbV9vYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24oa2V5UmFuZ2UsIElE
QkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9u
LmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7Cit9CisKIHZvaWQgV2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjpjbGVhcihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBtX29iamVjdFN0b3JlLT5jbGVhcihJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFk
b3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuaAppbmRleCA2ZjU4MGYwMWFkMDMxNjJjNTViYmFjMGZmYmRmMmRk
NzEzYWM5MzU4Li5kMjIwMmZjN2YzNDU4OTA2OWY2ZjU2NjdkZDJmZjQxYWU2ZDc1Y2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwu
aApAQCAtNTEsNyArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldChjb25zdCBXZWJJREJL
ZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBwdXQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlJiwgY29uc3QgV2ViSURCS2V5JiwgUHV0TW9kZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBkZWxldGVG
dW5jdGlvbihjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBkZWxldGVGdW5j
dGlvbihjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFu
c2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNv
bnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFj
a3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IC8vIEZJWE1FOiBSZW1vdmUgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiZWE3
NWJjMjFhY2ZjZjA2NTYzZDUyYTZhODA0NTY1NzRmOGMxNDcuLjlmMDk3NTVmNjVjNzA0ODdjM2Mw
Y2Y3MmUxOWQ4OWI1ZDlkMmQ3NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wMi0xMyAg
Sm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjog
U3VwcG9ydCBvdmVybG9hZGVkIG1ldGhvZHMgdGhhdCB0YWtlIElEQktleSBvciBJREJLZXlSYW5n
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzOTkK
KworICAgICAgICBUZXN0cyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpLiBUaGUg
c3BlYyBoYXMgYmVlbiB1cGRhdGVkIHN1Y2gKKyAgICAgICAgdGhhdCBkZWxldGUoKSBhbHdheXMg
eWllbGRzIGEgcmVzdWx0IG9mIHVuZGVmaW5lZCByYXRoZXIgdGhhbiBhIGJvb2xlYW4sCisgICAg
ICAgIHNvIG90aGVyIHRlc3QgZXhwZWN0YXRpb25zIGFyZSB1cGRhdGVkLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxl
dGUtcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGUtcmFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9kZWxldGUtcmVzdWx0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2RlbGV0ZS1yZXN1bHQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmpl
Y3RzdG9yZS1iYXNpY3MuanM6CisgICAgICAgIChjcmVhdGVJbmRleCk6CisgICAgICAgIChyZW1v
dmVTdWNjZXNzKToKKyAgICAgICAgKHJlbW92ZVN1Y2Nlc3NCdXROb3RUaGVyZSk6CisKIDIwMTIt
MDItMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHNraXBwaW5nIDIgbmV3IHRlc3QgZmFpbHVyZXMgb24gR1RLLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODRjYjc2YzE1ZjhiODVlNDFmMWI3MTBiNDgwZWM0MzE0OGFhMmMz
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0
ZS1yYW5nZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5MyBAQAorVGVzdCBJbmRleGVkREIncyBJ
REJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpIG1ldGhvZC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93
LndlYmtpdEluZGV4ZWREQgorUEFTUyBpbmRleGVkREIgIT0gbnVsbCBpcyB0cnVlCitJREJUcmFu
c2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNh
Y3Rpb24KK1BBU1MgSURCVHJhbnNhY3Rpb24gIT0gbnVsbCBpcyB0cnVlCitJREJLZXlSYW5nZSA9
IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2UKK1BBU1MgSURC
S2V5UmFuZ2UgIT0gbnVsbCBpcyB0cnVlCityZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKCdkZWxldGUtcmFuZ2UnKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdkZWxldGUtcmFu
Z2UnKQorZGIgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKQor
dHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKwor
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUucHV0KDEsMSkKK3N0
b3JlLnB1dCgyLDIpCitzdG9yZS5wdXQoMywzKQorc3RvcmUucHV0KDQsNCkKK3N0b3JlLnB1dCg1
LDUpCitzdG9yZS5wdXQoNiw2KQorc3RvcmUucHV0KDcsNykKK3N0b3JlLnB1dCg4LDgpCitzdG9y
ZS5wdXQoOSw5KQorc3RvcmUucHV0KDEwLDEwKQorc3RvcmUuZGVsZXRlKElEQktleVJhbmdlLmJv
dW5kKDMsIDgsIGZhbHNlLCBmYWxzZSkpCitnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4uLgorZXhw
ZWN0OiBbMSwyLDksMTBdCithY3R1YWw6IFsxLDIsOSwxMF0KK1BBU1MgTWF0Y2ghCisKK3RyYW5z
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCgxLDEpCitzdG9yZS5w
dXQoMiwyKQorc3RvcmUucHV0KDMsMykKK3N0b3JlLnB1dCg0LDQpCitzdG9yZS5wdXQoNSw1KQor
c3RvcmUucHV0KDYsNikKK3N0b3JlLnB1dCg3LDcpCitzdG9yZS5wdXQoOCw4KQorc3RvcmUucHV0
KDksOSkKK3N0b3JlLnB1dCgxMCwxMCkKK3N0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgz
LCA4LCB0cnVlLCBmYWxzZSkpCitnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4uLgorZXhwZWN0OiBb
MSwyLDMsOSwxMF0KK2FjdHVhbDogWzEsMiwzLDksMTBdCitQQVNTIE1hdGNoIQorCit0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpCitzdG9yZS5wdXQoMSwxKQorc3RvcmUucHV0
KDIsMikKK3N0b3JlLnB1dCgzLDMpCitzdG9yZS5wdXQoNCw0KQorc3RvcmUucHV0KDUsNSkKK3N0
b3JlLnB1dCg2LDYpCitzdG9yZS5wdXQoNyw3KQorc3RvcmUucHV0KDgsOCkKK3N0b3JlLnB1dCg5
LDkpCitzdG9yZS5wdXQoMTAsMTApCitzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UuYm91bmQoMywg
OCwgZmFsc2UsIHRydWUpKQorZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4KK2V4cGVjdDogWzEs
Miw4LDksMTBdCithY3R1YWw6IFsxLDIsOCw5LDEwXQorUEFTUyBNYXRjaCEKKwordHJhbnMgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorc3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUucHV0KDEsMSkKK3N0b3JlLnB1dCgy
LDIpCitzdG9yZS5wdXQoMywzKQorc3RvcmUucHV0KDQsNCkKK3N0b3JlLnB1dCg1LDUpCitzdG9y
ZS5wdXQoNiw2KQorc3RvcmUucHV0KDcsNykKK3N0b3JlLnB1dCg4LDgpCitzdG9yZS5wdXQoOSw5
KQorc3RvcmUucHV0KDEwLDEwKQorc3RvcmUuZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKDMsIDgs
IHRydWUsIHRydWUpKQorZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4KK2V4cGVjdDogWzEsMiwz
LDgsOSwxMF0KK2FjdHVhbDogWzEsMiwzLDgsOSwxMF0KK1BBU1MgTWF0Y2ghCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTRiY2E0
NDE0NzFjZTBiZTM2ZWZjMTExMzI3OTM5ZTdlMTM0NGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwKQEAgLTAsMCArMSwx
MDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuZGVsZXRlKElEQktleVJhbmdlKSBtZXRob2Qu
Iik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZXZhbEFu
ZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhl
ZERCIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIgIT0gbnVsbCIpOworICAgIGV2YWxB
bmRMb2coIklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53
ZWJraXRJREJUcmFuc2FjdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiSURCVHJhbnNhY3Rpb24g
IT0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coIklEQktleVJhbmdlID0gd2luZG93LklEQktleVJh
bmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiSURC
S2V5UmFuZ2UgIT0gbnVsbCIpOworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZSgnZGVsZXRlLXJhbmdlJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdk
ZWxldGUtcmFuZ2UnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGV2YWxB
bmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworCisgICAgICAgICAgICAg
ICAgdHJhbnMub25jb21wbGV0ZSA9IHJ1blRlc3RzOworICAgICAgICAgICAgfTsKKyAgICAgICAg
fTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrS2V5cyhleHBlY3RlZCwgY2FsbGJhY2spCit7
CisgICAgZGVidWcoImdldHRpbmcga2V5cyBmcm9tIHN0b3JlLi4uIik7CisgICAgZGVidWcoImV4
cGVjdDogIiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7CisgICAgdmFyIGtleXMgPSBbXTsK
KyAgICByZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKCkgeworICAgICAgICBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKKyAgICAgICAgaWYgKGN1
cnNvcikgeworICAgICAgICAgICAga2V5cy5wdXNoKGN1cnNvci5rZXkpOworICAgICAgICAgICAg
Y3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1Zygi
YWN0dWFsOiAiICsgSlNPTi5zdHJpbmdpZnkoa2V5cykpOworICAgICAgICAgICAgaWYgKEpTT04u
c3RyaW5naWZ5KGV4cGVjdGVkKSA9PT0gSlNPTi5zdHJpbmdpZnkoa2V5cykpIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJNYXRjaCEiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9uJ3QgbWF0Y2ghIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9OworfQorCit2YXIgdGVzdHMgPSBbCisgICAgeyBsb3dlcjogMywgdXBw
ZXI6IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiBbMSwg
MiwgOSwgMTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1
cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDMsIDksIDEwXX0sCisgICAgeyBsb3dl
cjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0
ZWQ6IFsxLCAyLCA4LCA5LCAxMF19LAorICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9w
ZW46IHRydWUsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCAzLCA4LCA5LCAxMF19
CitdOworCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7
CisgICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgICAgICAgaWYgKHRlc3QpIHsK
KyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyki
KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gMTA7ICsraSkgeworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgaSArICIsIiArIGkgKyAiKSIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKElEQktleVJhbmdl
LmJvdW5kKCIgKworICAgICAgICAgICAgICAgIHRlc3QubG93ZXIgKyAiLCAiICsKKyAgICAgICAg
ICAgICAgICB0ZXN0LnVwcGVyICsgIiwgIiArCisgICAgICAgICAgICAgICAgdGVzdC5sb3dlck9w
ZW4gKyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVyT3BlbiArICIpKSIpOworICAg
ICAgICAgICAgY2hlY2tLZXlzKHRlc3QuZXhwZWN0ZWQsIG5leHRUZXN0KTsKKyAgICAgICAgICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgICAgIHRy
YW5zLm9uY29tcGxldGUgPSBuZXh0VGVzdDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBuZXh0
VGVzdCgpOworfQorCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVz
dWx0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
ZGVsZXRlLXJlc3VsdC1leHBlY3RlZC50eHQKaW5kZXggNTU2NTBjM2M3M2UzZmQzMzA2YjdlYmIx
OWQ4NDdkYjZkMTM3M2Y1Ny4uMDc1NTRiMzM1OWU0NmU1MTcwN2Q1MDI2MDBjNTUyYTAwMjdmNzA5
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxl
dGUtcmVzdWx0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2RlbGV0ZS1yZXN1bHQtZXhwZWN0ZWQudHh0CkBAIC0xMyw5ICsxMyw5IEBAIG9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2lkJywg
YXV0b0luY3JlbWVudDogdHJ1ZSB9CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsKIGlk
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQp
OwotUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJl
c3VsdCBpcyB1bmRlZmluZWQKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOwotUEFT
UyBldmVudC50YXJnZXQucmVzdWx0IGlzIGZhbHNlCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQg
aXMgdW5kZWZpbmVkCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
ZGVsZXRlLXJlc3VsdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9kZWxldGUtcmVzdWx0Lmh0bWwKaW5kZXggYzEzNmEzNTE1ZmVlZWYzN2UxZmRhOGYzZDE2M2E2
MThhZWVmNTQyYy4uMmE1ZjRlYWZmMDAyNjdmYThjM2VjYzA1MGQ1MjljMzIzMjExNjY0MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVz
dWx0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxl
dGUtcmVzdWx0Lmh0bWwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gZGVsZXRlUmVjb3JkMSgp
CiAKIGZ1bmN0aW9uIGRlbGV0ZVJlY29yZDIoKQogewotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0IiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIs
ICJ1bmRlZmluZWQiKTsKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmRlbGV0ZShpZCk7Iik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5hbENoZWNr
OwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CkBAIC02
Niw3ICs2Niw3IEBAIGZ1bmN0aW9uIGRlbGV0ZVJlY29yZDIoKQogCiBmdW5jdGlvbiBmaW5hbENo
ZWNrKCkKIHsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJmYWxzZSIpOwor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwogICAgIGRv
bmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy1leHBlY3RlZC50
eHQKaW5kZXggZDliMWIyYWQyMWM0NWYyYTIyOTM1OTM3M2UxYWVhOGZmZWRmY2Y3Mi4uNDY3YzIy
MWVjMWUzZDEyMWQyODlkYjY2MTMwMGI4ZmEwNGE5ZGJiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1y
ZXF1aXJlZC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3IEBAIERlbGV0ZWQg
YWxsIG9iamVjdCBzdG9yZXMuCiBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdm
b28nKTsKIFBBU1Mgb2JqZWN0U3RvcmUucHV0KCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBvYmplY3RTdG9yZS5hZGQoKTsgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG9iamVjdFN0b3Jl
LmRlbGV0ZSgpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cy4KK1BBU1Mgb2JqZWN0U3RvcmUuZGVsZXRlKCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCiBQQVNTIG9iamVjdFN0b3JlLmdldCgpOyB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQ
QVNTIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmb28nKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRl
eCBiMzc5NWI2OWU1ZTMxNTMyYzYzZjIxOGFjNDcyY2MxMmUxMzU3MzFjLi5mOWE5MGMzZDViMjc2
OWE5OWU0YTc4ZDZiMDMxNGJlYTQzODI4OWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQK
QEAgLTExMiwxMCArMTEyLDEwIEBAIGdldFN1Y2Nlc3NEYXRlS2V5KCk6CiBQQVNTIGV2ZW50LnRh
cmdldC5yZXN1bHQueCBpcyAiZm9vIgogc3RvcmUuZGVsZXRlKCdrZXknKQogcmVtb3ZlU3VjY2Vz
cygpOgotUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0
LnJlc3VsdCBpcyB1bmRlZmluZWQKIHN0b3JlLmRlbGV0ZSgna2V5JykKLXJlbW92ZVN1Y2Nlc3NC
dXRGYWxzZSgpOgotUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIGZhbHNlCityZW1vdmVTdWNj
ZXNzQnV0Tm90VGhlcmUoKToKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQK
IHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZQogUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRv
IHN0b3JlLmdldCgpLgogRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCh7fSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2lj
cy13b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dAppbmRleCAxZjM0YjU4ZWU4MzM1
NTBiMTc3MzIzMTUxMjE3NjQ5MWYxZjM3MTIxLi5mZGNjNDZkNGY4YzI3YmNjYTc1MmI3ZjRkODhk
NzZmMTJhMzQwZGU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0
CkBAIC0xMTMsMTAgKzExMywxMCBAQCBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQu
eSBpcyAidmFsdWUiCiBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueCBpcyAiZm9v
IgogW1dvcmtlcl0gc3RvcmUuZGVsZXRlKCdrZXknKQogW1dvcmtlcl0gcmVtb3ZlU3VjY2Vzcygp
OgotUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1BBU1MgW1dvcmtl
cl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKIFtXb3JrZXJdIHN0b3JlLmRlbGV0
ZSgna2V5JykKLVtXb3JrZXJdIHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpOgotUEFTUyBbV29ya2Vy
XSBldmVudC50YXJnZXQucmVzdWx0IGlzIGZhbHNlCitbV29ya2VyXSByZW1vdmVTdWNjZXNzQnV0
Tm90VGhlcmUoKToKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmlu
ZWQKIFtXb3JrZXJdIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZQogW1dvcmtlcl0gUGFzc2lu
ZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLgogW1dvcmtlcl0gRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCh7fSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzCmluZGV4
IDkzOTE4YWI0MDk4MTk2ODNhM2I1MWQ5MDBiOTc1NzAzZDI2YTI2YzMuLmZmNGMwM2RiNTg3Y2I0
ODY0YzY2YzE0MjYxMzE5YTc1YzY2ZGQxZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcwpA
QCAtOTAsNyArOTAsNyBAQCBmdW5jdGlvbiBjcmVhdGVJbmRleCgpCiAgICAgc2hvdWxkQmVUcnVl
KCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOwogICAgIGluZGV4ID0g
ZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhOYW1lJykiKTsKICAgICBzaG91
bGRCZVRydWUoImluZGV4ICE9PSBudWxsIik7Ci0gCisKICAgICBkZWJ1ZygiQXNrIGZvciBhbiBp
bmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7CiAgICAgdHJ5IHsKICAgICAgICAgZGVidWcoImlu
ZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOwpAQCAtMjQ4LDE4ICsyNDgsMTggQEAgZnVuY3Rp
b24gcmVtb3ZlU3VjY2VzcyhldnQpCiB7CiAgICAgZXZlbnQgPSBldnQ7CiAgICAgZGVidWcoInJl
bW92ZVN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0
cnVlIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7
CiAKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dEZhbHNlOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dE5vdFRoZXJlOwogICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogfQogCi1mdW5jdGlvbiByZW1vdmVTdWNjZXNz
QnV0RmFsc2UoZXZ0KQorZnVuY3Rpb24gcmVtb3ZlU3VjY2Vzc0J1dE5vdFRoZXJlKGV2dCkKIHsK
ICAgICBldmVudCA9IGV2dDsKLSAgICBkZWJ1ZygicmVtb3ZlU3VjY2Vzc0J1dEZhbHNlKCk6Iik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiZmFsc2UiKTsKKyAgICBkZWJ1
ZygicmVtb3ZlU3VjY2Vzc0J1dE5vdFRoZXJlKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CiAgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBldmVudC50YXJnZXQuc291cmNlIik7CiAKICAgICBkZWJ1ZygiUGFzc2luZyBhbiBp
bnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgpLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127641</attachid>
            <date>2012-02-17 13:15:41 -0800</date>
            <delta_ts>2012-02-23 16:49:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-78399-20120217131540.patch</filename>
            <type>text/plain</type>
            <size>36386</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBhYjY4NGIyMzY3M2I4
M2E3Yjg4OGFiYjVjODIzMzhjYTE3MWI1NC4uN2E2M2MyYzU5OGJhMjk0YWNlZjgyMzk2ZDQ0OGU0
MDYyM2NhOWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAyLTEzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTdXBw
b3J0IG92ZXJsb2FkZWQgbWV0aG9kcyB0aGF0IHRha2UgSURCS2V5IG9yIElEQktleVJhbmdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM5OQorCisg
ICAgICAgIEltcGxlbWVudHMgSURCT2JqZWN0U3RvcmUuZGVsZXRlKElEQktleVJhbmdlKSB0byBl
eGVyY2lzZSB0aGUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1s
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKTogVXNlIC5nZXQoKSB0byBkaXNhbWJpZ3Vh
dGUgd2hlbiBwYXNzaW5nIFJlZlB0ci4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcDogVXBkYXRlIHRlc3QgZXhwZWN0YXRpb25zLgorICAgICAgICAqIHN0
b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChJREJPYmplY3RTdG9yZSk6
CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGw6CisgICAgICAgICogc3RvcmFn
ZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50
ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOgor
ICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgICogc3RvcmFnZS9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAxMi0wMi0xNyAgSWx5YSBUaWto
b25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEwODA3MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDg3M2VhN2Qw
Yjc0MDEwMGE2NGZhYjM3ODYyMzU2ZjBhMDFlMzgwOC4uMmExMTFjZGVhOTJlMjAzZGFjZGYwMzAx
OWE2OWJkNzIyZGIyOTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxMi0wMi0xMyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogU3VwcG9ydCBvdmVybG9hZGVkIG1ldGhvZHMgdGhhdCB0YWtlIElE
QktleSBvciBJREJLZXlSYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzgzOTkKKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBXZWJLaXQgQVBJIGZv
ciBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpLAorICAgICAgICB0byBleGVyY2lz
ZSB0aGUgb3ZlcmxvYWQgY2FwYWJpbGl0eS4KKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgorCisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5Lmg6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSk6CisgICAgICAg
ICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJJREJPYmpl
Y3RTdG9yZUltcGwpOgorCiAyMDEyLTAyLTE3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA4MDcxLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQppbmRleCBmODMzODcwNzczNGIwN2NlOGRlZmQzMGQ4ZmNiYWVmODM3NjlhNjUyLi42YjE3NjYx
ZWVlNDM5YWRiYWQ0ZjJmYTA2NmYxODYxZTQ1NDI1M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzE3Nyw3ICszMTc3
LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgbXkgJHBhcmFt
TmFtZSA9ICRwYXJhbWV0ZXItPm5hbWU7CiAgICAgICAgIG15ICRwYXJhbVR5cGUgPSAkcGFyYW1l
dGVyLT50eXBlOwogCi0gICAgICAgIGlmICgkcGFyYW1ldGVyLT50eXBlIGVxICJOb2RlRmlsdGVy
IiB8fCAkcGFyYW1ldGVyLT50eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgIGlm
ICgkcGFyYW1ldGVyLT50eXBlIGVxICJJREJLZXkiIHx8ICRwYXJhbWV0ZXItPnR5cGUgZXEgIk5v
ZGVGaWx0ZXIiIHx8ICRwYXJhbWV0ZXItPnR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKICAg
ICAgICAgICAgIHB1c2ggQGFyZ3VtZW50cywgIiRwYXJhbU5hbWUuZ2V0KCkiOwogICAgICAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHBhcmFtZXRl
ci0+dHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7CiAgICAgICAgICAg
ICBwdXNoIEBhcmd1bWVudHMsICIkcGFyYW1OYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgpIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAKaW5kZXggYjQ0YjY4MzQxMDRhMmU3MDNhZmIzMGM1OGRiMmYyNDcyN2YwZDdmMy4uNDhh
NjhkNzc5MjQxZGM4MTAwOTc1Yjc2NjhiZThhMTI0NGNjY2UwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTEw
NzYsNyArMTA3Niw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRiS2V5Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
Ik5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEVYQ0VQVElP
Tl9CTE9DSyhSZWZQdHI8SURCS2V5Piwga2V5LCBjcmVhdGVJREJLZXlGcm9tVmFsdWUoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwotICAgIGlt
cC0+aWRiS2V5KGtleSk7CisgICAgaW1wLT5pZGJLZXkoa2V5LmdldCgpKTsKICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDUyOGQxZTkxMjBjZGNiNzBmOTI0
ZjhjZDNkNzdmODcxYmRlYzE2MGYuLmY0MjNiYjAwN2YyMmM2Y2Y2Nzk5OTlmZjYzNmIzZjJkMDZm
NTc2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2lu
Z1N0b3JlLmNwcApAQCAtOTY4LDcgKzk2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9
CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBvYmplY3RTdG9y
ZVJlY29yZElkZW50aWZpZXIoKSA9IDA7IC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoaXMgaXMg
YWN0dWFsbHkgdXNlZCwgc28gZHJvcCBpdC4KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3Jk
SWRlbnRpZmllcigpID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3QgaW5kZXhEYXRhSWQoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyB9CiAKQEAgLTExMTcsNyArMTExNywxMCBAQCBw
dWJsaWM6CiAKICAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCiAgICAgdmlydHVhbCBTdHJpbmcgdmFs
dWUoKSB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gb2JqZWN0U3RvcmVS
ZWNvcmRJZGVudGlmaWVyKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29yZElk
ZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpIE9WRVJSSURFCisgICAgewor
ICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIH0KICAgICB2aXJ0dWFsIGludDY0X3Qg
aW5kZXhEYXRhSWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCkBAIC0xMTM0LDYgKzExMzcsNyBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIFN0cmluZyBtX2N1cnJlbnRWYWx1ZTsKKyAgICBSZWZQdHI8TGV2
ZWxEQlJlY29yZElkZW50aWZpZXI+IG1faWRlbnRpZmllcjsKIH07CiAKIGJvb2wgT2JqZWN0U3Rv
cmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCkBAIC0xMTU0LDcgKzExNTgsOSBAQCBib29s
IE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIEFTU0VSVChxKTsK
ICAgICBpZiAoIXEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAodm9pZCkgdmVyc2lvbjsK
KworICAgIC8vIEZJWE1FOiBUaGlzIHJlLWVuY29kZXMgd2hhdCB3YXMganVzdCBkZWNvZGVkOyB0
cnkgYW5kIG9wdGltaXplLgorICAgIG1faWRlbnRpZmllciA9IExldmVsREJSZWNvcmRJZGVudGlm
aWVyOjpjcmVhdGUoZW5jb2RlSURCS2V5KCptX2N1cnJlbnRLZXkpLCB2ZXJzaW9uKTsKIAogICAg
IG1fY3VycmVudFZhbHVlID0gZGVjb2RlU3RyaW5nKHEsIG1faXRlcmF0b3ItPnZhbHVlKCkuZW5k
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IGU0
Yzk2NWIxNDhmMTM4MWJhM2FkNWE3YWVhM2I2YjkwNTA2NTliOWMuLmZiZTM3NmI1ZTJiODUyYmU2
ZGFmYzgzYWY3ZjRmMzVhYWY0NWI3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwCkBAIC0xMjEsOSArMTIxLDI1IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCFrZXlSYW5nZSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVm
UHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURC
QW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIG1fYmFja2VuZC0+
ZGVsZXRlRnVuY3Rpb24oa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgp
OworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9
PSBJREJLZXk6OkludmFsaWRUeXBlKSkgeworICAgIGlmICgha2V5IHx8ICFrZXktPnZhbGlkKCkp
IHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaApp
bmRleCAyNTE2NjYzZmFiMTliOTQ0YTU5ZDVmOTMwOTY0Y2QzNjE3MzE2ZmRmLi42MGE5YjFkM2Yy
MjBjODdiMzgwYjIwZmI2N2I2NDE3MzZhMjYxODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29k
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IGNl
YTkyYWIxMGYxZThhMjc1OTBlNGI1YmY4YjU4MGQ1Yjg0NGE5MTMuLjViY2FmOGVjNGM4ZTEwNTVi
ZDYxNzNkYjQ3ZWM2YjczOTNjODY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuaWRsCkBAIC0zNyw2ICszNyw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAg
ICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBhZGQoaW4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlIHZhbHVlLCBpbiBbT3B0aW9uYWxdIElEQktleSBrZXkpCiAgICAgICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRl
KGluIElEQktleVJhbmdlIGtleVJhbmdlKQorICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFz
ZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJ
bXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZShpbiBJREJLZXkg
a2V5KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNsZWFyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwCmluZGV4IGYwN2VhM2VlYmE2ZWU3YTMwNWU3ZTk1ZjIzM2NhNzBlOTkwN2U2NjguLjY5YTNi
MjQ4YmEwYTA3YTk5YWQxMTc3ZTAxNjY3ZTY4ZjUxM2U0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMzI2LDQx
ICszMjYsNjAgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKIAogdm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBSZWZQ
dHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CisgICAgaWYgKCFrZXkgfHwgIWtleS0+dmFsaWQoKSkg
eworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGRlbGV0ZUZ1bmN0aW9uKGtleVJhbmdlLnJlbGVhc2UoKSwgcHJwQ2FsbGJhY2tzLCB0cmFu
c2FjdGlvbiwgZWMpOworfQorCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0
ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKICAgICBpZiAodHJhbnNhY3Rp
b24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUg
PSB0aGlzOwotICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKKyAgICBSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlID0gcHJwS2V5UmFuZ2U7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIGlmICgha2V5IHx8ICFrZXktPnZhbGlk
KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRl
cm5hbCwgb2JqZWN0U3RvcmUsIGtleSwgY2FsbGJhY2tzKSkpCisgICAgaWYgKCF0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6ZGVsZXRlSW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSkp
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
ZGVsZXRlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIFJl
ZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gcmVjb3Jk
SWRlbnRpZmllciA9IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW52YWxpZFJl
Y29yZElkZW50aWZpZXIoKTsKLSAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+
a2V5RXhpc3RzSW5PYmplY3RTdG9yZShvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RT
dG9yZS0+aWQoKSwgKmtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKLSAgICAgICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpib29sZWFuVmFsdWUoZmFs
c2UpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXI7CiAKLSAgICBm
b3IgKEluZGV4TWFwOjppdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4o
KTsgaXQgIT0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBp
ZiAoIWl0LT5zZWNvbmQtPmhhc1ZhbGlkSWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBU
aGUgaW5kZXggb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBkb2VzIG5vdCBleGlzdCBpbiB0
aGUgZGF0YWJhc2UgeWV0LgorICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFj
a2luZ1N0b3JlQ3Vyc29yID0gb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0
U3RvcmVDdXJzb3Iob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUtPmlkKCks
IGtleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgIGlmIChiYWNraW5nU3RvcmVD
dXJzb3IpIHsKIAotICAgICAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+ZGVs
ZXRlSW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0
b3JlLT5pZCgpLCBpdC0+c2Vjb25kLT5pZCgpLCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBkbyB7CisgICAgICAgICAg
ICByZWNvcmRJZGVudGlmaWVyID0gYmFja2luZ1N0b3JlQ3Vyc29yLT5vYmplY3RTdG9yZVJlY29y
ZElkZW50aWZpZXIoKTsKKworICAgICAgICAgICAgZm9yIChJbmRleE1hcDo6aXRlcmF0b3IgaXQg
PSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG9iamVjdFN0b3JlLT5tX2lu
ZGV4ZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWl0LT5zZWNvbmQtPmhh
c1ZhbGlkSWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIFRoZSBpbmRleCBv
YmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgYnV0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhYmFz
ZSB5ZXQuCisKKyAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBvYmplY3RTdG9yZS0+bV9i
YWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChvYmplY3RTdG9yZS0+bV9kYXRh
YmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgaXQtPnNlY29uZC0+aWQoKSwgcmVjb3JkSWRlbnRp
Zmllci5nZXQoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNj
ZXNzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb2JqZWN0U3RvcmUtPm1fYmFja2lu
Z1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZVJlY29yZChvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlk
LCBvYmplY3RTdG9yZS0+aWQoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7CisKKyAgICAgICAg
fSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDApKTsKKworICAg
ICAgICBiYWNraW5nU3RvcmVDdXJzb3ItPmNsb3NlKCk7CiAgICAgfQogCi0gICAgb2JqZWN0U3Rv
cmUtPm1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZVJlY29yZChvYmplY3RTdG9yZS0+
bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7
Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpib29sZWFu
VmFsdWUodHJ1ZSkpOworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6dW5kZWZpbmVkVmFsdWUoKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5oCmluZGV4IGJkYmYxZjE2YWY2MmFlOTJjODYyOTk5ZjIyODI3NmRhYmRmNzU2YjUuLmNkZjM2
MGNkZjA1NzNiZWQ0Njg0ZTE0Y2YzMjUzMThmNmY5ZDJjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC02OCw3ICs2OCw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lk
IGdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIHB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4pOwotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHN0YXRp
YyB2b2lkIGRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBjbGVhckludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlu
ZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQg
ZGVsZXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBs
PiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IDFkNzEyNWU2NDlkNTUzN2QyMzNhZjNkZDcxYWEwMjk2NmJmYWM2MzMuLjVlNmJm
NDljNTY0MDRlOTE1MDQ1NDkyN2ZlNzU4YTkyNWE5Yjk5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAt
NjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgcHV0KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2Rl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9u
KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IDcxZmI1NzFkMTI1ZTQzNDJjMGM5YzQ0MzEyODFj
NmY0ZmQ1ZjA2ZjQuLjQ4NTQ4N2FjMDE4NjdlMzRmOWM0ZjE2ODMyNDVjYTM1OGY3OTFkMjMgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eS5jcHAKQEAgLTk4LDYgKzk4LDE0IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQCiAgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24oa2V5LCBuZXcgV2Vi
SURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURC
VHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
OjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhlIHRyYW5z
YWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBv
YmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9m
IElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0aW9uQmFj
a2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+ZGVs
ZXRlRnVuY3Rpb24oa2V5UmFuZ2UsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyks
ICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7Cit9CisKIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVy
IGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0
aGUgcmVuZGVyZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAppbmRleCA2ZDMzNTYzNWM1ZjVjOWVjNTA0MDhhMjM5
NWRhZGM0YzE0NzljMzNkLi5jMTlhMGYwYTRjMDk0YjQ3OWVlMjZiMGYwZGM4ZmQwNDNlMDIxZTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBnZXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcHV0KFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJL
ZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4s
IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5k
ZXggMWVjOGFmNWJjMmMwNWQ4OWRmM2I1ZmE4MTIzZDllZjU0MTAzODIwYi4uNTVhNmFkZDU3YTA5
YWJiNDA5NmVmZjNiMzVkOGViNTg3YWFjYzlhNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC04Miw2ICs4MiwxMSBA
QCB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6ZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURC
S2V5JiBrZXksIFdlYklEQkNhbGxiYWNrcwogICAgIG1fb2JqZWN0U3RvcmUtPmRlbGV0ZUZ1bmN0
aW9uKGtleSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwg
dHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0K
IAordm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OmRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklE
QktleVJhbmdlJiBrZXlSYW5nZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgbV9vYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24oa2V5UmFuZ2UsIElEQkNhbGxiYWNrc1By
b3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7Cit9CisKIHZvaWQgV2ViSURCT2JqZWN0U3Rv
cmVJbXBsOjpjbGVhcihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBtX29i
amVjdFN0b3JlLT5jbGVhcihJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxi
YWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwg
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9y
ZUltcGwuaAppbmRleCA2ZjU4MGYwMWFkMDMxNjJjNTViYmFjMGZmYmRmMmRkNzEzYWM5MzU4Li5k
MjIwMmZjN2YzNDU4OTA2OWY2ZjU2NjdkZDJmZjQxYWU2ZDc1Y2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApAQCAtNTEsNyAr
NTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldChjb25zdCBXZWJJREJLZXkmIGtleSwgV2Vi
SURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBwdXQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3Qg
V2ViSURCS2V5JiwgUHV0TW9kZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25z
dCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBX
ZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktl
eVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiZWE3NWJjMjFhY2ZjZjA2
NTYzZDUyYTZhODA0NTY1NzRmOGMxNDcuLjlmMDk3NTVmNjVjNzA0ODdjM2MwY2Y3MmUxOWQ4OWI1
ZDlkMmQ3NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wMi0xMyAgSm9zaHVhIEJlbGwg
IDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3VwcG9ydCBvdmVy
bG9hZGVkIG1ldGhvZHMgdGhhdCB0YWtlIElEQktleSBvciBJREJLZXlSYW5nZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzOTkKKworICAgICAgICBU
ZXN0cyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpLiBUaGUgc3BlYyBoYXMgYmVl
biB1cGRhdGVkIHN1Y2gKKyAgICAgICAgdGhhdCBkZWxldGUoKSBhbHdheXMgeWllbGRzIGEgcmVz
dWx0IG9mIHVuZGVmaW5lZCByYXRoZXIgdGhhbiBhIGJvb2xlYW4sCisgICAgICAgIHNvIG90aGVy
IHRlc3QgZXhwZWN0YXRpb25zIGFyZSB1cGRhdGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IFRv
bnkgQ2hhbmcuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFuZ2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFu
Z2UuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxl
dGUtcmVzdWx0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2RlbGV0ZS1yZXN1bHQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNp
Y3MuanM6CisgICAgICAgIChjcmVhdGVJbmRleCk6CisgICAgICAgIChyZW1vdmVTdWNjZXNzKToK
KyAgICAgICAgKHJlbW92ZVN1Y2Nlc3NCdXROb3RUaGVyZSk6CisKIDIwMTItMDItMTcgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHNraXBwaW5nIDIgbmV3IHRlc3QgZmFpbHVyZXMgb24gR1RLLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODRjYjc2YzE1ZjhiODVlNDFmMWI3MTBiNDgwZWM0MzE0OGFhMmMzYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw5MyBAQAorVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9y
ZS5kZWxldGUoSURCS2V5UmFuZ2UpIG1ldGhvZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4
ZWREQgorUEFTUyBpbmRleGVkREIgIT0gbnVsbCBpcyB0cnVlCitJREJUcmFuc2FjdGlvbiA9IHdp
bmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24KK1BBU1Mg
SURCVHJhbnNhY3Rpb24gIT0gbnVsbCBpcyB0cnVlCitJREJLZXlSYW5nZSA9IHdpbmRvdy5JREJL
ZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2UKK1BBU1MgSURCS2V5UmFuZ2UgIT0g
bnVsbCBpcyB0cnVlCityZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdkZWxldGUt
cmFuZ2UnKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdkZWxldGUtcmFuZ2UnKQorZGIgPSBy
ZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKQordHJhbnMgPSByZXF1
ZXN0LnJlc3VsdAorZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKwordHJhbnMgPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUucHV0KDEsMSkKK3N0b3JlLnB1dCgyLDIp
CitzdG9yZS5wdXQoMywzKQorc3RvcmUucHV0KDQsNCkKK3N0b3JlLnB1dCg1LDUpCitzdG9yZS5w
dXQoNiw2KQorc3RvcmUucHV0KDcsNykKK3N0b3JlLnB1dCg4LDgpCitzdG9yZS5wdXQoOSw5KQor
c3RvcmUucHV0KDEwLDEwKQorc3RvcmUuZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKDMsIDgsIGZh
bHNlLCBmYWxzZSkpCitnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4uLgorZXhwZWN0OiBbMSwyLDks
MTBdCithY3R1YWw6IFsxLDIsOSwxMF0KK1BBU1MgTWF0Y2ghCisKK3RyYW5zID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCgxLDEpCitzdG9yZS5wdXQoMiwyKQorc3Rv
cmUucHV0KDMsMykKK3N0b3JlLnB1dCg0LDQpCitzdG9yZS5wdXQoNSw1KQorc3RvcmUucHV0KDYs
NikKK3N0b3JlLnB1dCg3LDcpCitzdG9yZS5wdXQoOCw4KQorc3RvcmUucHV0KDksOSkKK3N0b3Jl
LnB1dCgxMCwxMCkKK3N0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgzLCA4LCB0cnVlLCBm
YWxzZSkpCitnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4uLgorZXhwZWN0OiBbMSwyLDMsOSwxMF0K
K2FjdHVhbDogWzEsMiwzLDksMTBdCitQQVNTIE1hdGNoIQorCit0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpCitzdG9yZS5wdXQoMSwxKQorc3RvcmUucHV0KDIsMikKK3N0b3Jl
LnB1dCgzLDMpCitzdG9yZS5wdXQoNCw0KQorc3RvcmUucHV0KDUsNSkKK3N0b3JlLnB1dCg2LDYp
CitzdG9yZS5wdXQoNyw3KQorc3RvcmUucHV0KDgsOCkKK3N0b3JlLnB1dCg5LDkpCitzdG9yZS5w
dXQoMTAsMTApCitzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UuYm91bmQoMywgOCwgZmFsc2UsIHRy
dWUpKQorZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4KK2V4cGVjdDogWzEsMiw4LDksMTBdCith
Y3R1YWw6IFsxLDIsOCw5LDEwXQorUEFTUyBNYXRjaCEKKwordHJhbnMgPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKQorc3RvcmUucHV0KDEsMSkKK3N0b3JlLnB1dCgyLDIpCitzdG9yZS5w
dXQoMywzKQorc3RvcmUucHV0KDQsNCkKK3N0b3JlLnB1dCg1LDUpCitzdG9yZS5wdXQoNiw2KQor
c3RvcmUucHV0KDcsNykKK3N0b3JlLnB1dCg4LDgpCitzdG9yZS5wdXQoOSw5KQorc3RvcmUucHV0
KDEwLDEwKQorc3RvcmUuZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKDMsIDgsIHRydWUsIHRydWUp
KQorZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4KK2V4cGVjdDogWzEsMiwzLDgsOSwxMF0KK2Fj
dHVhbDogWzEsMiwzLDgsOSwxMF0KK1BBU1MgTWF0Y2ghCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGUtcmFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTRiY2E0NDE0NzFjZTBiZTM2
ZWZjMTExMzI3OTM5ZTdlMTM0NGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwKQEAgLTAsMCArMSwxMDYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgSURCT2JqZWN0U3RvcmUuZGVsZXRlKElEQktleVJhbmdlKSBtZXRob2QuIik7CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZXZhbEFuZExvZygiaW5kZXhl
ZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIik7CisgICAg
c2hvdWxkQmVUcnVlKCJpbmRleGVkREIgIT0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coIklEQlRy
YW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFu
c2FjdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiSURCVHJhbnNhY3Rpb24gIT0gbnVsbCIpOwor
ICAgIGV2YWxBbmRMb2coIklEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRv
dy53ZWJraXRJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiSURCS2V5UmFuZ2UgIT0g
bnVsbCIpOworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRh
YmFzZSgnZGVsZXRlLXJhbmdlJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdkZWxldGUtcmFuZ2Un
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworCisgICAgICAgICAgICAgICAgdHJhbnMub25j
b21wbGV0ZSA9IHJ1blRlc3RzOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGNoZWNrS2V5cyhleHBlY3RlZCwgY2FsbGJhY2spCit7CisgICAgZGVidWco
ImdldHRpbmcga2V5cyBmcm9tIHN0b3JlLi4uIik7CisgICAgZGVidWcoImV4cGVjdDogIiArIEpT
T04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7CisgICAgdmFyIGtleXMgPSBbXTsKKyAgICByZXF1ZXN0
ID0gc3RvcmUub3BlbkN1cnNvcigpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAg
ICAgICAgICAga2V5cy5wdXNoKGN1cnNvci5rZXkpOworICAgICAgICAgICAgY3Vyc29yLmNvbnRp
bnVlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZygiYWN0dWFsOiAiICsg
SlNPTi5zdHJpbmdpZnkoa2V5cykpOworICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV4
cGVjdGVkKSA9PT0gSlNPTi5zdHJpbmdpZnkoa2V5cykpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJNYXRjaCEiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiRG9uJ3QgbWF0Y2ghIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9OworfQorCit2YXIgdGVzdHMgPSBbCisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiBbMSwgMiwgOSwgMTBdfSwK
KyAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogWzEsIDIsIDMsIDksIDEwXX0sCisgICAgeyBsb3dlcjogMywgdXBwZXI6
IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCA4
LCA5LCAxMF19LAorICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46IHRydWUsIHVw
cGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCAzLCA4LCA5LCAxMF19CitdOworCitmdW5j
dGlvbiBydW5UZXN0cygpCit7CisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIHZh
ciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgICAgICAgaWYgKHRlc3QpIHsKKyAgICAgICAgICAg
IGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAg
ICAgIGZvciAoaSA9IDE7IGkgPD0gMTA7ICsraSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCgiICsgaSArICIsIiArIGkgKyAiKSIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKCIgKwor
ICAgICAgICAgICAgICAgIHRlc3QubG93ZXIgKyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0
LnVwcGVyICsgIiwgIiArCisgICAgICAgICAgICAgICAgdGVzdC5sb3dlck9wZW4gKyAiLCAiICsK
KyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVyT3BlbiArICIpKSIpOworICAgICAgICAgICAgY2hl
Y2tLZXlzKHRlc3QuZXhwZWN0ZWQsIG5leHRUZXN0KTsKKyAgICAgICAgICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBuZXh0VGVzdDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBuZXh0VGVzdCgpOworfQor
Cit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZGVsZXRlLXJlc3Vs
dC1leHBlY3RlZC50eHQKaW5kZXggNTU2NTBjM2M3M2UzZmQzMzA2YjdlYmIxOWQ4NDdkYjZkMTM3
M2Y1Ny4uMDc1NTRiMzM1OWU0NmU1MTcwN2Q1MDI2MDBjNTUyYTAwMjdmNzA5YSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Rl
bGV0ZS1yZXN1bHQtZXhwZWN0ZWQudHh0CkBAIC0xMyw5ICsxMyw5IEBAIG9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVu
dDogdHJ1ZSB9CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsKIGlkID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOwotUEFTUyBldmVu
dC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRl
ZmluZWQKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOwotUEFTUyBldmVudC50YXJn
ZXQucmVzdWx0IGlzIGZhbHNlCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVk
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZGVsZXRlLXJlc3Vs
dC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVz
dWx0Lmh0bWwKaW5kZXggYzEzNmEzNTE1ZmVlZWYzN2UxZmRhOGYzZDE2M2E2MThhZWVmNTQyYy4u
MmE1ZjRlYWZmMDAyNjdmYThjM2VjYzA1MGQ1MjljMzIzMjExNjY0MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0
bWwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gZGVsZXRlUmVjb3JkMSgpCiAKIGZ1bmN0aW9u
IGRlbGV0ZVJlY29yZDIoKQogewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
InRydWUiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQi
KTsKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0
ZShpZCk7Iik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5hbENoZWNrOwogICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CkBAIC02Niw3ICs2Niw3IEBA
IGZ1bmN0aW9uIGRlbGV0ZVJlY29yZDIoKQogCiBmdW5jdGlvbiBmaW5hbENoZWNrKCkKIHsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJmYWxzZSIpOworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwogICAgIGRvbmUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVx
dWlyZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKaW5kZXggZDli
MWIyYWQyMWM0NWYyYTIyOTM1OTM3M2UxYWVhOGZmZWRmY2Y3Mi4uNDY3YzIyMWVjMWUzZDEyMWQy
ODlkYjY2MTMwMGI4ZmEwNGE5ZGJiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1
bWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3IEBAIERlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCiBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsKIFBBU1Mg
b2JqZWN0U3RvcmUucHV0KCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzLgogUEFTUyBvYmplY3RTdG9yZS5hZGQoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG9iamVjdFN0b3JlLmRlbGV0ZSgpOyB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mgb2Jq
ZWN0U3RvcmUuZGVsZXRlKCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CiBQQVNTIG9iamVjdFN0b3JlLmdldCgpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3Qg
ZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoKTsgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIG9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdmb28nKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBiMzc5NWI2OWU1
ZTMxNTMyYzYzZjIxOGFjNDcyY2MxMmUxMzU3MzFjLi5mOWE5MGMzZDViMjc2OWE5OWU0YTc4ZDZi
MDMxNGJlYTQzODI4OWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTExMiwxMCAr
MTEyLDEwIEBAIGdldFN1Y2Nlc3NEYXRlS2V5KCk6CiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQu
eCBpcyAiZm9vIgogc3RvcmUuZGVsZXRlKCdrZXknKQogcmVtb3ZlU3VjY2VzcygpOgotUEFTUyBl
dmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1
bmRlZmluZWQKIHN0b3JlLmRlbGV0ZSgna2V5JykKLXJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpOgot
UEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIGZhbHNlCityZW1vdmVTdWNjZXNzQnV0Tm90VGhl
cmUoKToKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKIHN0b3JlID0gZXZl
bnQudGFyZ2V0LnNvdXJjZQogUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgp
LgogRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCh7fSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJh
c2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dAppbmRleCAxZjM0YjU4ZWU4MzM1NTBiMTc3MzIzMTUx
MjE3NjQ5MWYxZjM3MTIxLi5mZGNjNDZkNGY4YzI3YmNjYTc1MmI3ZjRkODhkNzZmMTJhMzQwZGU1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1i
YXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0CkBAIC0xMTMsMTAg
KzExMywxMCBAQCBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueSBpcyAidmFsdWUi
CiBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQueCBpcyAiZm9vIgogW1dvcmtlcl0g
c3RvcmUuZGVsZXRlKCdrZXknKQogW1dvcmtlcl0gcmVtb3ZlU3VjY2VzcygpOgotUEFTUyBbV29y
a2VyXSBldmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFy
Z2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKIFtXb3JrZXJdIHN0b3JlLmRlbGV0ZSgna2V5JykKLVtX
b3JrZXJdIHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpOgotUEFTUyBbV29ya2VyXSBldmVudC50YXJn
ZXQucmVzdWx0IGlzIGZhbHNlCitbV29ya2VyXSByZW1vdmVTdWNjZXNzQnV0Tm90VGhlcmUoKToK
K1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQKIFtXb3JrZXJd
IHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZQogW1dvcmtlcl0gUGFzc2luZyBhbiBpbnZhbGlk
IGtleSBpbnRvIHN0b3JlLmdldCgpLgogW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IHN0b3JlLmdldCh7fSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzCmluZGV4IDkzOTE4YWI0MDk4
MTk2ODNhM2I1MWQ5MDBiOTc1NzAzZDI2YTI2YzMuLmZmNGMwM2RiNTg3Y2I0ODY0YzY2YzE0MjYx
MzE5YTc1YzY2ZGQxZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcwpAQCAtOTAsNyArOTAs
NyBAQCBmdW5jdGlvbiBjcmVhdGVJbmRleCgpCiAgICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRl
eE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOwogICAgIGluZGV4ID0gZXZhbEFuZExvZygi
aW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhOYW1lJykiKTsKICAgICBzaG91bGRCZVRydWUoImlu
ZGV4ICE9PSBudWxsIik7Ci0gCisKICAgICBkZWJ1ZygiQXNrIGZvciBhbiBpbmRleCB0aGF0IGRv
ZXNuJ3QgZXhpc3Q6Iik7CiAgICAgdHJ5IHsKICAgICAgICAgZGVidWcoImluZGV4ID0gc3RvcmUu
aW5kZXgoJ2FzZGYnKSIpOwpAQCAtMjQ4LDE4ICsyNDgsMTggQEAgZnVuY3Rpb24gcmVtb3ZlU3Vj
Y2VzcyhldnQpCiB7CiAgICAgZXZlbnQgPSBldnQ7CiAgICAgZGVidWcoInJlbW92ZVN1Y2Nlc3Mo
KToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0cnVlIik7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CiAKICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gcmVtb3ZlU3VjY2Vzc0J1dEZhbHNlOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
cmVtb3ZlU3VjY2Vzc0J1dE5vdFRoZXJlOwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwogfQogCi1mdW5jdGlvbiByZW1vdmVTdWNjZXNzQnV0RmFsc2UoZXZ0
KQorZnVuY3Rpb24gcmVtb3ZlU3VjY2Vzc0J1dE5vdFRoZXJlKGV2dCkKIHsKICAgICBldmVudCA9
IGV2dDsKLSAgICBkZWJ1ZygicmVtb3ZlU3VjY2Vzc0J1dEZhbHNlKCk6Iik7Ci0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiZmFsc2UiKTsKKyAgICBkZWJ1ZygicmVtb3ZlU3Vj
Y2Vzc0J1dE5vdFRoZXJlKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAidW5kZWZpbmVkIik7CiAgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBldmVu
dC50YXJnZXQuc291cmNlIik7CiAKICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBp
bnRvIHN0b3JlLmdldCgpLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128603</attachid>
            <date>2012-02-23 16:49:55 -0800</date>
            <delta_ts>2012-02-23 16:51:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78399-20120223164954.patch</filename>
            <type>text/plain</type>
            <size>17635</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdkNDY4ZDQyODkxMzc5
YjNlNjA3MTU2N2ViMzNhNmYwZTY4ZWM1ZS4uYTM0MzRmYTE2Y2UxOWVlMDFkNDQ1ZDcyMGNlYTk4
N2U5MzhiY2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTIzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTdXBw
b3J0IG92ZXJsb2FkZWQgbWV0aG9kcyB0aGF0IHRha2UgSURCS2V5IG9yIElEQktleVJhbmdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBzdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCisKKyAgICAgICAgKiBzdG9yYWdlL0lEQklu
ZGV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAoSURCSW5kZXgpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCSW5kZXguaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsOgorCiAyMDEyLTAyLTIyICBJZ29yIE9saXZl
aXJhICA8aWdvci5vQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgRXZlcnkgY2FsbCB0byBS
ZW5kZXJPYmplY3Q6OnNldEFuaW1hdGFibGVTdHlsZSgpIGl0ZXJhdGVzIHRocm91Z2ggYWxsIG1f
Y29tcG9zaXRlQW5pbWF0aW9uczogcG90ZW50aWFsbHkgTyhOXjIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCSW5kZXguY3BwCmluZGV4IGE3YzhkZDNiYjRmN2I2ZjZkYzJjMDY1NzUwYzYyOWM0ZmQzMmY1
NTguLmIyYTMxZjYyYWQ2ZTk1ZTJhOWQ3MWU5OGFlZTQxNmE2YmRiMDI4YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXguY3BwCkBAIC04Nyw2ICs4NywxNSBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJREJfVFJBQ0UoIklE
QkluZGV4Ojpjb3VudCIpOworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBjb3VudChjb250ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGVjKTsKK30KKwog
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
dW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJf
VFJBQ0UoIklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4
LmgKaW5kZXggOTZiMzgwYmM5ODBkZDljYzJhMjhhOGZmMTk4ZjUyYzY0MWYyZjQ3Yi4uNDA1N2Vl
ZDVkZGMzNTc2Mjk4YzUyOGJiYjVjMzNiZmI5YTE0ODkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
SW5kZXguaApAQCAtNTgsOCArNTgsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlv
bkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIDAsIGVjKTsgfQogICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVY
VCwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBj
b3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gY291bnQoY29udGV4dCwgMCwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigw
KSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCAwLCBlYyk7
IH0gCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5n
ZSwgSURCQ3Vyc29yOjpORVhULCBlYyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXguaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5pZGwK
aW5kZXggNGM4ZjY1NWUzYWMyZjhiZTFmNzE1NTQzNDFkMDM3NjIzYzdiZGZmZS4uMWU0OWE0ZjEz
NTQ1OWY2NzFmOWE2NTVjZDdiYTA2MzJjNWE3NGE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJJbmRleC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJ
bmRleC5pZGwKQEAgLTQ0LDYgKzQ0LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAgICAg
cmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNvdW50KGluIFtPcHRpb25hbF0gSURCS2V5UmFu
Z2UgcmFuZ2UpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAg
ICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgY291bnQo
aW4gSURCS2V5IGtleSkKKyAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24p
OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAK
aW5kZXggNmQ0ZmZhYjdkOTI1NTBhZTg2NTI3NTgwOTExZjAwOThiOTVkMzg2Ni4uNWMzNDY2NmQz
ZmI1MWNkYjBjNWM4ZmY0YTNmY2M1MDQ1NDZmNDM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTEzMSw2ICsxMzEsNyBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzcwogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CiAgICAgaWYgKCFrZXlSYW5nZSkgewogICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yNTcsNiArMjU4LDE1IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhCiAgICAgcmV0dXJuIHJl
cXVlc3QucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJREJfVFJBQ0UoIklEQk9iamVj
dFN0b3JlOjpjb3VudCIpOworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBjb3VudChjb250ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGVjKTsKK30KKwog
dm9pZCBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb25GaW5pc2hlZCgpCiB7CiAgICAgQVNTRVJU
KG1fdHJhbnNhY3Rpb24tPmZpbmlzaGVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5oCmluZGV4IDYwYTliMWQzZjIyMGM4N2IzODBiMjBmYjY3YjY0MTczNmEyNjE4MmIu
LjUwOTA5MGVkOGRhNjJmYjM4M2E4NzEyNWM3OTg3MDhiNWJkODI0MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKQEAgLTc5LDggKzc5LDkgQEAgcHVibGljOgogICAg
IHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAK
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IEV4Y2VwdGlvbkNvZGUmKTsgCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
Y291bnQoY29udGV4dCwgMCwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gY291bnQoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hl
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IDVi
Y2FmOGVjNGM4ZTEwNTViZDYxNzNkYjQ3ZWM2YjczOTNjODY5YzYuLmFiMTIwMGNmNDNiMDU3YjBk
NTliNDgzYTczOWMzMmQyMzAwMjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuaWRsCkBAIC01NSw1ICs1NSw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAg
ICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBjb3VudChpbiBbT3B0aW9uYWxdIElEQktl
eVJhbmdlIHJhbmdlKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7
CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNv
dW50KGluIElEQktleSBrZXkpCisgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0
aW9uKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU3YzA1YTY0OTI4ZGI2YmQ3MmQ1ZjRjODJiMTA2ZDFh
ZjRkOTUwZmIuLjBkNGNhNDI4MDAzNzRlYzI1MzI1YTA2ZTQyYTgxZWMwMDM0NzMwODYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMi0yMyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU3VwcG9ydCBvdmVybG9hZGVkIG1ldGhvZHMg
dGhhdCB0YWtlIElEQktleSBvciBJREJLZXlSYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1s
OgorCiAyMDEyLTAyLTIzICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRl
IGZvciBmYXN0L2Nzcy9mb250LWZhY2UtZGVmYXVsdC1mb250Lmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LWV4cGVjdGVkLnR4dAppbmRl
eCA1Njg2Y2IwNzcyZGU2MGI3NWE0OTdiMzMyZTAzOGQxNGJiNjAxMjRiLi5kYTg2YjIwZWM0ZWIw
YTZlMWE3MTExNjY2MzQxOWY0NTZiOWEyMGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQtZXhwZWN0ZWQudHh0CkBAIC02LDYgKzYsNyBA
QCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogd2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5pbmRl
eGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQgogd2luZG93LklEQlRyYW5zYWN0aW9uID0g
d2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbgogd2lu
ZG93LklEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJL
ZXlSYW5nZQord2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uID0gd2luZG93LklEQkRhdGFiYXNl
RXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbgogaW5kZXhlZERC
Lm9wZW4oJ2luZGV4LWNvdW50JykKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAogZGIuc2V0VmVy
c2lvbignbmV3IHZlcnNpb24nKQpAQCAtODIsNiArODMsMzMgQEAgdGVzdCA9IHsibG93ZXIiOjUw
MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjUwMCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0
ZWQiOjAKIHJlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2Vy
LCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQogUEFTUyB0eXBl
b2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQogUEFTUyByZXF1ZXN0LnJlc3Vs
dCBpcyAwCisKK3ZlcmlmeWluZyBjb3VudCB3aXRoIGtleQordHJhbnMgPSBkYi50cmFuc2FjdGlv
bignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorUEFTUyB0cmFucyAhPSBu
dWxsIGlzIHRydWUKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitQQVNT
IHN0b3JlICE9IG51bGwgaXMgdHJ1ZQoraW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykuaW5kZXgoJ2luZGV4TmFtZScpCitQQVNTIGluZGV4ICE9IG51bGwgaXMgdHJ1ZQorRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGluZGV4LmNvdW50KE5hTikKK1BBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5jb3VudCh7fSkKK1BBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5jb3VudCgvcmVnZXgvKQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UgorCit0ZXN0ID0geyJrZXkiOjAsImV4cGVjdGVkIjoxfQorcmVxdWVzdCA9IGluZGV4LmNvdW50
KHRlc3Qua2V5KQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1
ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxCisKK3Rlc3QgPSB7ImtleSI6MTAwLCJleHBlY3Rl
ZCI6MH0KK3JlcXVlc3QgPSBpbmRleC5jb3VudCh0ZXN0LmtleSkKK1BBU1MgdHlwZW9mIHJlcXVl
c3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMAog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbAppbmRleCA2ZDI0ZmUw
NzI2YTE0NGY0N2YxMjBmYmU2OWFjMTU1MTk2NDgzMDM1Li5kODIzNTllMGJlYWI1NzkxZjdmNWMw
MWIxMTVmNzlkOTRiMzg1NDQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1jb3VudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2luZGV4LWNvdW50Lmh0bWwKQEAgLTE3LDYgKzE3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ZXZhbEFuZExvZygid2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93
LndlYmtpdEluZGV4ZWREQiIpOwogICAgIGV2YWxBbmRMb2coIndpbmRvdy5JREJUcmFuc2FjdGlv
biA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24i
KTsKICAgICBldmFsQW5kTG9nKCJ3aW5kb3cuSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFu
Z2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlIik7CisgICAgZXZhbEFuZExvZygid2luZG93
LklEQkRhdGFiYXNlRXhjZXB0aW9uID0gd2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdp
bmRvdy53ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbiIpOwogICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY291bnQnKSIpOwogICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CkBAIC03OSw3ICs4MCw3IEBAIGZ1bmN0aW9uIHZlcmlmeUNvdW50V2l0aFJhbmdl
KCkKICAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
TmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKICAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9IG51bGwiKTsKICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGRvbmU7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IHZlcmlmeUNvdW50V2l0aEtleTsKIAogICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKICAgICBzaG91bGRCZVRydWUoInN0b3Jl
ICE9IG51bGwiKTsKQEAgLTExNyw2ICsxMTgsNDkgQEAgZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRo
UmFuZ2UoKQogICAgIG5leHRUZXN0KCk7CiB9CiAKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtl
eSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBr
ZXkiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGRvbmU7CisKKyAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hv
dWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJpbmRl
eCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5pbmRleCgnaW5kZXhOYW1lJykiKTsK
KyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsKKworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImluZGV4LmNvdW50KE5hTikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCh7fSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJpbmRleC5jb3VudCgvcmVnZXgvKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworCisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsga2V5OiAwLCBleHBlY3RlZDogMSB9
LAorICAgICAgICB7IGtleTogMTAwLCBleHBlY3RlZDogMCB9CisgICAgXTsKKworICAgIGZ1bmN0
aW9uIG5leHRUZXN0KCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2co
InRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KHRlc3Qua2V5KSIpOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRy
dWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNo
b3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAg
ICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7
CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlCisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30K
KwogdGVzdCgpOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVkLnR4dAppbmRleCA5ODgy
Y2U0N2FiMWU3MjczMzZhYzRkZmM1OTg3Nzk2MWZmYWQ5MThmLi5kNTc0Yzc1YzBmZWVlNjJlMjE4
ZjMzYTViMzlkNzMzYThhNmI2M2IyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQtZXhwZWN0ZWQudHh0CkBAIC02LDYg
KzYsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogd2luZG93LmluZGV4ZWREQiA9IHdpbmRv
dy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQgogd2luZG93LklEQlRyYW5zYWN0
aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlv
bgogd2luZG93LklEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJr
aXRJREJLZXlSYW5nZQord2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uID0gd2luZG93LklEQkRh
dGFiYXNlRXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbgogaW5k
ZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dAogZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQpAQCAtNzYsNiArNzcsMzEgQEAgdGVzdCA9
IHsibG93ZXIiOjUwMCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjUwMCwidXBwZXJPcGVuIjpm
YWxzZSwiZXhwZWN0ZWQiOjAKIHJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3Vu
ZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4p
KQogUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQogUEFTUyBy
ZXF1ZXN0LnJlc3VsdCBpcyAwCisKK3ZlcmlmeWluZyBjb3VudCB3aXRoIGtleQordHJhbnMgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorUEFT
UyB0cmFucyAhPSBudWxsIGlzIHRydWUKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpCitQQVNTIHN0b3JlICE9IG51bGwgaXMgdHJ1ZQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIHN0b3JlLmNvdW50KE5hTikKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZS5jb3VudCh7fSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZS5jb3VudCgvcmVnZXgvKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BB
U1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorCit0ZXN0ID0geyJrZXki
OjAsImV4cGVjdGVkIjoxfQorcmVxdWVzdCA9IHN0b3JlLmNvdW50KHRlc3Qua2V5KQorUEFTUyB0
eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJl
c3VsdCBpcyAxCisKK3Rlc3QgPSB7ImtleSI6MTAwLCJleHBlY3RlZCI6MH0KK3JlcXVlc3QgPSBz
dG9yZS5jb3VudCh0ZXN0LmtleSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1i
ZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbAppbmRleCAzOTBmYjk3MDcwMmM1
Y2NiOTJkMDZhMTEzNWYyN2RlMDI4YmU1OGY0Li4yN2NhNmMwODNkMWVhYzBiNzg0ODNlMDFmODgw
N2E5YWUxYzUzYTZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1jb3VudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWNvdW50Lmh0bWwKQEAgLTE3LDYgKzE3LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgZXZhbEFuZExvZygid2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93LndlYmtpdEluZGV4ZWREQiIpOwogICAgIGV2YWxBbmRMb2coIndpbmRvdy5JREJUcmFu
c2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNh
Y3Rpb24iKTsKICAgICBldmFsQW5kTG9nKCJ3aW5kb3cuSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURC
S2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlIik7CisgICAgZXZhbEFuZExvZygi
d2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uID0gd2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9u
IHx8IHdpbmRvdy53ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbiIpOwogICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY291bnQnKSIpOwogICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7CkBAIC03NCw3ICs3NSw3IEBAIGZ1bmN0aW9uIHZlcmlmeUNv
dW50V2l0aFJhbmdlKCkKICAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKICAgICBzaG91
bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGRvbmU7CisgICAgdHJhbnMu
b25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsKIAogICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKICAgICBzaG91bGRC
ZVRydWUoInN0b3JlICE9IG51bGwiKTsKQEAgLTExMCw2ICsxMTEsNDUgQEAgZnVuY3Rpb24gdmVy
aWZ5Q291bnRXaXRoUmFuZ2UoKQogICAgIG5leHRUZXN0KCk7CiB9CiAKK2Z1bmN0aW9uIHZlcmlm
eUNvdW50V2l0aEtleSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcg
Y291bnQgd2l0aCBrZXkiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGRvbmU7CisKKyAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7CisKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZS5jb3VudChOYU4pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoe30pIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUuY291bnQoL3JlZ2V4LykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyBrZXk6IDAsIGV4cGVjdGVkOiAx
IH0sCisgICAgICAgIHsga2V5OiAxMDAsIGV4cGVjdGVkOiAwIH0KKyAgICBdOworCisgICAgZnVu
Y3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7CisgICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291bnQodGVzdC5rZXkpIik7Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2hvdWxkQmVU
cnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisgICAgICAg
ICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwor
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2Fj
dGlvbiBjb21wbGV0ZQorICAgICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9CisK
IHRlc3QoKTsKIAogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>