<?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>76075</bug_id>
          
          <creation_ts>2012-01-11 10:21:46 -0800</creation_ts>
          <short_desc>IndexedDB: Invalid keys yielded by key paths should raise exceptions, not error callbacks</short_desc>
          <delta_ts>2012-01-18 21:00:55 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76198</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dgrogan</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>534000</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-11 10:21:46 -0800</bug_when>
    <thetext>Basic repro:

var invalidKey = {};
var store = db.createObjectStore(&quot;storeName&quot;, {keyPath: &quot;key&quot;});
var request = store.put({key: invalidKey});

Expected:

Exception thrown by store.put() call

Actual:

Error event raised on request object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534004</commentid>
    <comment_count>1</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-11 10:27:23 -0800</bug_when>
    <thetext>Applies to these clauses in the spec, which should occur synchronously prior to creation of the request:

* The object store uses in-line keys and the result of evaluating the object store&apos;s key path yields a value and that value is not a valid key.
* If there are any indexes referencing this object store whose key path is a string, evaluating their key path on the value parameter yields a value, and that value is not a valid key.
* If there are any indexes referencing this object store whose key path is an Array, evaluating any of the items in their key path on the value parameter yields a value and that value is not a valid key.

In all of these cases we evaluate the keyPath during the asynchronous processing of the request during the transaction, not prior to the creation of the request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535079</commentid>
    <comment_count>2</comment_count>
      <attachid>122292</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-12 12:49:24 -0800</bug_when>
    <thetext>Created attachment 122292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535147</commentid>
    <comment_count>3</comment_count>
      <attachid>122292</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-12 14:10:57 -0800</bug_when>
    <thetext>Comment on attachment 122292
Patch

Failing browser tests, need to dig further</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535319</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-12 17:16:38 -0800</bug_when>
    <thetext>This ends up requiring the same plumbing changes for the Chromium port as 76116.

We need to be able to send a &quot;null&quot; IDBKey* (i.e. no key) vs. an invalid key (i.e. a key was passed, but the value is invalid). Right now these can be distinguished within in WebCore, but the distinction is lost when they are sent through the chromium/src/WebIDBKey.h API - which is my fault from trying to clean up a while back. They collapse down to invalid, which trips a few APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537407</commentid>
    <comment_count>5</comment_count>
      <attachid>122830</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-17 15:51:58 -0800</bug_when>
    <thetext>Created attachment 122830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537409</commentid>
    <comment_count>6</comment_count>
      <attachid>122830</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-17 15:52:51 -0800</bug_when>
    <thetext>Comment on attachment 122830
Patch

Filed a new issue - https://bugs.webkit.org/show_bug.cgi?id=76487 - for the cases that will require additional plumbing. (Turns out we&apos;re already buggy there in the Chromium port.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537963</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-18 10:08:35 -0800</bug_when>
    <thetext>tony@, can you r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538179</commentid>
    <comment_count>8</comment_count>
      <attachid>122830</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 14:36:29 -0800</bug_when>
    <thetext>Comment on attachment 122830
Patch

Rejecting attachment 122830 from commit-queue.

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

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

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538208</commentid>
    <comment_count>9</comment_count>
      <attachid>122830</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 14:59:12 -0800</bug_when>
    <thetext>Comment on attachment 122830
Patch

Clearing flags on attachment: 122830

Committed r105329: &lt;http://trac.webkit.org/changeset/105329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538209</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 14:59:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538436</commentid>
    <comment_count>11</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-18 20:54:29 -0800</bug_when>
    <thetext>Rolled out in r105376 as it broke the Chromium InjectIDBKey browser test. Also, I was wondering about the following part of the patch:

+            if (key &amp;&amp; key-&gt;valid()) {
+                ec = IDBDatabaseException::DATA_ERR;
+                return;
+            }

Should this be &quot;if (key &amp;&amp; ! key-&gt;valid())&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538437</commentid>
    <comment_count>12</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-18 20:54:51 -0800</bug_when>
    <thetext>(rolled out)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538439</commentid>
    <comment_count>13</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-18 20:59:04 -0800</bug_when>
    <thetext>ARGH, wrong bug entry, please ignore comments 11 &amp; 12... &gt;_&lt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538441</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-18 21:00:55 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Rolled out in r105376 as it broke the Chromium InjectIDBKey browser test. Also, I was wondering about the following part of the patch:
&gt; 
&gt; +            if (key &amp;&amp; key-&gt;valid()) {
&gt; +                ec = IDBDatabaseException::DATA_ERR;
&gt; +                return;
&gt; +            }
&gt; 
&gt; Should this be &quot;if (key &amp;&amp; ! key-&gt;valid())&quot; ?

Just for posterity:

No, see https://bugs.webkit.org/show_bug.cgi?id=76487 - in the Chromium port, key always becomes valid after cross-process communication.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122292</attachid>
            <date>2012-01-12 12:49:24 -0800</date>
            <delta_ts>2012-01-17 15:51:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76075-20120112124923.patch</filename>
            <type>text/plain</type>
            <size>20676</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E0YjgyMzIyNWI0MDMx
MGZjZmQ1YmU4OThjMGRjNjI1NzAwZGIwYS4uNTUyNzViNWYyYjU1YjdjY2JiNGNkY2ZlYzY4ODdl
ZTdkYmI1ZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTEyICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbnZh
bGlkIGtleXMgeWllbGRlZCBieSBrZXkgcGF0aHMgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbnMsIG5v
dCBlcnJvciBjYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc2MDc1CisKKyAgICAgICAgQWRkZWQgcHJlY29uZGl0aW9uIGNoZWNrcyB0byBJ
REJPYmplY3RTdG9yZS5hZGQoKS9wdXQoKSB0byBtYXRjaCB0aGUgc3BlYy4gU29tZSB0ZXN0cwor
ICAgICAgICB3ZXJlIGJlaW5nIGRvbmUgbGF0ZXIgaW4gdGhlIHRhc2sgYWRkZWQgdG8gdGhlIHRy
YW5zYWN0aW9uLCB0b28gbGF0ZSB0byByYWlzZSBhbiAKKyAgICAgICAgZXhjZXB0aW9uIHBlciBz
cGVjLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAorCisgICAgICAg
ICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisKIDIwMTItMDEtMTEgIEt3YW5n
SHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVuYW1l
IHBhcmFtZXRlciBhbmQgdmFyaWFibGUgbmFtZSAncicgdG8gJ3JlY3QnIGluIEludFJlY3RFZmwu
Y3BwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2MGIyMzJkN2FiODk3ZDAxNmI0NTRj
NmJkZjBmZTQ4NjI0ODBjYTdjLi5iZTVjYjY2NjUxNTVmMGI0NDM2NjBmMTAxNTg5MGQyZTg4ZGVk
MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAx
LTEyICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhl
ZERCOiBJbnZhbGlkIGtleXMgeWllbGRlZCBieSBrZXkgcGF0aHMgc2hvdWxkIHJhaXNlIGV4Y2Vw
dGlvbnMsIG5vdCBlcnJvciBjYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2MDc1CisKKyAgICAgICAgTmVlZCB0byBkaXN0aW5ndWlzaCBu
byBrZXkgKG5vIHZhbHVlIHdhcyByZXNvbHZlZCBieSBhIGtleSBwYXRoKSB2cy4gaW52YWxpZCBr
ZXkgKGEgdmFsdWUKKyAgICAgICAgd2FzIHJlc29sdmVkIGJ1dCBpcyBub3QgYSB2YWxpZCBrZXkp
LgorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzcmMvV2ViSURCS2V5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5Ojphc3Np
Z25JbnZhbGlkKToKKwogMjAxMi0wMS0xMSAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIFdlYkFycmF5QnVmZmVyIHN1cHBvcnQgaW4gV2Vi
U29ja2V0IHRvIFdlYktpdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCAwODMzNGM0ZmM4N2IyM2E1Mjk2ZTEy
YmIyNjBmYzhkNmViMmFlZDhiLi42YWRiNGY2ZWViNGQ1NzE0ZTRhMGQ5YTExY2RkMzNjOTI4NGVm
OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAKQEAgLTEzMSwyNSArMTMxLDQzIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1
ZSwKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSB0
cmFuc2FjdGlvblB0cjsKIAotICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6
SW52YWxpZFR5cGUpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgY29uc3QgYm9vbCBhdXRvSW5jcmVt
ZW50ID0gb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKTsKICAgICBjb25zdCBib29sIGhhc0tl
eVBhdGggPSAhb2JqZWN0U3RvcmUtPm1fa2V5UGF0aC5pc051bGwoKTsKLSAgICBpZiAoIWtleSAm
JiAhYXV0b0luY3JlbWVudCAmJiAhaGFzS2V5UGF0aCkgewotICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlm
IChrZXkgJiYgaGFzS2V5UGF0aCAmJiAocHV0TW9kZSA9PSBBZGRPbmx5IHx8IHB1dE1vZGUgPT0g
QWRkT3JVcGRhdGUpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSOwotICAgICAgICByZXR1cm47CisgICAgaWYgKHB1dE1vZGUgPT0gQWRkT25seSB8fCBwdXRN
b2RlID09IEFkZE9yVXBkYXRlKSB7CisgICAgICAgIGlmIChoYXNLZXlQYXRoICYmIGtleSkgewor
ICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFoYXNLZXlQYXRoICYmICFhdXRv
SW5jcmVtZW50ICYmICFrZXkpIHsKKyAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRBVEFfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlm
IChoYXNLZXlQYXRoKSB7CisgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0g
ZmV0Y2hLZXlGcm9tS2V5UGF0aCh2YWx1ZS5nZXQoKSwgbV9rZXlQYXRoKTsKKyAgICAgICAgICAg
IGlmIChrZXlQYXRoS2V5ICYmICFrZXlQYXRoS2V5LT52YWxpZCgpKSB7CisgICAgICAgICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFhdXRvSW5jcmVtZW50ICYm
ICFrZXlQYXRoS2V5KSB7CisgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6REFUQV9FUlI7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGlmIChrZXkgJiYgIWtleS0+dmFsaWQoKSkgeworICAgICAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChJbmRleE1hcDo6aXRlcmF0b3IgaXQgPSBvYmplY3RT
dG9yZS0+bV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBs
PiYgaW5kZXggPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgUmVmUHRyPElEQktleT4gaW5kZXhL
ZXkgPSBmZXRjaEtleUZyb21LZXlQYXRoKHZhbHVlLmdldCgpLCBpbmRleC0+a2V5UGF0aCgpKTsK
KyAgICAgICAgICAgIGlmIChpbmRleEtleSAmJiAhaW5kZXhLZXktPnZhbGlkKCkpIHsKKyAgICAg
ICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKLSAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgdGhyb3cgYSBTRVJJQUxfRVJSIG9uIHN0cnVjdHVyZWQgY2xv
bmUgcHJvYmxlbXMuCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRocm93IGEgREFUQV9FUlIg
d2hlbiB0aGUgd3Jvbmcga2V5L2tleVBhdGggZGF0YSBpcyBzdXBwbGllZC4KICAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIHZhbHVlLCBrZXksIHB1dE1v
ZGUsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQktleS5jcHAKaW5kZXggMzViZTlmM2IyMGE4MWQ3YTA5ODJiMWY0ODIwYzYz
MjIxNjU4ZGQxYi4uN2I5Zjk3OWVlMjQ5YmQ4ZjI4YjkyODU1MTVkMDkyY2U4ZDRjYjFmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXkuY3BwCkBAIC0xNzAsNyArMTcwLDcg
QEAgdm9pZCBXZWJJREJLZXk6OmFzc2lnbk51bWJlcihkb3VibGUgbnVtYmVyKQogCiB2b2lkIFdl
YklEQktleTo6YXNzaWduSW52YWxpZCgpCiB7Ci0gICAgbV9wcml2YXRlID0gMDsKKyAgICBtX3By
aXZhdGUgPSBJREJLZXk6OmNyZWF0ZUludmFsaWQoKTsKIH0KIAogdm9pZCBXZWJJREJLZXk6OnJl
c2V0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA0ODczYjE0NTBhZjE1OTMwNjcyNDg5ZGM1NWIzODI0YWQwMTk5MmNiLi5h
MWJkODcwN2VhNDE4MWY3ZTI3ZDk2ZTYyNGRhYjY1MDMxMGU4Y2NiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDEtMTIgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbmRleGVkREI6IEludmFsaWQga2V5cyB5aWVsZGVkIGJ5IGtleSBwYXRocyBzaG91
bGQgcmFpc2UgZXhjZXB0aW9ucywgbm90IGVycm9yIGNhbGxiYWNrcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvYmFkLWtleXBhdGgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvYmFkLWtleXBhdGguaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sOgorCiAyMDEyLTAxLTEyICBBbGV4YW5kZXIgUGF2
bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmll
d2VkLCB1cGRhdGUgdGVzdCBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGgtZXhwZWN0ZWQudHh0
CmluZGV4IDcxZDFmMTMzZGMyYzZmYmJhNGQzZjA0Y2IyMzBmYmQxYmY0MTgyMGEuLmE5ODY3Y2I5
ZDA0MzY4Mzc5MTA0NGI1OTIwNTM1NzNlM2U4ZmQ1MWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGgtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGgtZXhwZWN0
ZWQudHh0CkBAIC0xMyw4ICsxMyw5IEBAIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKIERl
bGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nLCB7IGtleVBhdGg6ICdrZXlQYXRoJyB9KTsKIHJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5hZGQoeyBrZXlQYXRoOiAnZm9vJyB9KTsKLXJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30p
OwotUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZCh7fSk7CitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvYmFkLWtleXBhdGguaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvYmFkLWtleXBhdGguaHRtbAppbmRleCBlM2VjNWFmMWVkOGY1ZWIwYWM1OGY0Nzk3
NGJiZTVhMzA0YWExMDhkLi4yYmI2Y2VjNTc0ZTAxYzIxOTdhZGIwNTA0OGEyMjFhNjNiZjZlYWQ4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1r
ZXlwYXRoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9i
YWQta2V5cGF0aC5odG1sCkBAIC01NCwxNCArNTQsNyBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNl
KCkKIAogZnVuY3Rpb24gYWRkRmlyc3RTdWNjZXNzKCkKIHsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IGFkZFNlY29uZEV4cGVjdGVkRXJyb3I7Ci19Ci0KLWZ1bmN0aW9uIGFkZFNlY29uZEV4cGVjdGVk
RXJyb3IoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7CiAgICAgZG9uZSgpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRl
eCAxMWE5MGIwZTZkZGYxMjZkYzI0M2VjYjc2OGQ0Y2EzODM4NTkzZTZmLi4zYzUwNWQzNGJkOGNh
M2QyYWJhOTg1Yjc5Njc2ZmJhMDYzZDk2MzIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQK
QEAgLTMsNiArMyw3IEBAIFRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVkREIncyBJREJPYmplY3RT
dG9yZS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCit3ZWJraXRJbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoJ29iamVjdHN0b3JlLWJhc2ljcycpCiB3ZWJraXRJbmRleGVkREIub3Blbign
b2JqZWN0c3RvcmUtYmFzaWNzJykKIG9wZW5TdWNjZXNzKCk6CiBkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKQEAgLTEwLDcgKzExLDYgQEAgZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQogc2V0
VmVyc2lvblN1Y2Nlc3MoKToKIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdAogUEFTUyB0cmFu
cyAhPT0gbnVsbCBpcyB0cnVlCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogY3JlYXRlT2Jq
ZWN0U3RvcmUoKToKIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51
bGwpCiBzdG9yZU5hbWVzID0gZGIub2JqZWN0U3RvcmVOYW1lcwpAQCAtOTMsMTggKzkzLDE0IEBA
IGV2ZW50LnByZXZlbnREZWZhdWx0KCkKIGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdl
YmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCiBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKQogc3RvcmUuYWRkKHt4OiAnc29tZXZhbHVlJ30sICdzb21la2V5
JykKK0FkZCB3aXRoIGludmFsaWQga2V5CiBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUu
YWRkKHt4OiAnb3RoZXJ2YWx1ZSd9LCBudWxsKQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4K
IFBBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgotZGIudHJh
bnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkK
LXN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCi1zdG9yZS5hZGQo
e3g6IG51bGx9LCAndmFsaWRrZXknKQotUEFTUyBldmVudC5jYW5jZWxhYmxlIGlzIHRydWUKLWFk
ZFdpdGhOdWxsSW5kZXhGYWlsdXJlKCk6Ci1QQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMg
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKLWV2ZW50LnByZXZlbnREZWZhdWx0
KCkKLWRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpCi1zdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQor
QWRkIHdpdGggaW52YWxpZCBrZXkgeWllbGRlZCBieSBpbmRleCBrZXlQYXRoCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKHt4OiBudWxsfSwgJ3ZhbGlka2V5JykKK1BBU1MgRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIKIHN0b3JlLmdldCgna2V5JykKIGdldFN1Y2Nlc3MoKToKIFBBU1MgZXZlbnQu
dGFyZ2V0LnJlc3VsdC55IGlzICJ2YWx1ZSIKQEAgLTEzNSw2ICsxMzEsNjUgQEAgUGFzc2luZyBh
biBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLnB1dCgpLgogRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IHN0b3JlLnB1dChudWxsLCB7fSkKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCiBQQVNTIGNv
ZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKKwordGVzdFByZUNvbmRp
dGlvbnMoKToKK2RiLnNldFZlcnNpb24oJ3ByZWNvbmRpdGlvbiB2ZXJzaW9uJykKK3N0b3JlV2l0
aEluTGluZUtleXMgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoSW5MaW5lS2V5cycs
IHtrZXlQYXRoOiAna2V5J30pCitzdG9yZVdpdGhPdXRPZkxpbmVLZXlzID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlV2l0aE91dElPZkxpbmVLZXlzJykKK3N0b3JlV2l0aEluZGV4ID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aEluZGV4JykKK2luZGV4ID0gc3RvcmVXaXRoSW5k
ZXguY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICdpbmRleEtleScpCisKK0lEQk9iamVjdFN0b3Jl
LnB1dCgpCitUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUga2V5IHBh
cmFtZXRlciB3YXMgcHJvdmlkZWQuCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRo
SW5MaW5lS2V5cy5wdXQoe2tleTogMX0sICdrZXknKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorVGhl
IG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtleXMgYW5kIGhhcyBubyBrZXkgZ2VuZXJh
dG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90IHByb3ZpZGVkLgorRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aE91dE9mTGluZUtleXMucHV0KHt9KQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUgorVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIHJlc3Vs
dCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMgYSB2YWx1
ZSBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gc3RvcmVXaXRoSW5MaW5lS2V5cy5wdXQoe2tleTogbnVsbH0pCitQQVNTIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSCitUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBrZXkgZ2Vu
ZXJhdG9yIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtl
eSBwYXRoIGRvZXMgbm90IHlpZWxkIGEgdmFsdWUuCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
c3RvcmVXaXRoSW5MaW5lS2V5cy5wdXQoe30pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitUaGUga2V5
IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXku
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5wdXQoe30s
IG51bGwpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIHdlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVm
ZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2
YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2
YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LgorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHN0b3JlV2l0aEluZGV4LnB1dCh7aW5kZXhLZXk6IG51bGx9LCAna2V5JykKK1BB
U1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIKKworSURCT2JqZWN0U3RvcmUuYWRkKCkKK1RoZSBvYmplY3Qgc3Rv
cmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZC4K
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbkxpbmVLZXlzLmFkZCh7a2V5OiAx
fSwgJ2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIHdlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitUaGUgb2JqZWN0IHN0b3JlIHVzZXMgb3V0
LW9mLWxpbmUga2V5cyBhbmQgaGFzIG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSBrZXkgcGFyYW1l
dGVyIHdhcyBub3QgcHJvdmlkZWQuCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRo
T3V0T2ZMaW5lS2V5cy5hZGQoe30pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitUaGUgb2JqZWN0IHN0
b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9i
amVjdCBzdG9yZSdzIGtleSBwYXRoIHlpZWxkcyBhIHZhbHVlIGFuZCB0aGF0IHZhbHVlIGlzIG5v
dCBhIHZhbGlkIGtleS4KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbkxpbmVL
ZXlzLmFkZCh7a2V5OiBudWxsfSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1RoZSBvYmplY3Qgc3Rv
cmUgdXNlcyBpbi1saW5lIGtleXMgYnV0IG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSByZXN1bHQg
b2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggZG9lcyBub3QgeWllbGQg
YSB2YWx1ZS4KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbkxpbmVLZXlzLmFk
ZCh7fSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1RoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRl
ZCBidXQgZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIGtleS4KK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLmFkZCh7fSwgbnVsbCkKK1BBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIKK0lmIHRoZXJlIGFyZSBhbnkgaW5kZXhlcyByZWZlcmVuY2luZyB0aGlzIG9iamVjdCBz
dG9yZSB3aG9zZSBrZXkgcGF0aCBpcyBhIHN0cmluZywgZXZhbHVhdGluZyB0aGVpciBrZXkgcGF0
aCBvbiB0aGUgdmFsdWUgcGFyYW1ldGVyIHlpZWxkcyBhIHZhbHVlLCBhbmQgdGhhdCB2YWx1ZSBp
cyBub3QgYSB2YWxpZCBrZXkuCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoSW5k
ZXguYWRkKHtpbmRleEtleTogbnVsbH0sICdrZXknKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCmlu
ZGV4IDIzMmFhODMzYzIxMTk4ZDRiNGFlNzJmYmUwZTk2ZjI2YzI5OTk0YTkuLjJjZDUxZGQ4Yzk2
ZGU0ZTlhYTdmMGYwNjcwODI4OTlkZDk2ZjMyMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCkBAIC05LDExICs5LDE4
IEBACiA8c2NyaXB0PgogCiBkZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWRE
QidzIElEQk9iamVjdFN0b3JlLiIpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gdGVzdCgpCiB7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnb2JqZWN0c3RvcmUt
YmFzaWNzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGRlbGV0ZVN1Y2Nlc3MoKQorewogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRl
eGVkREIub3Blbignb2JqZWN0c3RvcmUtYmFzaWNzJykiKTsKICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwpAQCAtMzYsOCArNDMsNiBAQCBmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCiAg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwogICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKIAotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KICAgICBkZWJ1ZygiY3JlYXRlT2JqZWN0U3RvcmUoKToiKTsKICAgICB3aW5kb3cuc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBu
dWxsKSIpOwogICAgIHZhciBzdG9yZU5hbWVzID0gZXZhbEFuZExvZygic3RvcmVOYW1lcyA9IGRi
Lm9iamVjdFN0b3JlTmFtZXMiKTsKQEAgLTk1LDcgKzEwMCw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUlu
ZGV4KCkKICAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4
TmFtZScpIik7CiAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdp
bmRleE5hbWUnKSIpOwogICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwiKTsKLSAKKwog
ICAgIGRlYnVnKCJBc2sgZm9yIGFuIGluZGV4IHRoYXQgZG9lc24ndCBleGlzdDoiKTsKICAgICB0
cnkgewogICAgICAgICBkZWJ1ZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpIik7CkBAIC0x
MDcsNyArMTEyLDcgQEAgZnVuY3Rpb24gY3JlYXRlSW5kZXgoKQogICAgICAgICBzaG91bGRCZSgi
Y29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CiAgICAg
fQogCi0gICAgY29tbWl0QW5kQ29udGludWUoKTsgICAgCisgICAgY29tbWl0QW5kQ29udGludWUo
KTsKIH0KIAogZnVuY3Rpb24gY29tbWl0QW5kQ29udGludWUoKQpAQCAtMjA5LDI4ICsyMTQsMTAg
QEAgZnVuY3Rpb24gYWRkQWdhaW5GYWlsdXJlKCkKICAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwogCiAgICAg
ZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAnc29tZXZhbHVlJ30sICdzb21la2V5JykiKTsKKyAg
ICBkZWJ1ZygiQWRkIHdpdGggaW52YWxpZCBrZXkiKTsKICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5hZGQoe3g6ICdvdGhlcnZhbHVlJ30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
ImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiBudWxsfSwgJ3ZhbGlka2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gYWRkV2l0
aE51bGxJbmRleEZhaWx1cmU7Ci19Ci0KLWZ1bmN0aW9uIGFkZFdpdGhOdWxsSW5kZXhGYWlsdXJl
KCkKLXsKLSAgICBzaG91bGRCZVRydWUoImV2ZW50LmNhbmNlbGFibGUiKTsKLSAgICBkZWJ1Zygi
YWRkV2l0aE51bGxJbmRleEZhaWx1cmUoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0g
ICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwotCi0gICAgdHJhbnNhY3Rp
b24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCB3ZWJraXRJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIGRlYnVnKCJBZGQg
d2l0aCBpbnZhbGlkIGtleSB5aWVsZGVkIGJ5IGluZGV4IGtleVBhdGgiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6IG51bGx9LCAndmFsaWRrZXknKSIsICJ3ZWJr
aXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwogCiAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIo
J3N1Y2Nlc3MnLCBnZXRTdWNjZXNzLCB0cnVlKTsKQEAgLTI4NiwxMSArMjczLDY4IEBAIGZ1bmN0
aW9uIHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpCiAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxp
ZCBrZXkgaW50byBzdG9yZS5wdXQoKS4iKTsKICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZS5wdXQobnVsbCwge30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7CiAKLSAgICBkb25lKCk7CisgICAgdGVzdFByZUNvbmRpdGlvbnMoKTsKIH0KIAotdGVzdCgp
OworZnVuY3Rpb24gdGVzdFByZUNvbmRpdGlvbnMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygidGVzdFByZUNvbmRpdGlvbnMoKToiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbigncHJlY29uZGl0aW9uIHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisKKworICAgICAgICBzdG9yZVdpdGhJbkxpbmVLZXlzID0gZXZhbEFuZExv
Zygic3RvcmVXaXRoSW5MaW5lS2V5cyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhJ
bkxpbmVLZXlzJywge2tleVBhdGg6ICdrZXknfSkiKTsKKyAgICAgICAgc3RvcmVXaXRoT3V0T2ZM
aW5lS2V5cyA9IGV2YWxBbmRMb2coInN0b3JlV2l0aE91dE9mTGluZUtleXMgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVXaXRoT3V0SU9mTGluZUtleXMnKSIpOworICAgICAgICBzdG9yZVdp
dGhJbmRleCA9IGV2YWxBbmRMb2coInN0b3JlV2l0aEluZGV4ID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlV2l0aEluZGV4JykiKTsKKyAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRl
eCA9IHN0b3JlV2l0aEluZGV4LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnaW5kZXhLZXknKSIp
OworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIklEQk9iamVjdFN0b3JlLnB1
dCgpIik7CisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlz
IGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQuIik7CisgICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMucHV0KHtrZXk6IDF9LCAna2V5Jyki
LCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkZWJ1
ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtleXMgYW5kIGhhcyBubyBrZXkg
Z2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90IHByb3ZpZGVkLiIpOworICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7
fSkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBk
ZWJ1ZygiVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIHJlc3VsdCBv
ZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUncyBrZXkgcGF0aCB5aWVsZHMgYSB2YWx1ZSBh
bmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7CisgICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInN0b3JlV2l0aEluTGluZUtleXMucHV0KHtrZXk6IG51bGx9KSIsICJ3ZWJr
aXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCJUaGUg
b2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGJ1dCBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0
aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIGRvZXMg
bm90IHlpZWxkIGEgdmFsdWUuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0
b3JlV2l0aEluTGluZUtleXMucHV0KHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCJUaGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlk
ZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXkuIik7CisgICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMucHV0KHt9LCBudWxsKSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwogCisgICAgICAgIGRlYnVnKCJJ
ZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hv
c2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhl
IHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEg
dmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJ
bmRleC5wdXQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1Zygi
SURCT2JqZWN0U3RvcmUuYWRkKCkiKTsKKyAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUg
dXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZC4iKTsK
KyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQo
e2tleTogMX0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworCisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgb3V0LW9mLWxpbmUga2V5
cyBhbmQgaGFzIG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBub3Qg
cHJvdmlkZWQuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91
dE9mTGluZUtleXMuYWRkKHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworCisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlz
IGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRo
IHlpZWxkcyBhIHZhbHVlIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4iKTsKKyAg
ICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe2tl
eTogbnVsbH0pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAg
ICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYnV0IG5vIGtl
eSBnZW5lcmF0b3IgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3Jl
J3Mga2V5IHBhdGggZG9lcyBub3QgeWllbGQgYSB2YWx1ZS4iKTsKKyAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe30pIiwgIndlYmtpdElEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRoZSBrZXkgcGFy
YW1ldGVyIHdhcyBwcm92aWRlZCBidXQgZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIGtleS4iKTsK
KyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5h
ZGQoe30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisK
KyAgICAgICAgZGVidWcoIklmIHRoZXJlIGFyZSBhbnkgaW5kZXhlcyByZWZlcmVuY2luZyB0aGlz
IG9iamVjdCBzdG9yZSB3aG9zZSBrZXkgcGF0aCBpcyBhIHN0cmluZywgZXZhbHVhdGluZyB0aGVp
ciBrZXkgcGF0aCBvbiB0aGUgdmFsdWUgcGFyYW1ldGVyIHlpZWxkcyBhIHZhbHVlLCBhbmQgdGhh
dCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlV2l0aEluZGV4LmFkZCh7aW5kZXhLZXk6IG51bGx9LCAna2V5JykiLCAid2Vi
a2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAgICBkb25lKCk7Cisg
ICAgfTsKK30KKwordGVzdCgpOwogCiA8L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122830</attachid>
            <date>2012-01-17 15:51:58 -0800</date>
            <delta_ts>2012-01-18 14:59:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76075-20120117155157.patch</filename>
            <type>text/plain</type>
            <size>12845</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4NTIxOWFmMWZjZWZj
Y2UwOTY0M2MzNzVhNGYwYzFmMGM3ZGNiNC4uYzRhMjk3M2VhZTM0ZTVjMTkzNjVkN2NkM2EzNzQ4
NGY4Y2E0ZTZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTE3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbnZh
bGlkIGtleXMgeWllbGRlZCBieSBrZXkgcGF0aHMgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbnMsIG5v
dCBlcnJvciBjYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc2MDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1s
CisKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KToKKwogMjAxMi0w
MS0xNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
SW50ZXJuYWxzXSBtZW1iZXIgdmFyYWlibGVzIHNob3VsZCBmb2xsb3cgbmFtaW5nIGNvbnZlbnRp
b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcAppbmRleCAwODMzNGM0ZmM4N2IyM2E1Mjk2ZTEyYmIyNjBmYzhkNmViMmFlZDhi
Li4xZDZjZDQxYmRiZWJkNTlkNGZiMzgyMGNhNTg3MGU4N2FkNTRiZjAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAg
LTEzOCwxOCArMTM4LDI5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwKIAogICAgIGNvbnN0IGJv
b2wgYXV0b0luY3JlbWVudCA9IG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCk7CiAgICAgY29u
c3QgYm9vbCBoYXNLZXlQYXRoID0gIW9iamVjdFN0b3JlLT5tX2tleVBhdGguaXNOdWxsKCk7Ci0g
ICAgaWYgKCFrZXkgJiYgIWF1dG9JbmNyZW1lbnQgJiYgIWhhc0tleVBhdGgpIHsKLSAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CiAKLSAgICBpZiAoa2V5ICYmIGhhc0tleVBhdGggJiYgKHB1dE1vZGUgPT0gQWRkT25seSB8
fCBwdXRNb2RlID09IEFkZE9yVXBkYXRlKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAocHV0TW9k
ZSAhPSBDdXJzb3JVcGRhdGUpIHsKKyAgICAgICAgaWYgKCFrZXkgJiYgIWF1dG9JbmNyZW1lbnQg
JiYgIWhhc0tleVBhdGgpIHsKKyAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRBVEFfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICho
YXNLZXlQYXRoKSB7CisgICAgICAgICAgICBpZiAoa2V5ICYmIGtleS0+dmFsaWQoKSkgeworICAg
ICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYXV0b0lu
Y3JlbWVudCkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBm
ZXRjaEtleUZyb21LZXlQYXRoKHZhbHVlLmdldCgpLCBvYmplY3RTdG9yZS0+bV9rZXlQYXRoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWtleVBhdGhLZXkgfHwgIWtleVBhdGhLZXktPnZhbGlkKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9F
UlI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEFkZCBwcmVjb25kaXRpb24g
Y2hlY2tzIGZvciBpbmRleCBrZXkgcGF0aHMgdGhhdCB5aWVsZCBpbnZhbGlkIGtleXMuCisgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQ4NworICAg
ICB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGhyb3cgYSBTRVJJQUxfRVJSIG9uIHN0
cnVjdHVyZWQgY2xvbmUgcHJvYmxlbXMuCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRocm93
IGEgREFUQV9FUlIgd2hlbiB0aGUgd3Jvbmcga2V5L2tleVBhdGggZGF0YSBpcyBzdXBwbGllZC4K
ICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIHZhbHVl
LCBrZXksIHB1dE1vZGUsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKICAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDQ0YTViYmY1M2E5N2QyYzg1MDRjYmFmOWY0OGQ0YjUxY2Q5NThmMzUuLmNmNmY1NTFkYjZlZWQ0
NWM5NWVjMmUyNTZjMzM2Yjg1OTEwMzdkOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0w
MS0xNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4
ZWREQjogSW52YWxpZCBrZXlzIHlpZWxkZWQgYnkga2V5IHBhdGhzIHNob3VsZCByYWlzZSBleGNl
cHRpb25zLCBub3QgZXJyb3IgY2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjA3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9iYWQta2V5cGF0
aC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9iYWQt
a2V5cGF0aC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJh
c2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtYmFzaWNzLmh0bWw6CisKIDIwMTItMDEtMTYgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3Rl
aW5lckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZDptb3JlIENocm9taXVtIExp
bnV4IHJlYmFzZWxpbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9iYWQta2V5cGF0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLWV4cGVjdGVkLnR4dAppbmRleCA3MWQxZjEz
M2RjMmM2ZmJiYTRkM2YwNGNiMjMwZmJkMWJmNDE4MjBhLi5hOTg2N2NiOWQwNDM2ODM3OTEwNDRi
NTkyMDUzNTczZTNlOGZkNTFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLWV4cGVjdGVkLnR4dApAQCAtMTMs
OCArMTMsOSBAQCByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCiBEZWxldGVkIGFsbCBvYmpl
Y3Qgc3RvcmVzLgogb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBr
ZXlQYXRoOiAna2V5UGF0aCcgfSk7CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0
aDogJ2ZvbycgfSk7Ci1yZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsKLVBBU1MgZXZlbnQu
dGFyZ2V0LmVycm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOworUEFTUyBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1r
ZXlwYXRoLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1r
ZXlwYXRoLmh0bWwKaW5kZXggZTNlYzVhZjFlZDhmNWViMGFjNThmNDc5NzRiYmU1YTMwNGFhMTA4
ZC4uMmJiNmNlYzU3NGUwMWMyMTk3YWRiMDUwNDhhMjIxYTYzYmY2ZWFkOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9iYWQta2V5cGF0aC5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGguaHRt
bApAQCAtNTQsMTQgKzU0LDcgQEAgZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCiAKIGZ1bmN0aW9u
IGFkZEZpcnN0U3VjY2VzcygpCiB7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBl
Y3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBl
Y3RlZEVycm9yOwotfQotCi1mdW5jdGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKLXsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQoe30pOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwogICAg
IGRvbmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggMTFhOTBiMGU2ZGRm
MTI2ZGMyNDNlY2I3NjhkNGNhMzgzODU5M2U2Zi4uZWMwNDY5MjU2MjY3NDI5NDMzMjJiNTZiMjE1
YWZlMjFmNDdkZTQxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0xMzUsNiArMTM1
LDU3IEBAIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9yZS5wdXQoKS4KIEV4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQobnVsbCwge30pCiBQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgogUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
CisKK3Rlc3RQcmVDb25kaXRpb25zKCk6CitkYi5zZXRWZXJzaW9uKCdwcmVjb25kaXRpb24gdmVy
c2lvbicpCitzdG9yZVdpdGhJbkxpbmVLZXlzID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
V2l0aEluTGluZUtleXMnLCB7a2V5UGF0aDogJ2tleSd9KQorc3RvcmVXaXRoT3V0T2ZMaW5lS2V5
cyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhPdXRJT2ZMaW5lS2V5cycpCitzdG9y
ZVdpdGhJbmRleCA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhJbmRleCcpCitpbmRl
eCA9IHN0b3JlV2l0aEluZGV4LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnaW5kZXhLZXknKQor
CitJREJPYmplY3RTdG9yZS5wdXQoKQorVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5
cyBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLgorRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIHN0b3JlV2l0aEluTGluZUtleXMucHV0KHtrZXk6IDF9LCAna2V5JykKK1BBU1MgRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIKK1RoZSBvYmplY3Qgc3RvcmUgdXNlcyBvdXQtb2YtbGluZSBrZXlzIGFuZCBo
YXMgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIG5vdCBwcm92aWRl
ZC4KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7
fSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1RoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtl
eXMgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBh
dGggeWllbGRzIGEgdmFsdWUgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LgorRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluTGluZUtleXMucHV0KHtrZXk6IG51bGx9
KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5
cyBidXQgbm8ga2V5IGdlbmVyYXRvciBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBv
YmplY3Qgc3RvcmUncyBrZXkgcGF0aCBkb2VzIG5vdCB5aWVsZCBhIHZhbHVlLgorRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluTGluZUtleXMucHV0KHt9KQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUgorVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250
YWluIGEgdmFsaWQga2V5LgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aE91dE9m
TGluZUtleXMucHV0KHt9LCBudWxsKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
Y29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorCitJREJPYmplY3RT
dG9yZS5hZGQoKQorVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBhbmQgdGhlIGtl
eSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
V2l0aEluTGluZUtleXMuYWRkKHtrZXk6IDF9LCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0
aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIK
K1RoZSBvYmplY3Qgc3RvcmUgdXNlcyBvdXQtb2YtbGluZSBrZXlzIGFuZCBoYXMgbm8ga2V5IGdl
bmVyYXRvciBhbmQgdGhlIGtleSBwYXJhbWV0ZXIgd2FzIG5vdCBwcm92aWRlZC4KK0V4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLmFkZCh7fSkKK1BBU1MgRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIKK1RoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBy
ZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggeWllbGRzIGEg
dmFsdWUgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LgorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHN0b3JlV2l0aEluTGluZUtleXMuYWRkKHtrZXk6IG51bGx9KQorUEFTUyBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUgorVGhlIG9iamVjdCBzdG9yZSB1c2VzIGluLWxpbmUga2V5cyBidXQgbm8ga2V5
IGdlbmVyYXRvciBhbmQgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBvYmplY3Qgc3RvcmUn
cyBrZXkgcGF0aCBkb2VzIG5vdCB5aWVsZCBhIHZhbHVlLgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIHN0b3JlV2l0aEluTGluZUtleXMuYWRkKHt9KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorVGhl
IGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQg
a2V5LgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRk
KHt9LCBudWxsKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyB3ZWJr
aXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IDIzMmFhODMzYzIxMTk4ZDRi
NGFlNzJmYmUwZTk2ZjI2YzI5OTk0YTkuLjEyMGFhNjBkZGM1NzExNDYzOTg5OTMyMmM0NjY3NGUw
ZWUyNGI2OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy5odG1sCkBAIC0yODYsOSArMjg2LDY3IEBAIGZ1bmN0aW9uIHJlbW92
ZVN1Y2Nlc3NCdXRGYWxzZSgpCiAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50
byBzdG9yZS5wdXQoKS4iKTsKICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQo
bnVsbCwge30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CiAKLSAg
ICBkb25lKCk7CisgICAgdGVzdFByZUNvbmRpdGlvbnMoKTsKIH0KIAorZnVuY3Rpb24gdGVzdFBy
ZUNvbmRpdGlvbnMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFByZUNvbmRp
dGlvbnMoKToiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigncHJl
Y29uZGl0aW9uIHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIHN0b3JlV2l0aEluTGluZUtleXMgPSBldmFsQW5kTG9nKCJzdG9yZVdpdGhJbkxpbmVLZXlz
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlV2l0aEluTGluZUtleXMnLCB7a2V5UGF0aDog
J2tleSd9KSIpOworICAgICAgICBzdG9yZVdpdGhPdXRPZkxpbmVLZXlzID0gZXZhbEFuZExvZygi
c3RvcmVXaXRoT3V0T2ZMaW5lS2V5cyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZVdpdGhP
dXRJT2ZMaW5lS2V5cycpIik7CisgICAgICAgIHN0b3JlV2l0aEluZGV4ID0gZXZhbEFuZExvZygi
c3RvcmVXaXRoSW5kZXggPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVXaXRoSW5kZXgnKSIp
OworICAgICAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmVXaXRoSW5kZXguY3Jl
YXRlSW5kZXgoJ2luZGV4TmFtZScsICdpbmRleEtleScpIik7CisKKyAgICAgICAgZGVidWcoIiIp
OworICAgICAgICBkZWJ1ZygiSURCT2JqZWN0U3RvcmUucHV0KCkiKTsKKyAgICAgICAgZGVidWco
IlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVy
IHdhcyBwcm92aWRlZC4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVX
aXRoSW5MaW5lS2V5cy5wdXQoe2tleTogMX0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVz
ZXMgb3V0LW9mLWxpbmUga2V5cyBhbmQgaGFzIG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSBrZXkg
cGFyYW1ldGVyIHdhcyBub3QgcHJvdmlkZWQuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMucHV0KHt9KSIsICJ3ZWJraXRJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRlYnVnKCJUaGUgb2JqZWN0IHN0b3Jl
IHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVj
dCBzdG9yZSdzIGtleSBwYXRoIHlpZWxkcyBhIHZhbHVlIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBh
IHZhbGlkIGtleS4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRo
SW5MaW5lS2V5cy5wdXQoe2tleTogbnVsbH0pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1s
aW5lIGtleXMgYnV0IG5vIGtleSBnZW5lcmF0b3IgYW5kIHRoZSByZXN1bHQgb2YgZXZhbHVhdGlu
ZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggZG9lcyBub3QgeWllbGQgYSB2YWx1ZS4iKTsK
KyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5wdXQo
e30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAg
ZGVidWcoIlRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZCBidXQgZG9lcyBub3QgY29udGFp
biBhIHZhbGlkIGtleS4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVX
aXRoT3V0T2ZMaW5lS2V5cy5wdXQoe30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgLy8gRklYTUU6IEFkZCBwcmVjb25kaXRpb24gY2hl
Y2tzIGZvciBwdXQoKSB3aXRoIGluZGV4IGtleSBwYXRocyB0aGF0IHlpZWxkIGludmFsaWQga2V5
cy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDg3CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiSURCT2JqZWN0U3RvcmUu
YWRkKCkiKTsKKyAgICAgICAgZGVidWcoIlRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtl
eXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZC4iKTsKKyAgICAgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe2tleTogMX0sICdrZXkn
KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgIGRl
YnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgb3V0LW9mLWxpbmUga2V5cyBhbmQgaGFzIG5vIGtl
eSBnZW5lcmF0b3IgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBub3QgcHJvdmlkZWQuIik7Cisg
ICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRk
KHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAg
IGRlYnVnKCJUaGUgb2JqZWN0IHN0b3JlIHVzZXMgaW4tbGluZSBrZXlzIGFuZCB0aGUgcmVzdWx0
IG9mIGV2YWx1YXRpbmcgdGhlIG9iamVjdCBzdG9yZSdzIGtleSBwYXRoIHlpZWxkcyBhIHZhbHVl
IGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4iKTsKKyAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe2tleTogbnVsbH0pIiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRo
ZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYnV0IG5vIGtleSBnZW5lcmF0b3IgYW5k
IHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgb2JqZWN0IHN0b3JlJ3Mga2V5IHBhdGggZG9l
cyBub3QgeWllbGQgYSB2YWx1ZS4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmVXaXRoSW5MaW5lS2V5cy5hZGQoe30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIlRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92
aWRlZCBidXQgZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIGtleS4iKTsKKyAgICAgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5hZGQoe30sIG51bGwpIiwg
IndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgLy8gRklY
TUU6IEFkZCBwcmVjb25kaXRpb24gY2hlY2tzIGZvciBhZGQoKSB3aXRoIGluZGV4IGtleSBwYXRo
cyB0aGF0IHlpZWxkIGludmFsaWQga2V5cy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NDg3CisKKyAgICAgICAgZG9uZSgpOworICAgIH07Cit9
CisKKworCiB0ZXN0KCk7CiAKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>