<?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>35870</bug_id>
          
          <creation_ts>2010-03-08 08:49:56 -0800</creation_ts>
          <short_desc>Upstream iPhone KeyEvent platform code and share with Mac platform</short_desc>
          <delta_ts>2010-03-23 12:40:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>197185</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-08 08:49:56 -0800</bug_when>
    <thetext>The iPhone and Mac platforms both share a large amount of code, yet still have their differences. It would be nice to have a place to put shared code. Something like platform/cocoa, and a PLATFORM(COCOA) flag. Also, we should move up some of the platform/iphone that uses the shared code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197187</commentid>
    <comment_count>1</comment_count>
      <attachid>50227</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-08 08:58:39 -0800</bug_when>
    <thetext>Created attachment 50227
PLATFORM(COCOA) and upstreams platform/iphone</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197195</commentid>
    <comment_count>2</comment_count>
      <attachid>50229</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-08 09:40:29 -0800</bug_when>
    <thetext>Created attachment 50229
Updated to ToT for Bots

- bots showed an svn-apply issue with the XCode project, so I updated the patch to ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197202</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-08 09:48:15 -0800</bug_when>
    <thetext>Attachment 50229 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
re/platform/cocoa/KeyEventCocoa.h:74:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:75:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:76:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:77:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:78:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:79:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:80:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:81:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:82:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:83:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:84:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:85:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:86:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:87:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:88:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:89:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:90:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:91:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:92:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:93:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:94:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:95:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:96:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:97:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:98:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:99:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:100:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:101:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:102:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:103:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/cocoa/KeyEventCocoa.h:104:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 73 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198398</commentid>
    <comment_count>4</comment_count>
      <attachid>50449</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-10 16:02:17 -0800</bug_when>
    <thetext>Created attachment 50449
[PATCH] Part 1 - Upstream iPhone Code (unused so far)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198399</commentid>
    <comment_count>5</comment_count>
      <attachid>50450</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-10 16:03:17 -0800</bug_when>
    <thetext>Created attachment 50450
[PATCH] Part 2 - Move Mac Code into Shared Location (no change to code itself yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198400</commentid>
    <comment_count>6</comment_count>
      <attachid>50451</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-10 16:04:29 -0800</bug_when>
    <thetext>Created attachment 50451
[PATCH] Part 3 - Share Code (make generic for both platforms)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198401</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-10 16:06:00 -0800</bug_when>
    <thetext>Attachment 50449 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
orm/iphone/KeyEventCodesIPhone.h:77:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:78:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:79:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:80:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:81:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:82:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:83:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:84:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:85:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:86:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:87:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:88:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:89:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:90:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:91:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:92:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:93:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:94:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:95:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:96:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:97:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:98:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:99:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:100:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:101:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:102:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:103:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:104:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/iphone/KeyEventCodesIPhone.h:105:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 72 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198403</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-10 16:08:17 -0800</bug_when>
    <thetext>I was asked to break this up a little, so I broke this apart into 3 patches.

I also removed the PLATFORM(COCOA) flag concept.  I don&apos;t see a need for it if only the Mac / iPhone platforms decide to include / use the new files. Are there build configs that are greedy enough to grab these files unless I protect them with a guard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199267</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-12 17:37:35 -0800</bug_when>
    <thetext>I have an obvious mistake in Part 2. I call windowsKeyCodeForKeyCode when I should call windowsKeyCodeForCharCode. Tests caught these pretty quick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199270</commentid>
    <comment_count>10</comment_count>
      <attachid>50645</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-12 17:55:34 -0800</bug_when>
    <thetext>Created attachment 50645
[PATCH] Part 3 - Share Code (make generic for both platforms) + FIX

Looks like it was in Part 3. So I&apos;ve attached an updated version. Passes the tests locally now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202671</commentid>
    <comment_count>11</comment_count>
      <attachid>50449</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-22 12:13:29 -0700</bug_when>
    <thetext>Comment on attachment 50449
[PATCH] Part 1 - Upstream iPhone Code (unused so far)

&gt; diff --git a/WebCore/platform/iphone/KeyEventCodesIPhone.h b/WebCore/platform/iphone/KeyEventCodesIPhone.h
&gt; +	NSUpArrowFunctionKey		= 0xF700,

Please change the tabs to spaces in the header file to correct the style issues.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202675</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-22 12:16:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 50449 [details])
&gt; &gt; diff --git a/WebCore/platform/iphone/KeyEventCodesIPhone.h b/WebCore/platform/iphone/KeyEventCodesIPhone.h
&gt; &gt; +	NSUpArrowFunctionKey		= 0xF700,
&gt; 
&gt; Please change the tabs to spaces in the header file to correct the style
&gt; issues.
&gt; 
&gt; r=me

Actually, two more things:

- You need to add these files to the Xcode project file.
- The *.mm file needs #if PLATFORM(IPHONE)/#endif macros around its source so that it doesn&apos;t compile for Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202676</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-22 12:17:10 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 50449 [details] [details])
&gt; &gt; &gt; diff --git a/WebCore/platform/iphone/KeyEventCodesIPhone.h b/WebCore/platform/iphone/KeyEventCodesIPhone.h
&gt; &gt; &gt; +	NSUpArrowFunctionKey		= 0xF700,
&gt; &gt; 
&gt; &gt; Please change the tabs to spaces in the header file to correct the style
&gt; &gt; issues.
&gt; &gt; 
&gt; &gt; r=me
&gt; 
&gt; Actually, two more things:
&gt; 
&gt; - You need to add these files to the Xcode project file.
&gt; - The *.mm file needs #if PLATFORM(IPHONE)/#endif macros around its source so
&gt; that it doesn&apos;t compile for Mac.

You can do the above in a follow-up patch as well (and add #if PLATFORM(MAC)/#endif macros around KeyEventMac.mm as well).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202683</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-22 12:28:52 -0700</bug_when>
    <thetext>&gt; &gt; - You need to add these files to the Xcode project file.
&gt; &gt; - The *.mm file needs #if PLATFORM(IPHONE)/#endif macros around its source so
&gt; &gt; that it doesn&apos;t compile for Mac.
&gt; 
&gt; You can do the above in a follow-up patch as well (and add #if
&gt; PLATFORM(MAC)/#endif macros around KeyEventMac.mm as well).

So the MAC and IPHONE platforms share the same XCode project and the PLATFORM(X) macros pick and choose the files wanted to build for a particular platform?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202707</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-22 12:40:53 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; &gt; - You need to add these files to the Xcode project file.
&gt; &gt; &gt; - The *.mm file needs #if PLATFORM(IPHONE)/#endif macros around its source so
&gt; &gt; &gt; that it doesn&apos;t compile for Mac.
&gt; &gt; 
&gt; &gt; You can do the above in a follow-up patch as well (and add #if
&gt; &gt; PLATFORM(MAC)/#endif macros around KeyEventMac.mm as well).
&gt; 
&gt; So the MAC and IPHONE platforms share the same XCode project and the
&gt; PLATFORM(X) macros pick and choose the files wanted to build for a particular
&gt; platform?

Correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202751</commentid>
    <comment_count>16</comment_count>
      <attachid>50450</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-22 14:15:13 -0700</bug_when>
    <thetext>Comment on attachment 50450
[PATCH] Part 2 - Move Mac Code into Shared Location (no change to code itself yet)

&gt; diff --git a/WebCore/platform/cocoa/KeyEventCocoa.h b/WebCore/platform/cocoa/KeyEventCocoa.h
&gt; new file mode 100644
&gt; index 0000000..fe1d660
&gt; --- /dev/null
&gt; +++ b/WebCore/platform/cocoa/KeyEventCocoa.h
&gt; +#ifndef KeyEventCocoa_h
&gt; +#define KeyEventCocoa_h
&gt; [...]
&gt; +#endif // !KeyEventCocoa_h

Nit:  usually we don&apos;t use a &quot;!&quot; in this comment for headers.  Darin Adler mentioned on webkit-dev that this comment is unnecessary, so you may optionally remove it.

Thanks for using an &quot;svn mv&quot; to create the KeyEventCocoa.mm file!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202756</commentid>
    <comment_count>17</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-22 14:29:03 -0700</bug_when>
    <thetext>Committed r56360
	M	WebCore/ChangeLog
	M	WebCore/platform/mac/KeyEventMac.mm
	A	WebCore/platform/iphone/KeyEventCodesIPhone.h
	A	WebCore/platform/iphone/KeyEventIPhone.mm
	M	WebCore/WebCore.xcodeproj/project.pbxproj
r56360 = abfebcccb264bc8466cdd6843ab2477e624e2515 (trunk)
http://trac.webkit.org/changeset/56360

(In reply to comment #16)
&gt; Nit:  usually we don&apos;t use a &quot;!&quot; in this comment for headers.  Darin Adler
&gt; mentioned on webkit-dev that this comment is unnecessary, so you may optionally
&gt; remove it.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202761</commentid>
    <comment_count>18</comment_count>
      <attachid>50645</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-22 14:37:17 -0700</bug_when>
    <thetext>Comment on attachment 50645
[PATCH] Part 3 - Share Code (make generic for both platforms) + FIX

&gt; diff --git a/WebCore/platform/iphone/KeyEventIPhone.mm b/WebCore/platform/iphone/KeyEventIPhone.mm
&gt; +    return keyIdentifierForKeyCharCode(c);

I think this should be:

    return keyIdentifierForCharCode(c);

as I don&apos;t see a keyIdentifierForKeyCharCode() method in the patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202784</commentid>
    <comment_count>19</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-22 15:00:31 -0700</bug_when>
    <thetext>Committed r56361
	M	WebCore/ChangeLog
	M	WebCore/platform/mac/KeyEventMac.mm
	A	WebCore/platform/cocoa/KeyEventCocoa.h
	A	WebCore/platform/cocoa/KeyEventCocoa.mm
	M	WebCore/WebCore.xcodeproj/project.pbxproj
r56361 = d188be8b60d8e0b305f4ec52950b049ff2a0c0a0 (trunk)
http://trac.webkit.org/changeset/56361

Even though I created an svn checkout specifically for the svn copy, by putting &quot;the move&quot; in a separate patch from &quot;the changes&quot; git figured out it was a copy as well.


(In reply to comment #18)
&gt; I think this should be:
&gt; 
&gt;     return keyIdentifierForCharCode(c);
&gt; 
&gt; as I don&apos;t see a keyIdentifierForKeyCharCode() method in the patch.

Good catch! I caught the Mac build through tests, but I didn&apos;t fix this typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202800</commentid>
    <comment_count>20</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-22 15:35:01 -0700</bug_when>
    <thetext>Committed r56363
	M	WebCore/ChangeLog
	M	WebCore/platform/mac/KeyEventMac.mm
	M	WebCore/platform/iphone/KeyEventIPhone.mm
	M	WebCore/platform/cocoa/KeyEventCocoa.h
	M	WebCore/platform/cocoa/KeyEventCocoa.mm
r56363 = cc578a5357718b5d48199ce34250bf476dc38ebb (trunk)
http://trac.webkit.org/changeset/56363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202878</commentid>
    <comment_count>21</comment_count>
      <attachid>51380</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-22 18:39:15 -0700</bug_when>
    <thetext>Created attachment 51380
[PATCH] Upstream Minor Fixes to MatchDownstream

After merging this back downstream this required some minor changes. Bringing the minor fixes back upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202906</commentid>
    <comment_count>22</comment_count>
      <attachid>51380</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-22 20:29:44 -0700</bug_when>
    <thetext>Comment on attachment 51380
[PATCH] Upstream Minor Fixes to MatchDownstream

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203153</commentid>
    <comment_count>23</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-23 12:40:58 -0700</bug_when>
    <thetext>Committed r56408
	M	WebCore/ChangeLog
	M	WebCore/platform/iphone/KeyEventCodesIPhone.h
	M	WebCore/platform/iphone/KeyEventIPhone.mm
r56408 = 583c3f6701ac9ed948513ff0581ae533810aac1e (trunk)
http://trac.webkit.org/changeset/56408

All set, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50227</attachid>
            <date>2010-03-08 08:58:39 -0800</date>
            <delta_ts>2010-03-08 09:40:29 -0800</delta_ts>
            <desc>PLATFORM(COCOA) and upstreams platform/iphone</desc>
            <filename>os-keyevent.patch</filename>
            <type>text/plain</type>
            <size>119622</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1NjY2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDMtMDggIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSBQYXJ0IG9mIHRoZSBpUGhvbmUgUGxhdGZv
cm0gc2hhcmluZyBjb2RlIHdpdGggdGhlIE1hYyBQbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NzAKKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOiBBZGRlZCBQTEFURk9STShDT0NPQSkgbWVhbmluZyBJUEhPTkUgfHwgTUFDCisKIDIw
MTAtMDMtMDcgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkocmV2aXNpb24gNTU1OTIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
d29ya2luZyBjb3B5KQpAQCAtNDY1LDYgKzQ2NSwxMiBAQAogI2RlZmluZSBXVEZfUExBVEZPUk1f
SVBIT05FIDAKICNlbmRpZgogCisvKiBQTEFURk9STShDT0NPQSkgKi8KKy8qIFNoYXJlZCBjb2Rl
IGJldHdlZW4gaVBob25lIGFuZCBNYWMgcGxhdGZvcm1zICovCisjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJUEhPTkUpCisjZGVmaW5lIFdURl9QTEFURk9STV9DT0NPQSAxCisjZW5kaWYK
KwogLyogUExBVEZPUk0oQU5EUk9JRCkgKi8KIC8qIEZJWE1FOiB0aGlzIGlzIHNvbWV0aW1lcyB1
c2VkIGFzIGFuIE9TKCkgc3dpdGNoLCBhbmQgb3RoZXIgdGltZXMgdG8gZHJpdmUKICAgIHBvbGlj
eSBjaG9pY2VzICovCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNTU2NjYpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEwLTAzLTA4ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBzdHJlYW0gUGFydCBvZiB0aGUgaVBob25lIFBsYXRmb3JtIHNoYXJp
bmcgY29kZSB3aXRoIHRoZSBNYWMgUGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODcwCisKKyAgICAgICAgICBTaGFyZWQgaVBob25lIGFu
ZCBNYWMgcGxhdGZvcm0gY29kZS4gUHN1ZWRvLXBsYXRmb3JtICJjb2NvYSIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvS2V5RXZl
bnRDb2NvYS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29h
Lm1tOiBDb3BpZWQgZnJvbSBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0uCisKKyAgICAgICAg
ICBOZXcgaVBob25lIHBsYXRmb3JtLiBCb3RoIG1hYyBhbmQgaXBob25lIHBsYXRmb3JtcyB1c2lu
ZyBzaGFyZWQgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZTogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaXBob25lL0tleUV2ZW50SVBob25lLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW06CisKKyAgICAgICAgICBBZGRlZCB0aGUgbmV3
IGZpbGVzIGFuZCBmb2xkZXJzIChncm91cHMpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisKIDIwMTAtMDMtMDggIEVyaWMgVWhyaGFuZSAgPGVyaWN1
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1NTU5
MikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDgxLDYgKzI0ODEsOSBAQAogCQk5RjcyMzA1MTExMTg0QjQxMDBBRDAxMjYg
LyogU2NyaXB0UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlGNzIzMDRFMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExN0M4MTIy
MEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVC
IC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUExN0M4MTIzMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVu
dEZhY3RvcnkuaCAqLzsgfTsKKwkJQTUxRDdGM0ExMTQxQjI2NzAwMkNFRDM2IC8qIEtleUV2ZW50
Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MUQ3RjM4MTE0MUIyNjcwMDJDRUQzNiAvKiBLZXlFdmVudENvY29hLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUxRDdGM0IxMTQxQjI2NzAwMkNF
RDM2IC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTFEN0YzOTExNDFCMjY3MDAyQ0VEMzYgLyogS2V5RXZlbnRDb2NvYS5t
bSAqLzsgfTsKKwkJQTVBODQ5MzQxMTQxQkJDODAwQ0QxODBFIC8qIEtleUV2ZW50SVBob25lLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBODQ5MzMx
MTQxQkJDODAwQ0QxODBFIC8qIEtleUV2ZW50SVBob25lLm1tICovOyB9OwogCQlBNzE4NzYwRTBC
MkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE3MTg3ODkwMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3ODhGMEIyRDA0QUMw
MEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJQTczNTJDMTkwQjFCQjg5
RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJT
VkdCbG9jay5jcHAgKi87IH07CkBAIC03ODUyLDYgKzc4NTUsOSBAQAogCQk5RjcyMzA0RTExMTg0
QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyaXB0UHJvZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyog
SFRNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTFEN0Yz
ODExNDFCMjY3MDAyQ0VEMzYgLyogS2V5RXZlbnRDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBLZXlFdmVudENvY29hLmg7IHBhdGggPSBjb2NvYS9LZXlFdmVudENvY29h
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MUQ3RjM5MTE0MUIyNjcwMDJDRUQz
NiAvKiBLZXlFdmVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gS2V5RXZlbnRDb2NvYS5tbTsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QTg0OTMzMTE0MUJCQzgwMENEMTgwRSAvKiBL
ZXlFdmVudElQaG9uZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IEtleUV2ZW50SVBob25lLm1tOyBwYXRoID0gaXBob25lL0tleUV2ZW50SVBob25lLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJh
Z0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNF
IC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHQmxvY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxMjAsNiArMTMxMjYsMjMgQEAKIAkJCXRhYldp
ZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQTUxRDdGMzcxMTQxQjI0OTAwMkNF
RDM2IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlBNTFEN0YzODExNDFCMjY3MDAyQ0VEMzYgLyogS2V5RXZlbnRDb2NvYS5oICovLAorCQkJ
CUE1MUQ3RjM5MTE0MUIyNjcwMDJDRUQzNiAvKiBLZXlFdmVudENvY29hLm1tICovLAorCQkJKTsK
KwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1
QTg0OTMyMTE0MUJCQUIwMENEMTgwRSAvKiBpcGhvbmUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QTg0OTMzMTE0MUJCQzgwMENEMTgwRSAvKiBLZXlF
dmVudElQaG9uZS5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gaXBob25lOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQTc1RThCN0YwRTFERTJCMDAwN0YyNDgxIC8qIGZpbHRl
cnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTUyMTUs
NyArMTUyMzgsOSBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDlFOTEyQTQwRUZBQzhFNjAwOUQw
Q0FGIC8qIGFuaW1hdGlvbiAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2Yg
Ki8sCisJCQkJQTUxRDdGMzcxMTQxQjI0OTAwMkNFRDM2IC8qIGNvY29hICovLAogCQkJCUIyQTAx
NTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywKKwkJCQlBNUE4NDkzMjExNDFCQkFC
MDBDRDE4MEUgLyogaXBob25lICovLAogCQkJCTY1ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBt
YWMgKi8sCiAJCQkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJCQkJNjU2
Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsgKi8sCkBAIC0xODYxNiw2ICsxODY0MSw3
IEBACiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3NjM3QzU0MzExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAwMUU1QTY4IC8q
IFNwYXRpYWxOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTFEN0YzQTExNDFCMjY3
MDAyQ0VEMzYgLyogS2V5RXZlbnRDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDgwNyw2ICsy
MDgzMyw4IEBACiAJCQkJMEJDMkM3NzcxMTM0QThGQzAwMEIyRjYxIC8qIENhbnZhc1N1cmZhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzYzN0M1NDExMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjI2Q0RFMEUxMTQw
NDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUE1MUQ3RjNCMTE0MUIyNjcwMDJDRUQzNiAvKiBLZXlFdmVudENvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTVBODQ5MzQxMTQxQkJDODAwQ0QxODBFIC8qIEtleUV2ZW50SVBob25lLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2Eu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EuaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpZm5kZWYgS2V5RXZlbnRDb2Nv
YV9ICisjZGVmaW5lIEtleUV2ZW50Q29jb2FfSAorCisjaWYgUExBVEZPUk0oSVBIT05FKQorZW51
bSB7CisJTlNVcEFycm93RnVuY3Rpb25LZXkJCT0gMHhGNzAwLAorCU5TRG93bkFycm93RnVuY3Rp
b25LZXkJCT0gMHhGNzAxLAorCU5TTGVmdEFycm93RnVuY3Rpb25LZXkJCT0gMHhGNzAyLAorCU5T
UmlnaHRBcnJvd0Z1bmN0aW9uS2V5CQk9IDB4RjcwMywKKwlOU0YxRnVuY3Rpb25LZXkJCQk9IDB4
RjcwNCwKKwlOU0YyRnVuY3Rpb25LZXkJCQk9IDB4RjcwNSwKKwlOU0YzRnVuY3Rpb25LZXkJCQk9
IDB4RjcwNiwKKwlOU0Y0RnVuY3Rpb25LZXkJCQk9IDB4RjcwNywKKwlOU0Y1RnVuY3Rpb25LZXkJ
CQk9IDB4RjcwOCwKKwlOU0Y2RnVuY3Rpb25LZXkJCQk9IDB4RjcwOSwKKwlOU0Y3RnVuY3Rpb25L
ZXkJCQk9IDB4RjcwQSwKKwlOU0Y4RnVuY3Rpb25LZXkJCQk9IDB4RjcwQiwKKwlOU0Y5RnVuY3Rp
b25LZXkJCQk9IDB4RjcwQywKKwlOU0YxMEZ1bmN0aW9uS2V5CQk9IDB4RjcwRCwKKwlOU0YxMUZ1
bmN0aW9uS2V5CQk9IDB4RjcwRSwKKwlOU0YxMkZ1bmN0aW9uS2V5CQk9IDB4RjcwRiwKKwlOU0Yx
M0Z1bmN0aW9uS2V5CQk9IDB4RjcxMCwKKwlOU0YxNEZ1bmN0aW9uS2V5CQk9IDB4RjcxMSwKKwlO
U0YxNUZ1bmN0aW9uS2V5CQk9IDB4RjcxMiwKKwlOU0YxNkZ1bmN0aW9uS2V5CQk9IDB4RjcxMywK
KwlOU0YxN0Z1bmN0aW9uS2V5CQk9IDB4RjcxNCwKKwlOU0YxOEZ1bmN0aW9uS2V5CQk9IDB4Rjcx
NSwKKwlOU0YxOUZ1bmN0aW9uS2V5CQk9IDB4RjcxNiwKKwlOU0YyMEZ1bmN0aW9uS2V5CQk9IDB4
RjcxNywKKwlOU0YyMUZ1bmN0aW9uS2V5CQk9IDB4RjcxOCwKKwlOU0YyMkZ1bmN0aW9uS2V5CQk9
IDB4RjcxOSwKKwlOU0YyM0Z1bmN0aW9uS2V5CQk9IDB4RjcxQSwKKwlOU0YyNEZ1bmN0aW9uS2V5
CQk9IDB4RjcxQiwKKwlOU0YyNUZ1bmN0aW9uS2V5CQk9IDB4RjcxQywKKwlOU0YyNkZ1bmN0aW9u
S2V5CQk9IDB4RjcxRCwKKwlOU0YyN0Z1bmN0aW9uS2V5CQk9IDB4RjcxRSwKKwlOU0YyOEZ1bmN0
aW9uS2V5CQk9IDB4RjcxRiwKKwlOU0YyOUZ1bmN0aW9uS2V5CQk9IDB4RjcyMCwKKwlOU0YzMEZ1
bmN0aW9uS2V5CQk9IDB4RjcyMSwKKwlOU0YzMUZ1bmN0aW9uS2V5CQk9IDB4RjcyMiwKKwlOU0Yz
MkZ1bmN0aW9uS2V5CQk9IDB4RjcyMywKKwlOU0YzM0Z1bmN0aW9uS2V5CQk9IDB4RjcyNCwKKwlO
U0YzNEZ1bmN0aW9uS2V5CQk9IDB4RjcyNSwKKwlOU0YzNUZ1bmN0aW9uS2V5CQk9IDB4RjcyNiwK
KwlOU0luc2VydEZ1bmN0aW9uS2V5CQk9IDB4RjcyNywKKwlOU0RlbGV0ZUZ1bmN0aW9uS2V5CQk9
IDB4RjcyOCwKKwlOU0hvbWVGdW5jdGlvbktleQkJPSAweEY3MjksCisJTlNCZWdpbkZ1bmN0aW9u
S2V5CQk9IDB4RjcyQSwKKwlOU0VuZEZ1bmN0aW9uS2V5CQk9IDB4RjcyQiwKKwlOU1BhZ2VVcEZ1
bmN0aW9uS2V5CQk9IDB4RjcyQywKKwlOU1BhZ2VEb3duRnVuY3Rpb25LZXkJCT0gMHhGNzJELAor
CU5TUHJpbnRTY3JlZW5GdW5jdGlvbktleQk9IDB4RjcyRSwKKwlOU1Njcm9sbExvY2tGdW5jdGlv
bktleQkJPSAweEY3MkYsCisJTlNQYXVzZUZ1bmN0aW9uS2V5CQk9IDB4RjczMCwKKwlOU1N5c1Jl
cUZ1bmN0aW9uS2V5CQk9IDB4RjczMSwKKwlOU0JyZWFrRnVuY3Rpb25LZXkJCT0gMHhGNzMyLAor
CU5TUmVzZXRGdW5jdGlvbktleQkJPSAweEY3MzMsCisJTlNTdG9wRnVuY3Rpb25LZXkJCT0gMHhG
NzM0LAorCU5TTWVudUZ1bmN0aW9uS2V5CQk9IDB4RjczNSwKKwlOU1VzZXJGdW5jdGlvbktleQkJ
PSAweEY3MzYsCisJTlNTeXN0ZW1GdW5jdGlvbktleQkJPSAweEY3MzcsCisJTlNQcmludEZ1bmN0
aW9uS2V5CQk9IDB4RjczOCwKKwlOU0NsZWFyTGluZUZ1bmN0aW9uS2V5CQk9IDB4RjczOSwKKwlO
U0NsZWFyRGlzcGxheUZ1bmN0aW9uS2V5CT0gMHhGNzNBLAorCU5TSW5zZXJ0TGluZUZ1bmN0aW9u
S2V5CQk9IDB4RjczQiwKKwlOU0RlbGV0ZUxpbmVGdW5jdGlvbktleQkJPSAweEY3M0MsCisJTlNJ
bnNlcnRDaGFyRnVuY3Rpb25LZXkJCT0gMHhGNzNELAorCU5TRGVsZXRlQ2hhckZ1bmN0aW9uS2V5
CQk9IDB4RjczRSwKKwlOU1ByZXZGdW5jdGlvbktleQkJPSAweEY3M0YsCisJTlNOZXh0RnVuY3Rp
b25LZXkJCT0gMHhGNzQwLAorCU5TU2VsZWN0RnVuY3Rpb25LZXkJCT0gMHhGNzQxLAorCU5TRXhl
Y3V0ZUZ1bmN0aW9uS2V5CQk9IDB4Rjc0MiwKKwlOU1VuZG9GdW5jdGlvbktleQkJPSAweEY3NDMs
CisJTlNSZWRvRnVuY3Rpb25LZXkJCT0gMHhGNzQ0LAorCU5TRmluZEZ1bmN0aW9uS2V5CQk9IDB4
Rjc0NSwKKwlOU0hlbHBGdW5jdGlvbktleQkJPSAweEY3NDYsCisJTlNNb2RlU3dpdGNoRnVuY3Rp
b25LZXkJCT0gMHhGNzQ3Cit9OworCitlbnVtIHsKKyAgICBOU1BhcmFncmFwaFNlcGFyYXRvckNo
YXJhY3RlciA9IDB4MjAyOSwKKyAgICBOU0xpbmVTZXBhcmF0b3JDaGFyYWN0ZXIgPSAweDIwMjgs
CisgICAgTlNUYWJDaGFyYWN0ZXIgPSAweDAwMDksCisgICAgTlNGb3JtRmVlZENoYXJhY3RlciA9
IDB4MDAwYywKKyAgICBOU05ld2xpbmVDaGFyYWN0ZXIgPSAweDAwMGEsCisgICAgTlNDYXJyaWFn
ZVJldHVybkNoYXJhY3RlciA9IDB4MDAwZCwKKyAgICBOU0VudGVyQ2hhcmFjdGVyID0gMHgwMDAz
LAorICAgIE5TQmFja3NwYWNlQ2hhcmFjdGVyID0gMHgwMDA4LAorICAgIE5TQmFja1RhYkNoYXJh
Y3RlciA9IDB4MDAxOSwKKyAgICBOU0RlbGV0ZUNoYXJhY3RlciA9IDB4MDA3ZgorfTsKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0cmluZzsKKworaW50IHdpbmRvd3NL
ZXlDb2RlRm9yS2V5RXZlbnQodWludDE2X3Qga2V5Q29kZSwgTlNTdHJpbmcqIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycyk7CitTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50Q2hhcmFj
dGVycyhOU1N0cmluZyogY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzKTsKKworfQorCisjZW5k
aWYgLy8gS2V5RXZlbnRDb2NvYV9ICisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0JKHJldmlzaW9uIDU1NTkyKQko
ZnJvbSBXZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbTo1NTU5MikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDg3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNp
bXBvcnQgPENhcmJvbi9DYXJib24uaD4KKyNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBlLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmlu
ZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgaWYgKFtl
dmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkgCisgICAgICAgIHN3aXRjaCAoW2V2ZW50IGtl
eUNvZGVdKSB7CisgICAgICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCisgICAgICAg
ICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKKyAgICAgICAgICAgICAgICByZXR1cm4gIk1l
dGEiOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sK
KyAgICAgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKKyAgICAgICAgICAgIGNhc2UgNjA6IC8v
IFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAorICAgICAgICAgICAgY2Fz
ZSA2MTogLy8gUmlnaHQgQWx0CisgICAgICAgICAgICAgICAgcmV0dXJuICJBbHQiOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCisgICAgICAgICAg
ICBjYXNlIDYyOiAvLyBSaWdodCBDdHJsCisgICAgICAgICAgICAgICAgcmV0dXJuICJDb250cm9s
IjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICB9CisgICAgCisgICAgTlNTdHJpbmcgKnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzXTsKKyAgICBpZiAoW3MgbGVuZ3RoXSAhPSAxKSB7CisgICAgICAgIExPRyhFdmVu
dHMsICJyZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBl
dmVudDogJXUiLCBbcyBsZW5ndGhdKTsKKyAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOwor
ICAgIH0KKyAgICB1bmljaGFyIGMgPSBbcyBjaGFyYWN0ZXJBdEluZGV4OjBdOworICAgIHN3aXRj
aCAoYykgeworICAgICAgICAvLyBFYWNoIGlkZW50aWZpZXIgbGlzdGVkIGluIHRoZSBET00gc3Bl
YyBpcyBsaXN0ZWQgaGVyZS4KKyAgICAgICAgLy8gTWFueSBhcmUgc2ltcGx5IGNvbW1lbnRlZCBv
dXQgc2luY2UgdGhleSBkbyBub3QgYXBwZWFyIG9uIHN0YW5kYXJkIE1hY2ludG9zaCBrZXlib2Fy
ZHMKKyAgICAgICAgLy8gb3IgYXJlIG9uIGEga2V5IHRoYXQgZG9lc24ndCBoYXZlIGEgY29ycmVz
cG9uZGluZyBjaGFyYWN0ZXIuCisKKyAgICAgICAgLy8gIkFjY2VwdCIKKyAgICAgICAgLy8gIkFs
bENhbmRpZGF0ZXMiCisKKyAgICAgICAgLy8gIkFsdCIKKyAgICAgICAgY2FzZSBOU01lbnVGdW5j
dGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKworICAgICAgICAvLyAiQXBwcyIK
KyAgICAgICAgLy8gIkJyb3dzZXJCYWNrIgorICAgICAgICAvLyAiQnJvd3NlckZvcndhcmQiCisg
ICAgICAgIC8vICJCcm93c2VySG9tZSIKKyAgICAgICAgLy8gIkJyb3dzZXJSZWZyZXNoIgorICAg
ICAgICAvLyAiQnJvd3NlclNlYXJjaCIKKyAgICAgICAgLy8gIkJyb3dzZXJTdG9wIgorICAgICAg
ICAvLyAiQ2Fwc0xvY2siCisKKyAgICAgICAgLy8gIkNsZWFyIgorICAgICAgICBjYXNlIE5TQ2xl
YXJMaW5lRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKworICAgICAg
ICAvLyAiQ29kZUlucHV0IgorICAgICAgICAvLyAiQ29tcG9zZSIKKyAgICAgICAgLy8gIkNvbnRy
b2wiCisgICAgICAgIC8vICJDcnNlbCIKKyAgICAgICAgLy8gIkNvbnZlcnQiCisgICAgICAgIC8v
ICJDb3B5IgorICAgICAgICAvLyAiQ3V0IgorCisgICAgICAgIC8vICJEb3duIgorICAgICAgICBj
YXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkRvd24iOwor
ICAgICAgICAvLyAiRW5kIgorICAgICAgICBjYXNlIE5TRW5kRnVuY3Rpb25LZXk6CisgICAgICAg
ICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgIC8vICJFbnRlciIKKyAgICAgICAgY2FzZSAweDM6
IGNhc2UgMHhBOiBjYXNlIDB4RDogLy8gTWFjaW50b3NoIGNhbGxzIHRoZSBvbmUgb24gdGhlIG1h
aW4ga2V5Ym9hcmQgUmV0dXJuLCBidXQgV2luZG93cyBjYWxscyBpdCBFbnRlciwgc28gd2UnbGwg
ZG8gdGhlIHNhbWUgZm9yIHRoZSBET00KKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiOworCisg
ICAgICAgIC8vICJFcmFzZUVvZiIKKworICAgICAgICAvLyAiRXhlY3V0ZSIKKyAgICAgICAgY2Fz
ZSBOU0V4ZWN1dGVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisK
KyAgICAgICAgLy8gIkV4c2VsIgorCisgICAgICAgIC8vICJGMSIKKyAgICAgICAgY2FzZSBOU0Yx
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgLy8gIkYyIgor
ICAgICAgICBjYXNlIE5TRjJGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjIiOwor
ICAgICAgICAvLyAiRjMiCisgICAgICAgIGNhc2UgTlNGM0Z1bmN0aW9uS2V5OgorICAgICAgICAg
ICAgcmV0dXJuICJGMyI7CisgICAgICAgIC8vICJGNCIKKyAgICAgICAgY2FzZSBOU0Y0RnVuY3Rp
b25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgLy8gIkY1IgorICAgICAg
ICBjYXNlIE5TRjVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjUiOworICAgICAg
ICAvLyAiRjYiCisgICAgICAgIGNhc2UgTlNGNkZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0
dXJuICJGNiI7CisgICAgICAgIC8vICJGNyIKKyAgICAgICAgY2FzZSBOU0Y3RnVuY3Rpb25LZXk6
CisgICAgICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgLy8gIkY4IgorICAgICAgICBjYXNl
IE5TRjhGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjgiOworICAgICAgICAvLyAi
RjkiCisgICAgICAgIGNhc2UgTlNGOUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJG
OSI7CisgICAgICAgIC8vICJGMTAiCisgICAgICAgIGNhc2UgTlNGMTBGdW5jdGlvbktleToKKyAg
ICAgICAgICAgIHJldHVybiAiRjEwIjsKKyAgICAgICAgLy8gIkYxMSIKKyAgICAgICAgY2FzZSBO
U0YxMUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMTEiOworICAgICAgICAvLyAi
RjEyIgorICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4g
IkYxMiI7CisgICAgICAgIC8vICJGMTMiCisgICAgICAgIGNhc2UgTlNGMTNGdW5jdGlvbktleToK
KyAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgLy8gIkYxNCIKKyAgICAgICAgY2Fz
ZSBOU0YxNEZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICAv
LyAiRjE1IgorICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIC8vICJGMTYiCisgICAgICAgIGNhc2UgTlNGMTZGdW5jdGlvbktl
eToKKyAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgLy8gIkYxNyIKKyAgICAgICAg
Y2FzZSBOU0YxN0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMTciOworICAgICAg
ICAvLyAiRjE4IgorICAgICAgICBjYXNlIE5TRjE4RnVuY3Rpb25LZXk6CisgICAgICAgICAgICBy
ZXR1cm4gIkYxOCI7CisgICAgICAgIC8vICJGMTkiCisgICAgICAgIGNhc2UgTlNGMTlGdW5jdGlv
bktleToKKyAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgLy8gIkYyMCIKKyAgICAg
ICAgY2FzZSBOU0YyMEZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMjAiOworICAg
ICAgICAvLyAiRjIxIgorICAgICAgICBjYXNlIE5TRjIxRnVuY3Rpb25LZXk6CisgICAgICAgICAg
ICByZXR1cm4gIkYyMSI7CisgICAgICAgIC8vICJGMjIiCisgICAgICAgIGNhc2UgTlNGMjJGdW5j
dGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgLy8gIkYyMyIKKyAg
ICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMjMiOwor
ICAgICAgICAvLyAiRjI0IgorICAgICAgICBjYXNlIE5TRjI0RnVuY3Rpb25LZXk6CisgICAgICAg
ICAgICByZXR1cm4gIkYyNCI7CisKKyAgICAgICAgLy8gIkZpbmFsTW9kZSIKKworICAgICAgICAv
LyAiRmluZCIKKyAgICAgICAgY2FzZSBOU0ZpbmRGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJl
dHVybiAiRmluZCI7CisKKyAgICAgICAgLy8gIkZ1bGxXaWR0aCIKKyAgICAgICAgLy8gIkhhbGZX
aWR0aCIKKyAgICAgICAgLy8gIkhhbmd1bE1vZGUiCisgICAgICAgIC8vICJIYW5qYU1vZGUiCisK
KyAgICAgICAgLy8gIkhlbHAiCisgICAgICAgIGNhc2UgTlNIZWxwRnVuY3Rpb25LZXk6CisgICAg
ICAgICAgICByZXR1cm4gIkhlbHAiOworCisgICAgICAgIC8vICJIaXJhZ2FuYSIKKworICAgICAg
ICAvLyAiSG9tZSIKKyAgICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleToKKyAgICAgICAgICAg
IHJldHVybiAiSG9tZSI7CisgICAgICAgIC8vICJJbnNlcnQiCisgICAgICAgIGNhc2UgTlNJbnNl
cnRGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKworICAgICAgICAv
LyAiSmFwYW5lc2VIaXJhZ2FuYSIKKyAgICAgICAgLy8gIkphcGFuZXNlS2F0YWthbmEiCisgICAg
ICAgIC8vICJKYXBhbmVzZVJvbWFqaSIKKyAgICAgICAgLy8gIkp1bmphTW9kZSIKKyAgICAgICAg
Ly8gIkthbmFNb2RlIgorICAgICAgICAvLyAiS2FuamlNb2RlIgorICAgICAgICAvLyAiS2F0YWth
bmEiCisgICAgICAgIC8vICJMYXVuY2hBcHBsaWNhdGlvbjEiCisgICAgICAgIC8vICJMYXVuY2hB
cHBsaWNhdGlvbjIiCisgICAgICAgIC8vICJMYXVuY2hNYWlsIgorCisgICAgICAgIC8vICJMZWZ0
IgorICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1
cm4gIkxlZnQiOworCisgICAgICAgIC8vICJNZXRhIgorICAgICAgICAvLyAiTWVkaWFOZXh0VHJh
Y2siCisgICAgICAgIC8vICJNZWRpYVBsYXlQYXVzZSIKKyAgICAgICAgLy8gIk1lZGlhUHJldmlv
dXNUcmFjayIKKyAgICAgICAgLy8gIk1lZGlhU3RvcCIKKworICAgICAgICAvLyAiTW9kZUNoYW5n
ZSIKKyAgICAgICAgY2FzZSBOU01vZGVTd2l0Y2hGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJl
dHVybiAiTW9kZUNoYW5nZSI7CisKKyAgICAgICAgLy8gIk5vbmNvbnZlcnQiCisgICAgICAgIC8v
ICJOdW1Mb2NrIgorCisgICAgICAgIC8vICJQYWdlRG93biIKKyAgICAgICAgY2FzZSBOU1BhZ2VE
b3duRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAg
Ly8gIlBhZ2VVcCIKKyAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OgorICAgICAgICAg
ICAgcmV0dXJuICJQYWdlVXAiOworCisgICAgICAgIC8vICJQYXN0ZSIKKworICAgICAgICAvLyAi
UGF1c2UiCisgICAgICAgIGNhc2UgTlNQYXVzZUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0
dXJuICJQYXVzZSI7CisKKyAgICAgICAgLy8gIlBsYXkiCisgICAgICAgIC8vICJQcmV2aW91c0Nh
bmRpZGF0ZSIKKworICAgICAgICAvLyAiUHJpbnRTY3JlZW4iCisgICAgICAgIGNhc2UgTlNQcmlu
dFNjcmVlbkZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisK
KyAgICAgICAgLy8gIlByb2Nlc3MiCisgICAgICAgIC8vICJQcm9wcyIKKworICAgICAgICAvLyAi
UmlnaHQiCisgICAgICAgIGNhc2UgTlNSaWdodEFycm93RnVuY3Rpb25LZXk6CisgICAgICAgICAg
ICByZXR1cm4gIlJpZ2h0IjsKKworICAgICAgICAvLyAiUm9tYW5DaGFyYWN0ZXJzIgorCisgICAg
ICAgIC8vICJTY3JvbGwiCisgICAgICAgIGNhc2UgTlNTY3JvbGxMb2NrRnVuY3Rpb25LZXk6Cisg
ICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgIC8vICJTZWxlY3QiCisgICAgICAg
IGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsK
KworICAgICAgICAvLyAiU2VsZWN0TWVkaWEiCisgICAgICAgIC8vICJTaGlmdCIKKworICAgICAg
ICAvLyAiU3RvcCIKKyAgICAgICAgY2FzZSBOU1N0b3BGdW5jdGlvbktleToKKyAgICAgICAgICAg
IHJldHVybiAiU3RvcCI7CisgICAgICAgIC8vICJVcCIKKyAgICAgICAgY2FzZSBOU1VwQXJyb3dG
dW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAvLyAiVW5kbyIK
KyAgICAgICAgY2FzZSBOU1VuZG9GdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiVW5k
byI7CisKKyAgICAgICAgLy8gIlZvbHVtZURvd24iCisgICAgICAgIC8vICJWb2x1bWVNdXRlIgor
ICAgICAgICAvLyAiVm9sdW1lVXAiCisgICAgICAgIC8vICJXaW4iCisgICAgICAgIC8vICJab29t
IgorCisgICAgICAgIC8vIE1vcmUgZnVuY3Rpb24ga2V5cywgbm90IGluIHRoZSBrZXkgaWRlbnRp
ZmllciBzcGVjaWZpY2F0aW9uLgorICAgICAgICBjYXNlIE5TRjI1RnVuY3Rpb25LZXk6CisgICAg
ICAgICAgICByZXR1cm4gIkYyNSI7CisgICAgICAgIGNhc2UgTlNGMjZGdW5jdGlvbktleToKKyAg
ICAgICAgICAgIHJldHVybiAiRjI2IjsKKyAgICAgICAgY2FzZSBOU0YyN0Z1bmN0aW9uS2V5Ogor
ICAgICAgICAgICAgcmV0dXJuICJGMjciOworICAgICAgICBjYXNlIE5TRjI4RnVuY3Rpb25LZXk6
CisgICAgICAgICAgICByZXR1cm4gIkYyOCI7CisgICAgICAgIGNhc2UgTlNGMjlGdW5jdGlvbktl
eToKKyAgICAgICAgICAgIHJldHVybiAiRjI5IjsKKyAgICAgICAgY2FzZSBOU0YzMEZ1bmN0aW9u
S2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMzAiOworICAgICAgICBjYXNlIE5TRjMxRnVuY3Rp
b25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYzMSI7CisgICAgICAgIGNhc2UgTlNGMzJGdW5j
dGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjMyIjsKKyAgICAgICAgY2FzZSBOU0YzM0Z1
bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMzMiOworICAgICAgICBjYXNlIE5TRjM0
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYzNCI7CisgICAgICAgIGNhc2UgTlNG
MzVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjM1IjsKKworICAgICAgICAvLyBU
dXJuIDB4N0YgaW50byAweDA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdheXMgYmUg
MHgwOC4KKyAgICAgICAgY2FzZSAweDdGOgorICAgICAgICAgICAgcmV0dXJuICJVKzAwMDgiOwor
ICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgorICAgICAg
ICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7
CisgICAgICAgICAgICAKKyAgICAgICAgLy8gQWx3YXlzIHVzZSAweDA5IGZvciB0YWIgaW5zdGVh
ZCBvZiBBcHBLaXQncyBiYWNrdGFiIGNoYXJhY3Rlci4KKyAgICAgICAgY2FzZSBOU0JhY2tUYWJD
aGFyYWN0ZXI6CisgICAgICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisKKyAgICAgICAgY2FzZSBO
U0JlZ2luRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNCcmVha0Z1bmN0aW9uS2V5OgorICAg
ICAgICBjYXNlIE5TQ2xlYXJEaXNwbGF5RnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNEZWxl
dGVDaGFyRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNEZWxldGVMaW5lRnVuY3Rpb25LZXk6
CisgICAgICAgIGNhc2UgTlNJbnNlcnRDaGFyRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNJ
bnNlcnRMaW5lRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNOZXh0RnVuY3Rpb25LZXk6Cisg
ICAgICAgIGNhc2UgTlNQcmV2RnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNQcmludEZ1bmN0
aW9uS2V5OgorICAgICAgICBjYXNlIE5TUmVkb0Z1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5T
UmVzZXRGdW5jdGlvbktleToKKyAgICAgICAgY2FzZSBOU1N5c1JlcUZ1bmN0aW9uS2V5OgorICAg
ICAgICBjYXNlIE5TU3lzdGVtRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNVc2VyRnVuY3Rp
b25LZXk6CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBzb21ldGhpbmcgb3Ro
ZXIgdGhhbiB0aGUgdmVuZG9yLWFyZWEgVW5pY29kZSB2YWx1ZXMgZm9yIHRoZSBhYm92ZSBrZXlz
LgorICAgICAgICAgICAgLy8gRm9yIG5vdywganVzdCBmYWxsIHRocm91Z2ggdG8gdGhlIGRlZmF1
bHQuCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IlUrJTA0WCIsIHRvQVNDSUlVcHBlcihjKSk7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc0tl
eXBhZEV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIC8vIENoZWNrIHRoYXQgdGhpcyBpcyB0
aGUgdHlwZSBvZiBldmVudCB0aGF0IGhhcyBhIGtleUNvZGUuCisgICAgc3dpdGNoIChbZXZlbnQg
dHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0tleURvd246CisgICAgICAgIGNhc2UgTlNLZXlVcDoK
KyAgICAgICAgY2FzZSBOU0ZsYWdzQ2hhbmdlZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU051bWVyaWNQYWRLZXlNYXNrKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7CisgICAgICAgIGNhc2Ug
NzE6IC8vIENsZWFyCisgICAgICAgIGNhc2UgODE6IC8vID0KKyAgICAgICAgY2FzZSA3NTogLy8g
LworICAgICAgICBjYXNlIDY3OiAvLyAqCisgICAgICAgIGNhc2UgNzg6IC8vIC0KKyAgICAgICAg
Y2FzZSA2OTogLy8gKworICAgICAgICBjYXNlIDc2OiAvLyBFbnRlcgorICAgICAgICBjYXNlIDY1
OiAvLyAuCisgICAgICAgIGNhc2UgODI6IC8vIDAKKyAgICAgICAgY2FzZSA4MzogLy8gMQorICAg
ICAgICBjYXNlIDg0OiAvLyAyCisgICAgICAgIGNhc2UgODU6IC8vIDMKKyAgICAgICAgY2FzZSA4
NjogLy8gNAorICAgICAgICBjYXNlIDg3OiAvLyA1CisgICAgICAgIGNhc2UgODg6IC8vIDYKKyAg
ICAgICAgY2FzZSA4OTogLy8gNworICAgICAgICBjYXNlIDkxOiAvLyA4CisgICAgICAgIGNhc2Ug
OTI6IC8vIDkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICB9CisgICAgIAorICAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChO
U0V2ZW50KiBldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgICAg
ICAvLyBWS19UQUIgKDA5KSBUQUIga2V5CisgICAgICAgIGNhc2UgNDg6IHJldHVybiAweDA5Owor
CisgICAgICAgIC8vIFZLX0FQUFMgKDVEKSBSaWdodCB3aW5kb3dzL21ldGEga2V5CisgICAgICAg
IGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKKyAgICAgICAgICAgIHJldHVybiAweDVEOworICAg
ICAgICAgICAgCisgICAgICAgIC8vIFZLX0xXSU4gKDVCKSBMZWZ0IHdpbmRvd3MvbWV0YSBrZXkK
KyAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisgICAgICAgICAgICByZXR1cm4gMHg1
QjsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBWS19DQVBJVEFMICgxNCkgY2FwcyBsb2NrcyBr
ZXkKKyAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAgICAgICAgICAgIHJldHVybiAweDE0
OworICAgICAgICAgICAgCisgICAgICAgIC8vIFZLX1NISUZUICgxMCkgZWl0aGVyIHNoaWZ0IGtl
eQorICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0CisgICAgICAgIGNhc2UgNjA6IC8vIFJp
Z2h0IFNoaWZ0CisgICAgICAgICAgICByZXR1cm4gMHgxMDsKKyAgICAgICAgICAgIAorICAgICAg
ICAvLyBWS19NRU5VICgxMikgZWl0aGVyIGFsdCBrZXkKKyAgICAgICAgY2FzZSA1ODogLy8gTGVm
dCBBbHQKKyAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0CisgICAgICAgICAgICByZXR1cm4g
MHgxMjsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBWS19DT05UUk9MICgxMSkgZWl0aGVyIGN0
cmwga2V5CisgICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAorICAgICAgICBjYXNlIDYyOiAv
LyBSaWdodCBDdHJsCisgICAgICAgICAgICByZXR1cm4gMHgxMTsKKyAgICAgICAgICAgIAorICAg
ICAgICAvLyBWS19DTEVBUiAoMEMpIENMRUFSIGtleQorICAgICAgICBjYXNlIDcxOiByZXR1cm4g
MHgwQzsKKworICAgICAgICAvLyBWS19OVU1QQUQwICg2MCkgTnVtZXJpYyBrZXlwYWQgMCBrZXkK
KyAgICAgICAgY2FzZSA4MjogcmV0dXJuIDB4NjA7CisgICAgICAgIC8vIFZLX05VTVBBRDEgKDYx
KSBOdW1lcmljIGtleXBhZCAxIGtleQorICAgICAgICBjYXNlIDgzOiByZXR1cm4gMHg2MTsKKyAg
ICAgICAgLy8gVktfTlVNUEFEMiAoNjIpIE51bWVyaWMga2V5cGFkIDIga2V5CisgICAgICAgIGNh
c2UgODQ6IHJldHVybiAweDYyOworICAgICAgICAvLyBWS19OVU1QQUQzICg2MykgTnVtZXJpYyBr
ZXlwYWQgMyBrZXkKKyAgICAgICAgY2FzZSA4NTogcmV0dXJuIDB4NjM7CisgICAgICAgIC8vIFZL
X05VTVBBRDQgKDY0KSBOdW1lcmljIGtleXBhZCA0IGtleQorICAgICAgICBjYXNlIDg2OiByZXR1
cm4gMHg2NDsKKyAgICAgICAgLy8gVktfTlVNUEFENSAoNjUpIE51bWVyaWMga2V5cGFkIDUga2V5
CisgICAgICAgIGNhc2UgODc6IHJldHVybiAweDY1OworICAgICAgICAvLyBWS19OVU1QQUQ2ICg2
NikgTnVtZXJpYyBrZXlwYWQgNiBrZXkKKyAgICAgICAgY2FzZSA4ODogcmV0dXJuIDB4NjY7Cisg
ICAgICAgIC8vIFZLX05VTVBBRDcgKDY3KSBOdW1lcmljIGtleXBhZCA3IGtleQorICAgICAgICBj
YXNlIDg5OiByZXR1cm4gMHg2NzsKKyAgICAgICAgLy8gVktfTlVNUEFEOCAoNjgpIE51bWVyaWMg
a2V5cGFkIDgga2V5CisgICAgICAgIGNhc2UgOTE6IHJldHVybiAweDY4OworICAgICAgICAvLyBW
S19OVU1QQUQ5ICg2OSkgTnVtZXJpYyBrZXlwYWQgOSBrZXkKKyAgICAgICAgY2FzZSA5MjogcmV0
dXJuIDB4Njk7CisgICAgICAgIC8vIFZLX01VTFRJUExZICg2QSkgTXVsdGlwbHkga2V5CisgICAg
ICAgIGNhc2UgNjc6IHJldHVybiAweDZBOworICAgICAgICAvLyBWS19BREQgKDZCKSBBZGQga2V5
CisgICAgICAgIGNhc2UgNjk6IHJldHVybiAweDZCOworCisgICAgICAgIC8vIFZLX1NVQlRSQUNU
ICg2RCkgU3VidHJhY3Qga2V5CisgICAgICAgIGNhc2UgNzg6IHJldHVybiAweDZEOworICAgICAg
ICAvLyBWS19ERUNJTUFMICg2RSkgRGVjaW1hbCBrZXkKKyAgICAgICAgY2FzZSA2NTogcmV0dXJu
IDB4NkU7CisgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERpdmlkZSBrZXkKKyAgICAgICAgY2Fz
ZSA3NTogcmV0dXJuIDB4NkY7CisgICAgIH0KKworICAgIE5TU3RyaW5nKiBzID0gW2V2ZW50IGNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBzd2l0Y2ggKFtzIGNoYXJhY3RlckF0SW5kZXg6MF0pIHsK
KyAgICAgICAgLy8gVktfTEJVVFRPTiAoMDEpIExlZnQgbW91c2UgYnV0dG9uCisgICAgICAgIC8v
IFZLX1JCVVRUT04gKDAyKSBSaWdodCBtb3VzZSBidXR0b24KKyAgICAgICAgLy8gVktfQ0FOQ0VM
ICgwMykgQ29udHJvbC1icmVhayBwcm9jZXNzaW5nCisgICAgICAgIC8vIFZLX01CVVRUT04gKDA0
KSBNaWRkbGUgbW91c2UgYnV0dG9uICh0aHJlZS1idXR0b24gbW91c2UpCisgICAgICAgIC8vIFZL
X1hCVVRUT04xICgwNSkKKyAgICAgICAgLy8gVktfWEJVVFRPTjIgKDA2KQorCisgICAgICAgIC8v
IFZLX0JBQ0sgKDA4KSBCQUNLU1BBQ0Uga2V5CisgICAgICAgIGNhc2UgODogY2FzZSAweDdGOiBy
ZXR1cm4gMHgwODsKKyAgICAgICAgLy8gVktfVEFCICgwOSkgVEFCIGtleQorICAgICAgICBjYXNl
IDk6IHJldHVybiAweDA5OworCisgICAgICAgIC8vIFZLX0NMRUFSICgwQykgQ0xFQVIga2V5Cisg
ICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKKworICAgICAgICAvLyBWS19SRVRV
Uk4gKDBEKQorICAgICAgICBjYXNlIDB4RDogY2FzZSAzOiByZXR1cm4gMHgwRDsKKworICAgICAg
ICAvLyBWS19TSElGVCAoMTApIFNISUZUIGtleQorICAgICAgICAvLyBWS19DT05UUk9MICgxMSkg
Q1RSTCBrZXkKKyAgICAgICAgLy8gVktfTUVOVSAoMTIpIEFMVCBrZXkKKworICAgICAgICAvLyBW
S19QQVVTRSAoMTMpIFBBVVNFIGtleQorICAgICAgICBjYXNlIE5TUGF1c2VGdW5jdGlvbktleTog
cmV0dXJuIDB4MTM7CisKKyAgICAgICAgLy8gVktfQ0FQSVRBTCAoMTQpIENBUFMgTE9DSyBrZXkK
KyAgICAgICAgLy8gVktfS0FOQSAoMTUpIElucHV0IE1ldGhvZCBFZGl0b3IgKElNRSkgS2FuYSBt
b2RlCisgICAgICAgIC8vIFZLX0hBTkdVRUwgKDE1KSBJTUUgSGFuZ3VlbCBtb2RlIChtYWludGFp
bmVkIGZvciBjb21wYXRpYmlsaXR5OyB1c2UgVktfSEFOR1VMKQorICAgICAgICAvLyBWS19IQU5H
VUwgKDE1KSBJTUUgSGFuZ3VsIG1vZGUKKyAgICAgICAgLy8gVktfSlVOSkEgKDE3KSBJTUUgSnVu
amEgbW9kZQorICAgICAgICAvLyBWS19GSU5BTCAoMTgpIElNRSBmaW5hbCBtb2RlCisgICAgICAg
IC8vIFZLX0hBTkpBICgxOSkgSU1FIEhhbmphIG1vZGUKKyAgICAgICAgLy8gVktfS0FOSkkgKDE5
KSBJTUUgS2FuamkgbW9kZQorCisgICAgICAgIC8vIFZLX0VTQ0FQRSAoMUIpIEVTQyBrZXkKKyAg
ICAgICAgY2FzZSAweDFCOiByZXR1cm4gMHgxQjsKKworICAgICAgICAvLyBWS19DT05WRVJUICgx
QykgSU1FIGNvbnZlcnQKKyAgICAgICAgLy8gVktfTk9OQ09OVkVSVCAoMUQpIElNRSBub25jb252
ZXJ0CisgICAgICAgIC8vIFZLX0FDQ0VQVCAoMUUpIElNRSBhY2NlcHQKKyAgICAgICAgLy8gVktf
TU9ERUNIQU5HRSAoMUYpIElNRSBtb2RlIGNoYW5nZSByZXF1ZXN0CisKKyAgICAgICAgLy8gVktf
U1BBQ0UgKDIwKSBTUEFDRUJBUgorICAgICAgICBjYXNlICcgJzogcmV0dXJuIDB4MjA7CisgICAg
ICAgIC8vIFZLX1BSSU9SICgyMSkgUEFHRSBVUCBrZXkKKyAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1
bmN0aW9uS2V5OiByZXR1cm4gMHgyMTsKKyAgICAgICAgLy8gVktfTkVYVCAoMjIpIFBBR0UgRE9X
TiBrZXkKKyAgICAgICAgY2FzZSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk6IHJldHVybiAweDIyOwor
ICAgICAgICAvLyBWS19FTkQgKDIzKSBFTkQga2V5CisgICAgICAgIGNhc2UgTlNFbmRGdW5jdGlv
bktleTogcmV0dXJuIDB4MjM7CisgICAgICAgIC8vIFZLX0hPTUUgKDI0KSBIT01FIGtleQorICAg
ICAgICBjYXNlIE5TSG9tZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyNDsKKyAgICAgICAgLy8gVktf
TEVGVCAoMjUpIExFRlQgQVJST1cga2V5CisgICAgICAgIGNhc2UgTlNMZWZ0QXJyb3dGdW5jdGlv
bktleTogcmV0dXJuIDB4MjU7CisgICAgICAgIC8vIFZLX1VQICgyNikgVVAgQVJST1cga2V5Cisg
ICAgICAgIGNhc2UgTlNVcEFycm93RnVuY3Rpb25LZXk6IHJldHVybiAweDI2OworICAgICAgICAv
LyBWS19SSUdIVCAoMjcpIFJJR0hUIEFSUk9XIGtleQorICAgICAgICBjYXNlIE5TUmlnaHRBcnJv
d0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgyNzsKKyAgICAgICAgLy8gVktfRE9XTiAoMjgpIERPV04g
QVJST1cga2V5CisgICAgICAgIGNhc2UgTlNEb3duQXJyb3dGdW5jdGlvbktleTogcmV0dXJuIDB4
Mjg7CisgICAgICAgIC8vIFZLX1NFTEVDVCAoMjkpIFNFTEVDVCBrZXkKKyAgICAgICAgY2FzZSBO
U1NlbGVjdEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyOTsKKyAgICAgICAgLy8gVktfUFJJTlQgKDJB
KSBQUklOVCBrZXkKKyAgICAgICAgY2FzZSBOU1ByaW50RnVuY3Rpb25LZXk6IHJldHVybiAweDJB
OworICAgICAgICAvLyBWS19FWEVDVVRFICgyQikgRVhFQ1VURSBrZXkKKyAgICAgICAgY2FzZSBO
U0V4ZWN1dGVGdW5jdGlvbktleTogcmV0dXJuIDB4MkI7CisgICAgICAgIC8vIFZLX1NOQVBTSE9U
ICgyQykgUFJJTlQgU0NSRUVOIGtleQorICAgICAgICBjYXNlIE5TUHJpbnRTY3JlZW5GdW5jdGlv
bktleTogcmV0dXJuIDB4MkM7CisgICAgICAgIC8vIFZLX0lOU0VSVCAoMkQpIElOUyBrZXkKKyAg
ICAgICAgY2FzZSBOU0luc2VydEZ1bmN0aW9uS2V5OiBjYXNlIE5TSGVscEZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHgyRDsKKyAgICAgICAgLy8gVktfREVMRVRFICgyRSkgREVMIGtleQorICAgICAgICBj
YXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6IHJldHVybiAweDJFOworCisgICAgICAgIC8vIFZLX0hF
TFAgKDJGKSBIRUxQIGtleQorCisgICAgICAgIC8vICAoMzApIDAga2V5CisgICAgICAgIGNhc2Ug
JzAnOiBjYXNlICcpJzogcmV0dXJuIDB4MzA7CisgICAgICAgIC8vICAoMzEpIDEga2V5CisgICAg
ICAgIGNhc2UgJzEnOiBjYXNlICchJzogcmV0dXJuIDB4MzE7CisgICAgICAgIC8vICAoMzIpIDIg
a2V5CisgICAgICAgIGNhc2UgJzInOiBjYXNlICdAJzogcmV0dXJuIDB4MzI7CisgICAgICAgIC8v
ICAoMzMpIDMga2V5CisgICAgICAgIGNhc2UgJzMnOiBjYXNlICcjJzogcmV0dXJuIDB4MzM7Cisg
ICAgICAgIC8vICAoMzQpIDQga2V5CisgICAgICAgIGNhc2UgJzQnOiBjYXNlICckJzogcmV0dXJu
IDB4MzQ7CisgICAgICAgIC8vICAoMzUpIDUga2V5CisgICAgICAgIGNhc2UgJzUnOiBjYXNlICcl
JzogcmV0dXJuIDB4MzU7CisgICAgICAgIC8vICAoMzYpIDYga2V5CisgICAgICAgIGNhc2UgJzYn
OiBjYXNlICdeJzogcmV0dXJuIDB4MzY7CisgICAgICAgIC8vICAoMzcpIDcga2V5CisgICAgICAg
IGNhc2UgJzcnOiBjYXNlICcmJzogcmV0dXJuIDB4Mzc7CisgICAgICAgIC8vICAoMzgpIDgga2V5
CisgICAgICAgIGNhc2UgJzgnOiBjYXNlICcqJzogcmV0dXJuIDB4Mzg7CisgICAgICAgIC8vICAo
MzkpIDkga2V5CisgICAgICAgIGNhc2UgJzknOiBjYXNlICcoJzogcmV0dXJuIDB4Mzk7CisgICAg
ICAgIC8vICAoNDEpIEEga2V5CisgICAgICAgIGNhc2UgJ2EnOiBjYXNlICdBJzogcmV0dXJuIDB4
NDE7CisgICAgICAgIC8vICAoNDIpIEIga2V5CisgICAgICAgIGNhc2UgJ2InOiBjYXNlICdCJzog
cmV0dXJuIDB4NDI7CisgICAgICAgIC8vICAoNDMpIEMga2V5CisgICAgICAgIGNhc2UgJ2MnOiBj
YXNlICdDJzogcmV0dXJuIDB4NDM7CisgICAgICAgIC8vICAoNDQpIEQga2V5CisgICAgICAgIGNh
c2UgJ2QnOiBjYXNlICdEJzogcmV0dXJuIDB4NDQ7CisgICAgICAgIC8vICAoNDUpIEUga2V5Cisg
ICAgICAgIGNhc2UgJ2UnOiBjYXNlICdFJzogcmV0dXJuIDB4NDU7CisgICAgICAgIC8vICAoNDYp
IEYga2V5CisgICAgICAgIGNhc2UgJ2YnOiBjYXNlICdGJzogcmV0dXJuIDB4NDY7CisgICAgICAg
IC8vICAoNDcpIEcga2V5CisgICAgICAgIGNhc2UgJ2cnOiBjYXNlICdHJzogcmV0dXJuIDB4NDc7
CisgICAgICAgIC8vICAoNDgpIEgga2V5CisgICAgICAgIGNhc2UgJ2gnOiBjYXNlICdIJzogcmV0
dXJuIDB4NDg7CisgICAgICAgIC8vICAoNDkpIEkga2V5CisgICAgICAgIGNhc2UgJ2knOiBjYXNl
ICdJJzogcmV0dXJuIDB4NDk7CisgICAgICAgIC8vICAoNEEpIEoga2V5CisgICAgICAgIGNhc2Ug
J2onOiBjYXNlICdKJzogcmV0dXJuIDB4NEE7CisgICAgICAgIC8vICAoNEIpIEsga2V5CisgICAg
ICAgIGNhc2UgJ2snOiBjYXNlICdLJzogcmV0dXJuIDB4NEI7CisgICAgICAgIC8vICAoNEMpIEwg
a2V5CisgICAgICAgIGNhc2UgJ2wnOiBjYXNlICdMJzogcmV0dXJuIDB4NEM7CisgICAgICAgIC8v
ICAoNEQpIE0ga2V5CisgICAgICAgIGNhc2UgJ20nOiBjYXNlICdNJzogcmV0dXJuIDB4NEQ7Cisg
ICAgICAgIC8vICAoNEUpIE4ga2V5CisgICAgICAgIGNhc2UgJ24nOiBjYXNlICdOJzogcmV0dXJu
IDB4NEU7CisgICAgICAgIC8vICAoNEYpIE8ga2V5CisgICAgICAgIGNhc2UgJ28nOiBjYXNlICdP
JzogcmV0dXJuIDB4NEY7CisgICAgICAgIC8vICAoNTApIFAga2V5CisgICAgICAgIGNhc2UgJ3An
OiBjYXNlICdQJzogcmV0dXJuIDB4NTA7CisgICAgICAgIC8vICAoNTEpIFEga2V5CisgICAgICAg
IGNhc2UgJ3EnOiBjYXNlICdRJzogcmV0dXJuIDB4NTE7CisgICAgICAgIC8vICAoNTIpIFIga2V5
CisgICAgICAgIGNhc2UgJ3InOiBjYXNlICdSJzogcmV0dXJuIDB4NTI7CisgICAgICAgIC8vICAo
NTMpIFMga2V5CisgICAgICAgIGNhc2UgJ3MnOiBjYXNlICdTJzogcmV0dXJuIDB4NTM7CisgICAg
ICAgIC8vICAoNTQpIFQga2V5CisgICAgICAgIGNhc2UgJ3QnOiBjYXNlICdUJzogcmV0dXJuIDB4
NTQ7CisgICAgICAgIC8vICAoNTUpIFUga2V5CisgICAgICAgIGNhc2UgJ3UnOiBjYXNlICdVJzog
cmV0dXJuIDB4NTU7CisgICAgICAgIC8vICAoNTYpIFYga2V5CisgICAgICAgIGNhc2UgJ3YnOiBj
YXNlICdWJzogcmV0dXJuIDB4NTY7CisgICAgICAgIC8vICAoNTcpIFcga2V5CisgICAgICAgIGNh
c2UgJ3cnOiBjYXNlICdXJzogcmV0dXJuIDB4NTc7CisgICAgICAgIC8vICAoNTgpIFgga2V5Cisg
ICAgICAgIGNhc2UgJ3gnOiBjYXNlICdYJzogcmV0dXJuIDB4NTg7CisgICAgICAgIC8vICAoNTkp
IFkga2V5CisgICAgICAgIGNhc2UgJ3knOiBjYXNlICdZJzogcmV0dXJuIDB4NTk7CisgICAgICAg
IC8vICAoNUEpIFoga2V5CisgICAgICAgIGNhc2UgJ3onOiBjYXNlICdaJzogcmV0dXJuIDB4NUE7
CisKKyAgICAgICAgLy8gVktfTFdJTiAoNUIpIExlZnQgV2luZG93cyBrZXkgKE1pY3Jvc29mdCBO
YXR1cmFsIGtleWJvYXJkKQorICAgICAgICAvLyBWS19SV0lOICg1QykgUmlnaHQgV2luZG93cyBr
ZXkgKE5hdHVyYWwga2V5Ym9hcmQpCisgICAgICAgIC8vIFZLX0FQUFMgKDVEKSBBcHBsaWNhdGlv
bnMga2V5IChOYXR1cmFsIGtleWJvYXJkKQorICAgICAgICAvLyBWS19TTEVFUCAoNUYpIENvbXB1
dGVyIFNsZWVwIGtleQorCisgICAgICAgIC8vIFZLX05VTVBBRDAgKDYwKSBOdW1lcmljIGtleXBh
ZCAwIGtleQorICAgICAgICAvLyBWS19OVU1QQUQxICg2MSkgTnVtZXJpYyBrZXlwYWQgMSBrZXkK
KyAgICAgICAgLy8gVktfTlVNUEFEMiAoNjIpIE51bWVyaWMga2V5cGFkIDIga2V5CisgICAgICAg
IC8vIFZLX05VTVBBRDMgKDYzKSBOdW1lcmljIGtleXBhZCAzIGtleQorICAgICAgICAvLyBWS19O
VU1QQUQ0ICg2NCkgTnVtZXJpYyBrZXlwYWQgNCBrZXkKKyAgICAgICAgLy8gVktfTlVNUEFENSAo
NjUpIE51bWVyaWMga2V5cGFkIDUga2V5CisgICAgICAgIC8vIFZLX05VTVBBRDYgKDY2KSBOdW1l
cmljIGtleXBhZCA2IGtleQorICAgICAgICAvLyBWS19OVU1QQUQ3ICg2NykgTnVtZXJpYyBrZXlw
YWQgNyBrZXkKKyAgICAgICAgLy8gVktfTlVNUEFEOCAoNjgpIE51bWVyaWMga2V5cGFkIDgga2V5
CisgICAgICAgIC8vIFZLX05VTVBBRDkgKDY5KSBOdW1lcmljIGtleXBhZCA5IGtleQorICAgICAg
ICAvLyBWS19NVUxUSVBMWSAoNkEpIE11bHRpcGx5IGtleQorICAgICAgICAvLyBWS19BREQgKDZC
KSBBZGQga2V5CisgICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKKworICAgICAg
ICAvLyBWS19TRVBBUkFUT1IgKDZDKSBTZXBhcmF0b3Iga2V5CisKKyAgICAgICAgLy8gVktfU1VC
VFJBQ1QgKDZEKSBTdWJ0cmFjdCBrZXkKKyAgICAgICAgLy8gVktfREVDSU1BTCAoNkUpIERlY2lt
YWwga2V5CisgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERpdmlkZSBrZXkKKyAgICAgICAgLy8g
aGFuZGxlZCBieSBrZXkgY29kZSBhYm92ZQorCisgICAgICAgIC8vIFZLX0YxICg3MCkgRjEga2V5
CisgICAgICAgIGNhc2UgTlNGMUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3MDsKKyAgICAgICAgLy8g
VktfRjIgKDcxKSBGMiBrZXkKKyAgICAgICAgY2FzZSBOU0YyRnVuY3Rpb25LZXk6IHJldHVybiAw
eDcxOworICAgICAgICAvLyBWS19GMyAoNzIpIEYzIGtleQorICAgICAgICBjYXNlIE5TRjNGdW5j
dGlvbktleTogcmV0dXJuIDB4NzI7CisgICAgICAgIC8vIFZLX0Y0ICg3MykgRjQga2V5CisgICAg
ICAgIGNhc2UgTlNGNEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3MzsKKyAgICAgICAgLy8gVktfRjUg
KDc0KSBGNSBrZXkKKyAgICAgICAgY2FzZSBOU0Y1RnVuY3Rpb25LZXk6IHJldHVybiAweDc0Owor
ICAgICAgICAvLyBWS19GNiAoNzUpIEY2IGtleQorICAgICAgICBjYXNlIE5TRjZGdW5jdGlvbktl
eTogcmV0dXJuIDB4NzU7CisgICAgICAgIC8vIFZLX0Y3ICg3NikgRjcga2V5CisgICAgICAgIGNh
c2UgTlNGN0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg3NjsKKyAgICAgICAgLy8gVktfRjggKDc3KSBG
OCBrZXkKKyAgICAgICAgY2FzZSBOU0Y4RnVuY3Rpb25LZXk6IHJldHVybiAweDc3OworICAgICAg
ICAvLyBWS19GOSAoNzgpIEY5IGtleQorICAgICAgICBjYXNlIE5TRjlGdW5jdGlvbktleTogcmV0
dXJuIDB4Nzg7CisgICAgICAgIC8vIFZLX0YxMCAoNzkpIEYxMCBrZXkKKyAgICAgICAgY2FzZSBO
U0YxMEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3OTsKKyAgICAgICAgLy8gVktfRjExICg3QSkgRjEx
IGtleQorICAgICAgICBjYXNlIE5TRjExRnVuY3Rpb25LZXk6IHJldHVybiAweDdBOworICAgICAg
ICAvLyBWS19GMTIgKDdCKSBGMTIga2V5CisgICAgICAgIGNhc2UgTlNGMTJGdW5jdGlvbktleTog
cmV0dXJuIDB4N0I7CisgICAgICAgIC8vIFZLX0YxMyAoN0MpIEYxMyBrZXkKKyAgICAgICAgY2Fz
ZSBOU0YxM0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg3QzsKKyAgICAgICAgLy8gVktfRjE0ICg3RCkg
RjE0IGtleQorICAgICAgICBjYXNlIE5TRjE0RnVuY3Rpb25LZXk6IHJldHVybiAweDdEOworICAg
ICAgICAvLyBWS19GMTUgKDdFKSBGMTUga2V5CisgICAgICAgIGNhc2UgTlNGMTVGdW5jdGlvbktl
eTogcmV0dXJuIDB4N0U7CisgICAgICAgIC8vIFZLX0YxNiAoN0YpIEYxNiBrZXkKKyAgICAgICAg
Y2FzZSBOU0YxNkZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3RjsKKyAgICAgICAgLy8gVktfRjE3ICg4
MEgpIEYxNyBrZXkKKyAgICAgICAgY2FzZSBOU0YxN0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg4MDsK
KyAgICAgICAgLy8gVktfRjE4ICg4MUgpIEYxOCBrZXkKKyAgICAgICAgY2FzZSBOU0YxOEZ1bmN0
aW9uS2V5OiByZXR1cm4gMHg4MTsKKyAgICAgICAgLy8gVktfRjE5ICg4MkgpIEYxOSBrZXkKKyAg
ICAgICAgY2FzZSBOU0YxOUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4MjsKKyAgICAgICAgLy8gVktf
RjIwICg4M0gpIEYyMCBrZXkKKyAgICAgICAgY2FzZSBOU0YyMEZ1bmN0aW9uS2V5OiByZXR1cm4g
MHg4MzsKKyAgICAgICAgLy8gVktfRjIxICg4NEgpIEYyMSBrZXkKKyAgICAgICAgY2FzZSBOU0Yy
MUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4NDsKKyAgICAgICAgLy8gVktfRjIyICg4NUgpIEYyMiBr
ZXkKKyAgICAgICAgY2FzZSBOU0YyMkZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4NTsKKyAgICAgICAg
Ly8gVktfRjIzICg4NkgpIEYyMyBrZXkKKyAgICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OiBy
ZXR1cm4gMHg4NjsKKyAgICAgICAgLy8gVktfRjI0ICg4N0gpIEYyNCBrZXkKKyAgICAgICAgY2Fz
ZSBOU0YyNEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4NzsKKworICAgICAgICAvLyBWS19OVU1MT0NL
ICg5MCkgTlVNIExPQ0sga2V5CisKKyAgICAgICAgLy8gVktfU0NST0xMICg5MSkgU0NST0xMIExP
Q0sga2V5CisgICAgICAgIGNhc2UgTlNTY3JvbGxMb2NrRnVuY3Rpb25LZXk6IHJldHVybiAweDkx
OworCisgICAgICAgIC8vIFZLX0xTSElGVCAoQTApIExlZnQgU0hJRlQga2V5CisgICAgICAgIC8v
IFZLX1JTSElGVCAoQTEpIFJpZ2h0IFNISUZUIGtleQorICAgICAgICAvLyBWS19MQ09OVFJPTCAo
QTIpIExlZnQgQ09OVFJPTCBrZXkKKyAgICAgICAgLy8gVktfUkNPTlRST0wgKEEzKSBSaWdodCBD
T05UUk9MIGtleQorICAgICAgICAvLyBWS19MTUVOVSAoQTQpIExlZnQgTUVOVSBrZXkKKyAgICAg
ICAgLy8gVktfUk1FTlUgKEE1KSBSaWdodCBNRU5VIGtleQorICAgICAgICAvLyBWS19CUk9XU0VS
X0JBQ0sgKEE2KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgQmFjayBrZXkKKyAgICAgICAgLy8g
VktfQlJPV1NFUl9GT1JXQVJEIChBNykgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEZvcndhcmQg
a2V5CisgICAgICAgIC8vIFZLX0JST1dTRVJfUkVGUkVTSCAoQTgpIFdpbmRvd3MgMjAwMC9YUDog
QnJvd3NlciBSZWZyZXNoIGtleQorICAgICAgICAvLyBWS19CUk9XU0VSX1NUT1AgKEE5KSBXaW5k
b3dzIDIwMDAvWFA6IEJyb3dzZXIgU3RvcCBrZXkKKyAgICAgICAgLy8gVktfQlJPV1NFUl9TRUFS
Q0ggKEFBKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgU2VhcmNoIGtleQorICAgICAgICAvLyBW
S19CUk9XU0VSX0ZBVk9SSVRFUyAoQUIpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBGYXZvcml0
ZXMga2V5CisgICAgICAgIC8vIFZLX0JST1dTRVJfSE9NRSAoQUMpIFdpbmRvd3MgMjAwMC9YUDog
QnJvd3NlciBTdGFydCBhbmQgSG9tZSBrZXkKKyAgICAgICAgLy8gVktfVk9MVU1FX01VVEUgKEFE
KSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBNdXRlIGtleQorICAgICAgICAvLyBWS19WT0xVTUVf
RE9XTiAoQUUpIFdpbmRvd3MgMjAwMC9YUDogVm9sdW1lIERvd24ga2V5CisgICAgICAgIC8vIFZL
X1ZPTFVNRV9VUCAoQUYpIFdpbmRvd3MgMjAwMC9YUDogVm9sdW1lIFVwIGtleQorICAgICAgICAv
LyBWS19NRURJQV9ORVhUX1RSQUNLIChCMCkgV2luZG93cyAyMDAwL1hQOiBOZXh0IFRyYWNrIGtl
eQorICAgICAgICAvLyBWS19NRURJQV9QUkVWX1RSQUNLIChCMSkgV2luZG93cyAyMDAwL1hQOiBQ
cmV2aW91cyBUcmFjayBrZXkKKyAgICAgICAgLy8gVktfTUVESUFfU1RPUCAoQjIpIFdpbmRvd3Mg
MjAwMC9YUDogU3RvcCBNZWRpYSBrZXkKKyAgICAgICAgLy8gVktfTUVESUFfUExBWV9QQVVTRSAo
QjMpIFdpbmRvd3MgMjAwMC9YUDogUGxheS9QYXVzZSBNZWRpYSBrZXkKKyAgICAgICAgLy8gVktf
TEFVTkNIX01BSUwgKEI0KSBXaW5kb3dzIDIwMDAvWFA6IFN0YXJ0IE1haWwga2V5CisgICAgICAg
IC8vIFZLX0xBVU5DSF9NRURJQV9TRUxFQ1QgKEI1KSBXaW5kb3dzIDIwMDAvWFA6IFNlbGVjdCBN
ZWRpYSBrZXkKKyAgICAgICAgLy8gVktfTEFVTkNIX0FQUDEgKEI2KSBXaW5kb3dzIDIwMDAvWFA6
IFN0YXJ0IEFwcGxpY2F0aW9uIDEga2V5CisgICAgICAgIC8vIFZLX0xBVU5DSF9BUFAyIChCNykg
V2luZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAyIGtleQorCisgICAgICAgIC8vIFZL
X09FTV8xIChCQSkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFy
eSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJv
YXJkLCB0aGUgJzs6JyBrZXkKKyAgICAgICAgY2FzZSAnOyc6IGNhc2UgJzonOiByZXR1cm4gMHhC
QTsKKyAgICAgICAgLy8gVktfT0VNX1BMVVMgKEJCKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkg
Y291bnRyeS9yZWdpb24sIHRoZSAnKycga2V5CisgICAgICAgIGNhc2UgJz0nOiBjYXNlICcrJzog
cmV0dXJuIDB4QkI7CisgICAgICAgIC8vIFZLX09FTV9DT01NQSAoQkMpIFdpbmRvd3MgMjAwMC9Y
UDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcsJyBrZXkKKyAgICAgICAgY2FzZSAnLCc6
IGNhc2UgJzwnOiByZXR1cm4gMHhCQzsKKyAgICAgICAgLy8gVktfT0VNX01JTlVTIChCRCkgV2lu
ZG93cyAyMDAwL1hQOiBGb3IgYW55IGNvdW50cnkvcmVnaW9uLCB0aGUgJy0nIGtleQorICAgICAg
ICBjYXNlICctJzogY2FzZSAnXyc6IHJldHVybiAweEJEOworICAgICAgICAvLyBWS19PRU1fUEVS
SU9EIChCRSkgV2luZG93cyAyMDAwL1hQOiBGb3IgYW55IGNvdW50cnkvcmVnaW9uLCB0aGUgJy4n
IGtleQorICAgICAgICBjYXNlICcuJzogY2FzZSAnPic6IHJldHVybiAweEJFOworICAgICAgICAv
LyBWS19PRU1fMiAoQkYpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2Fu
IHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBr
ZXlib2FyZCwgdGhlICcvPycga2V5CisgICAgICAgIGNhc2UgJy8nOiBjYXNlICc/JzogcmV0dXJu
IDB4QkY7CisgICAgICAgIC8vIFZLX09FTV8zIChDMCkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBj
aGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3Ig
dGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ2B+JyBrZXkKKyAgICAgICAgY2FzZSAnYCc6
IGNhc2UgJ34nOiByZXR1cm4gMHhDMDsKKyAgICAgICAgLy8gVktfT0VNXzQgKERCKSBVc2VkIGZv
ciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5k
b3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnW3snIGtleQor
ICAgICAgICBjYXNlICdbJzogY2FzZSAneyc6IHJldHVybiAweERCOworICAgICAgICAvLyBWS19P
RU1fNSAoREMpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkg
Ynkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2Fy
ZCwgdGhlICdcfCcga2V5CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnfCc6IHJldHVybiAweERD
OworICAgICAgICAvLyBWS19PRU1fNiAoREQpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFj
dGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBV
UyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICddfScga2V5CisgICAgICAgIGNhc2UgJ10nOiBjYXNl
ICd9JzogcmV0dXJuIDB4REQ7CisgICAgICAgIC8vIFZLX09FTV83IChERSkgVXNlZCBmb3IgbWlz
Y2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAy
MDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ3NpbmdsZS1xdW90ZS9k
b3VibGUtcXVvdGUnIGtleQorICAgICAgICBjYXNlICdcJyc6IGNhc2UgJyInOiByZXR1cm4gMHhE
RTsKKworICAgICAgICAvLyBWS19PRU1fOCAoREYpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hh
cmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuCisgICAgICAgIC8vIFZLX09FTV8xMDIg
KEUyKSBXaW5kb3dzIDIwMDAvWFA6IEVpdGhlciB0aGUgYW5nbGUgYnJhY2tldCBrZXkgb3IgdGhl
IGJhY2tzbGFzaCBrZXkgb24gdGhlIFJUIDEwMi1rZXkga2V5Ym9hcmQKKyAgICAgICAgLy8gVktf
UFJPQ0VTU0tFWSAoRTUpIFdpbmRvd3MgOTUvOTgvTWUsIFdpbmRvd3MgTlQgNC4wLCBXaW5kb3dz
IDIwMDAvWFA6IElNRSBQUk9DRVNTIGtleQorICAgICAgICAvLyBWS19QQUNLRVQgKEU3KSBXaW5k
b3dzIDIwMDAvWFA6IFVzZWQgdG8gcGFzcyBVbmljb2RlIGNoYXJhY3RlcnMgYXMgaWYgdGhleSB3
ZXJlIGtleXN0cm9rZXMuIFRoZSBWS19QQUNLRVQga2V5IGlzIHRoZSBsb3cgd29yZCBvZiBhIDMy
LWJpdCBWaXJ0dWFsIEtleSB2YWx1ZSB1c2VkIGZvciBub24ta2V5Ym9hcmQgaW5wdXQgbWV0aG9k
cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBSZW1hcmsgaW4gS0VZQkRJTlBVVCxTZW5kSW5w
dXQsIFdNX0tFWURPV04sIGFuZCBXTV9LRVlVUAorICAgICAgICAvLyBWS19BVFROIChGNikgQXR0
biBrZXkKKyAgICAgICAgLy8gVktfQ1JTRUwgKEY3KSBDclNlbCBrZXkKKyAgICAgICAgLy8gVktf
RVhTRUwgKEY4KSBFeFNlbCBrZXkKKyAgICAgICAgLy8gVktfRVJFT0YgKEY5KSBFcmFzZSBFT0Yg
a2V5CisgICAgICAgIC8vIFZLX1BMQVkgKEZBKSBQbGF5IGtleQorICAgICAgICAvLyBWS19aT09N
IChGQikgWm9vbSBrZXkKKyAgICAgICAgLy8gVktfTk9OQU1FIChGQykgUmVzZXJ2ZWQgZm9yIGZ1
dHVyZSB1c2UKKyAgICAgICAgLy8gVktfUEExIChGRCkgUEExIGtleQorICAgICAgICAvLyBWS19P
RU1fQ0xFQVIgKEZFKSBDbGVhciBrZXkKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh
dGljIGlubGluZSBib29sIGlzS2V5VXBFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBpZiAo
W2V2ZW50IHR5cGVdICE9IE5TRmxhZ3NDaGFuZ2VkKQorICAgICAgICByZXR1cm4gW2V2ZW50IHR5
cGVdID09IE5TS2V5VXA7CisgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgZmFpbHMgaWYgdGhlIHVz
ZXIgcHJlc3NlcyBib3RoIFNoaWZ0IGtleXMgYXQgb25jZSwgZm9yIGV4YW1wbGU6CisgICAgLy8g
d2UgdHJlYXQgcmVsZWFzaW5nIG9uZSBvZiB0aGVtIGFzIGtleURvd24uCisgICAgc3dpdGNoIChb
ZXZlbnQga2V5Q29kZV0pIHsKKyAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29tbWFuZAorICAg
ICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jaworICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0FscGhhU2hpZnRLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKKyAgICAgICAgY2FzZSA2MDogLy8gUmln
aHQgU2hpZnQKKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNT
aGlmdEtleU1hc2spID09IDA7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA1ODogLy8gTGVm
dCBBbHQKKyAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0CisgICAgICAgICAgICByZXR1cm4g
KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykgPT0gMDsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKKyAgICAgICAgY2FzZSA2Mjog
Ly8gUmlnaHQgQ3RybAorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10g
JiBOU0NvbnRyb2xLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgNjM6
IC8vIEZ1bmN0aW9uCisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TRnVuY3Rpb25LZXlNYXNrKSA9PSAwOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3N0YXRpYyBpbmxpbmUgU3RyaW5nIHRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCit7Cisg
ICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuICIi
OworICAgIHJldHVybiBbZXZlbnQgY2hhcmFjdGVyc107Cit9CisgICAgCisgICAgCitzdGF0aWMg
aW5saW5lIFN0cmluZyB1bm1vZGlmaWVkVGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKK3sK
KyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQorICAgICAgICByZXR1cm4g
IiI7CisgICAgcmV0dXJuIFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOworfQor
CitQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpl
dmVudCkKKyAgICA6IG1fdHlwZShpc0tleVVwRXZlbnQoZXZlbnQpID8gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICAsIG1f
dGV4dCh0ZXh0RnJvbUV2ZW50KGV2ZW50KSkKKyAgICAsIG1fdW5tb2RpZmllZFRleHQodW5tb2Rp
ZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpKQorICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50
aWZpZXJGb3JLZXlFdmVudChldmVudCkpCisgICAgLCBtX2F1dG9SZXBlYXQoKFtldmVudCB0eXBl
XSAhPSBOU0ZsYWdzQ2hhbmdlZCkgJiYgW2V2ZW50IGlzQVJlcGVhdF0pCisgICAgLCBtX3dpbmRv
d3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KGV2ZW50KSkKKyAgICAs
IG1fbmF0aXZlVmlydHVhbEtleUNvZGUoW2V2ZW50IGtleUNvZGVdKQorICAgICwgbV9pc0tleXBh
ZChpc0tleXBhZEV2ZW50KGV2ZW50KSkKKyAgICAsIG1fc2hpZnRLZXkoW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCisgICAgLCBtX2N0cmxLZXkoW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKKyAgICAsIG1fYWx0S2V5KFtldmVudCBtb2RpZmll
ckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKKyAgICAsIG1fbWV0YUtleShbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQorICAgICwgbV9tYWNFdmVudChldmVudCkK
K3sKKyAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4gLS0gd2UgZG9uJ3Qgd2Fu
dCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3IgRW50ZXIuCisgICAgaWYg
KG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09ICdccicpIHsKKyAgICAgICAgbV90ZXh0ID0gIlxy
IjsKKyAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJcciI7CisgICAgfQorCisgICAgLy8gVGhl
IGFkanVzdG1lbnRzIGJlbG93IGFyZSBvbmx5IG5lZWRlZCBpbiBiYWNrd2FyZCBjb21wYXRpYmls
aXR5IG1vZGUsIGJ1dCB3ZSBjYW5ub3QgdGVsbCB3aGF0IG1vZGUgd2UgYXJlIGluIGZyb20gaGVy
ZS4KKworICAgIC8vIFR1cm4gMHg3RiBpbnRvIDgsIGJlY2F1c2UgYmFja3NwYWNlIG5lZWRzIHRv
IGFsd2F5cyBiZSA4LgorICAgIGlmIChtX3RleHQgPT0gIlx4N0YiKQorICAgICAgICBtX3RleHQg
PSAiXHg4IjsKKyAgICBpZiAobV91bm1vZGlmaWVkVGV4dCA9PSAiXHg3RiIpCisgICAgICAgIG1f
dW5tb2RpZmllZFRleHQgPSAiXHg4IjsKKyAgICAvLyBBbHdheXMgdXNlIDkgZm9yIHRhYiAtLSB3
ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBzaGlm
dC10YWIuCisgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09IDkpIHsKKyAgICAgICAg
bV90ZXh0ID0gIlx4OSI7CisgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg5IjsKKyAgICB9
Cit9CisKK3ZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZl
bnQoVHlwZSB0eXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCit7CisgICAgLy8g
Q2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwg
YXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCisgICAgQVNTRVJU
KG1fdHlwZSA9PSBLZXlEb3duKTsKKyAgICBBU1NFUlQodHlwZSA9PSBSYXdLZXlEb3duIHx8IHR5
cGUgPT0gQ2hhcik7CisgICAgbV90eXBlID0gdHlwZTsKKyAgICBpZiAoYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93
bikgeworICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKKyAgICAgICAgbV91bm1vZGlmaWVkVGV4
dCA9IFN0cmluZygpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fa2V5SWRlbnRpZmllciA9IFN0
cmluZygpOworICAgICAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IDA7CisgICAgICAgIGlm
IChtX3RleHQubGVuZ3RoKCkgPT0gMSAmJiAobV90ZXh0WzBVXSA+PSAweEY3MDAgJiYgbV90ZXh0
WzBVXSA8PSAweEY3RkYpKSB7CisgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gTlNFdmVudHMu
aCwgT3BlblN0ZXAgcmVzZXJ2ZXMgdGhlIHJhbmdlIDB4RjcwMC0weEY4RkYgZm9yIGZ1bmN0aW9u
IGtleXMuIEhvd2V2ZXIsIHNvbWUgYWN0dWFsIHByaXZhdGUgdXNlIGNoYXJhY3RlcnMKKyAgICAg
ICAgICAgIC8vIGhhcHBlbiB0byBiZSBpbiB0aGlzIHJhbmdlLCBlLmcuIHRoZSBBcHBsZSBsb2dv
IChPcHRpb24rU2hpZnQrSykuCisgICAgICAgICAgICAvLyAweEY3RkYgaXMgYW4gYXJiaXRyYXJ5
IGN1dC1vZmYuCisgICAgICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgIG1f
dW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRDYXBzTG9ja1N0YXRlKCkKK3sKKyAgICByZXR1
cm4gR2V0Q3VycmVudEtleU1vZGlmaWVycygpICYgYWxwaGFMb2NrOworfQorCit9CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMjgyICsyNCw2MjEgQEAKICAqLwog
CiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgor
I2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5oIgogCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0
IDxDYXJib24vQ2FyYm9uLmg+Ci0jaW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5oPgorI2lmIFBMQVRG
T1JNKENPQ09BKQogCi11c2luZyBuYW1lc3BhY2UgV1RGOworI2ltcG9ydCAiTG9nZ2luZy5oIgor
I2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAg
ICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKSAKLSAgICAgICAgc3dpdGNoIChb
ZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQK
LSAgICAgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAotICAgICAgICAgICAgICAgIHJl
dHVybiAiTWV0YSI7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIDU3OiAvLyBD
YXBzbG9jawotICAgICAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAotICAgICAgICAgICAgY2Fz
ZSA2MDogLy8gUmlnaHQgU2hpZnQKLSAgICAgICAgICAgICAgICByZXR1cm4gIlNoaWZ0IjsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0Ci0gICAgICAg
ICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKLSAgICAgICAgICAgICAgICByZXR1cm4gIkFsdCI7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKLSAg
ICAgICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAgICAgICAgICAgICAgICByZXR1cm4g
IkNvbnRyb2wiOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
IiI7Ci0gICAgICAgIH0KK2ludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KHVpbnQxNl90IGtl
eUNvZGUsIE5TU3RyaW5nKiBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMpIHsKKyAgICBzd2l0
Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgICAgIC8vIFZLX1RBQiAoMDkpIFRBQiBrZXkKKyAgICAg
ICAgY2FzZSA0ODogcmV0dXJuIDB4MDk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZL
X0FQUFMgKDVEKSBSaWdodCB3aW5kb3dzL21ldGEga2V5CisgICAgICAgIGNhc2UgNTQ6IC8vIFJp
Z2h0IENvbW1hbmQKKyAgICAgICAgICAgIHJldHVybiAweDVEOworICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyBWS19MV0lOICg1QikgTGVmdCB3aW5kb3dzL21ldGEga2V5CisgICAgICAgIGNh
c2UgNTU6IC8vIExlZnQgQ29tbWFuZAorICAgICAgICAgICAgcmV0dXJuIDB4NUI7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIFZLX0NBUElUQUwgKDE0KSBjYXBzIGxvY2tzIGtleQorICAg
ICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jaworICAgICAgICAgICAgcmV0dXJuIDB4MTQ7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX1NISUZUICgxMCkgZWl0aGVyIHNoaWZ0IGtleQor
ICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0CisgICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0
IFNoaWZ0CisgICAgICAgICAgICByZXR1cm4gMHgxMDsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gVktfTUVOVSAoMTIpIGVpdGhlciBhbHQga2V5CisgICAgICAgIGNhc2UgNTg6IC8vIExl
ZnQgQWx0CisgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAorICAgICAgICAgICAgcmV0dXJu
IDB4MTI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX0NPTlRST0wgKDExKSBlaXRo
ZXIgY3RybCBrZXkKKyAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCisgICAgICAgIGNhc2Ug
NjI6IC8vIFJpZ2h0IEN0cmwKKyAgICAgICAgICAgIHJldHVybiAweDExOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBWS19DTEVBUiAoMEMpIENMRUFSIGtleQorICAgICAgICBjYXNlIDcx
OiByZXR1cm4gMHgwQzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktfTlVNUEFEMCAo
NjApIE51bWVyaWMga2V5cGFkIDAga2V5CisgICAgICAgIGNhc2UgODI6IHJldHVybiAweDYwOwor
ICAgICAgICAgICAgLy8gVktfTlVNUEFEMSAoNjEpIE51bWVyaWMga2V5cGFkIDEga2V5CisgICAg
ICAgIGNhc2UgODM6IHJldHVybiAweDYxOworICAgICAgICAgICAgLy8gVktfTlVNUEFEMiAoNjIp
IE51bWVyaWMga2V5cGFkIDIga2V5CisgICAgICAgIGNhc2UgODQ6IHJldHVybiAweDYyOworICAg
ICAgICAgICAgLy8gVktfTlVNUEFEMyAoNjMpIE51bWVyaWMga2V5cGFkIDMga2V5CisgICAgICAg
IGNhc2UgODU6IHJldHVybiAweDYzOworICAgICAgICAgICAgLy8gVktfTlVNUEFENCAoNjQpIE51
bWVyaWMga2V5cGFkIDQga2V5CisgICAgICAgIGNhc2UgODY6IHJldHVybiAweDY0OworICAgICAg
ICAgICAgLy8gVktfTlVNUEFENSAoNjUpIE51bWVyaWMga2V5cGFkIDUga2V5CisgICAgICAgIGNh
c2UgODc6IHJldHVybiAweDY1OworICAgICAgICAgICAgLy8gVktfTlVNUEFENiAoNjYpIE51bWVy
aWMga2V5cGFkIDYga2V5CisgICAgICAgIGNhc2UgODg6IHJldHVybiAweDY2OworICAgICAgICAg
ICAgLy8gVktfTlVNUEFENyAoNjcpIE51bWVyaWMga2V5cGFkIDcga2V5CisgICAgICAgIGNhc2Ug
ODk6IHJldHVybiAweDY3OworICAgICAgICAgICAgLy8gVktfTlVNUEFEOCAoNjgpIE51bWVyaWMg
a2V5cGFkIDgga2V5CisgICAgICAgIGNhc2UgOTE6IHJldHVybiAweDY4OworICAgICAgICAgICAg
Ly8gVktfTlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5CisgICAgICAgIGNhc2UgOTI6
IHJldHVybiAweDY5OworICAgICAgICAgICAgLy8gVktfTVVMVElQTFkgKDZBKSBNdWx0aXBseSBr
ZXkKKyAgICAgICAgY2FzZSA2NzogcmV0dXJuIDB4NkE7CisgICAgICAgICAgICAvLyBWS19BREQg
KDZCKSBBZGQga2V5CisgICAgICAgIGNhc2UgNjk6IHJldHVybiAweDZCOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBWS19TVUJUUkFDVCAoNkQpIFN1YnRyYWN0IGtleQorICAgICAgICBj
YXNlIDc4OiByZXR1cm4gMHg2RDsKKyAgICAgICAgICAgIC8vIFZLX0RFQ0lNQUwgKDZFKSBEZWNp
bWFsIGtleQorICAgICAgICBjYXNlIDY1OiByZXR1cm4gMHg2RTsKKyAgICAgICAgICAgIC8vIFZL
X0RJVklERSAoNkYpIERpdmlkZSBrZXkKKyAgICAgICAgY2FzZSA3NTogcmV0dXJuIDB4NkY7Cisg
ICAgfQogICAgIAotICAgIE5TU3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyc107Ci0gICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkgewotICAgICAgICBMT0coRXZlbnRz
LCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZl
bnQ6ICV1IiwgW3MgbGVuZ3RoXSk7Ci0gICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKKyAg
ICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBsZW5ndGhdICE9IDEpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHN3aXRjaCAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyBjaGFyYWN0ZXJBdEluZGV4OjBdKSB7CisgICAgICAgICAgICAvLyBWS19MQlVUVE9OICgwMSkg
TGVmdCBtb3VzZSBidXR0b24KKyAgICAgICAgICAgIC8vIFZLX1JCVVRUT04gKDAyKSBSaWdodCBt
b3VzZSBidXR0b24KKyAgICAgICAgICAgIC8vIFZLX0NBTkNFTCAoMDMpIENvbnRyb2wtYnJlYWsg
cHJvY2Vzc2luZworICAgICAgICAgICAgLy8gVktfTUJVVFRPTiAoMDQpIE1pZGRsZSBtb3VzZSBi
dXR0b24gKHRocmVlLWJ1dHRvbiBtb3VzZSkKKyAgICAgICAgICAgIC8vIFZLX1hCVVRUT04xICgw
NSkKKyAgICAgICAgICAgIC8vIFZLX1hCVVRUT04yICgwNikKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gVktfQkFDSyAoMDgpIEJBQ0tTUEFDRSBrZXkKKyAgICAgICAgY2FzZSA4OiBjYXNl
IDB4N0Y6IHJldHVybiAweDA4OworICAgICAgICAgICAgLy8gVktfVEFCICgwOSkgVEFCIGtleQor
ICAgICAgICBjYXNlIDk6IHJldHVybiAweDA5OworICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBWS19DTEVBUiAoMEMpIENMRUFSIGtleQorICAgICAgICAgICAgLy8gaGFuZGxlZCBieSBrZXkg
Y29kZSBhYm92ZQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19SRVRVUk4gKDBEKQor
ICAgICAgICAgICAgLy8gPHJkYXI6Ly83NzA5NDA4PjogV2UgZ2V0IDEwICgnXG4nKSBmcm9tIFVJ
S2l0IHdoZW4gdXNpbmcgdGhlIHNvZnR3YXJlIGtleWJvYXJkCisgICAgICAgIGNhc2UgMHhEOiBj
YXNlIDM6IGNhc2UgMTA6IHJldHVybiAweDBEOworICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBWS19TSElGVCAoMTApIFNISUZUIGtleQorICAgICAgICAgICAgLy8gVktfQ09OVFJPTCAoMTEp
IENUUkwga2V5CisgICAgICAgICAgICAvLyBWS19NRU5VICgxMikgQUxUIGtleQorICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBWS19QQVVTRSAoMTMpIFBBVVNFIGtleQorICAgICAgICBjYXNl
IE5TUGF1c2VGdW5jdGlvbktleTogcmV0dXJuIDB4MTM7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFZLX0NBUElUQUwgKDE0KSBDQVBTIExPQ0sga2V5CisgICAgICAgICAgICAvLyBWS19L
QU5BICgxNSkgSW5wdXQgTWV0aG9kIEVkaXRvciAoSU1FKSBLYW5hIG1vZGUKKyAgICAgICAgICAg
IC8vIFZLX0hBTkdVRUwgKDE1KSBJTUUgSGFuZ3VlbCBtb2RlIChtYWludGFpbmVkIGZvciBjb21w
YXRpYmlsaXR5OyB1c2UgVktfSEFOR1VMKQorICAgICAgICAgICAgLy8gVktfSEFOR1VMICgxNSkg
SU1FIEhhbmd1bCBtb2RlCisgICAgICAgICAgICAvLyBWS19KVU5KQSAoMTcpIElNRSBKdW5qYSBt
b2RlCisgICAgICAgICAgICAvLyBWS19GSU5BTCAoMTgpIElNRSBmaW5hbCBtb2RlCisgICAgICAg
ICAgICAvLyBWS19IQU5KQSAoMTkpIElNRSBIYW5qYSBtb2RlCisgICAgICAgICAgICAvLyBWS19L
QU5KSSAoMTkpIElNRSBLYW5qaSBtb2RlCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZL
X0VTQ0FQRSAoMUIpIEVTQyBrZXkKKyAgICAgICAgY2FzZSAweDFCOiByZXR1cm4gMHgxQjsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktfQ09OVkVSVCAoMUMpIElNRSBjb252ZXJ0Cisg
ICAgICAgICAgICAvLyBWS19OT05DT05WRVJUICgxRCkgSU1FIG5vbmNvbnZlcnQKKyAgICAgICAg
ICAgIC8vIFZLX0FDQ0VQVCAoMUUpIElNRSBhY2NlcHQKKyAgICAgICAgICAgIC8vIFZLX01PREVD
SEFOR0UgKDFGKSBJTUUgbW9kZSBjaGFuZ2UgcmVxdWVzdAorICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBWS19TUEFDRSAoMjApIFNQQUNFQkFSCisgICAgICAgIGNhc2UgJyAnOiByZXR1cm4g
MHgyMDsKKyAgICAgICAgICAgIC8vIFZLX1BSSU9SICgyMSkgUEFHRSBVUCBrZXkKKyAgICAgICAg
Y2FzZSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyMTsKKyAgICAgICAgICAgIC8vIFZL
X05FWFQgKDIyKSBQQUdFIERPV04ga2V5CisgICAgICAgIGNhc2UgTlNQYWdlRG93bkZ1bmN0aW9u
S2V5OiByZXR1cm4gMHgyMjsKKyAgICAgICAgICAgIC8vIFZLX0VORCAoMjMpIEVORCBrZXkKKyAg
ICAgICAgY2FzZSBOU0VuZEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyMzsKKyAgICAgICAgICAgIC8v
IFZLX0hPTUUgKDI0KSBIT01FIGtleQorICAgICAgICBjYXNlIE5TSG9tZUZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHgyNDsKKyAgICAgICAgICAgIC8vIFZLX0xFRlQgKDI1KSBMRUZUIEFSUk9XIGtleQor
ICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6IHJldHVybiAweDI1OworICAgICAg
ICAgICAgLy8gVktfVVAgKDI2KSBVUCBBUlJPVyBrZXkKKyAgICAgICAgY2FzZSBOU1VwQXJyb3dG
dW5jdGlvbktleTogcmV0dXJuIDB4MjY7CisgICAgICAgICAgICAvLyBWS19SSUdIVCAoMjcpIFJJ
R0hUIEFSUk9XIGtleQorICAgICAgICBjYXNlIE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OiByZXR1
cm4gMHgyNzsKKyAgICAgICAgICAgIC8vIFZLX0RPV04gKDI4KSBET1dOIEFSUk9XIGtleQorICAg
ICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6IHJldHVybiAweDI4OworICAgICAgICAg
ICAgLy8gVktfU0VMRUNUICgyOSkgU0VMRUNUIGtleQorICAgICAgICBjYXNlIE5TU2VsZWN0RnVu
Y3Rpb25LZXk6IHJldHVybiAweDI5OworICAgICAgICAgICAgLy8gVktfUFJJTlQgKDJBKSBQUklO
VCBrZXkKKyAgICAgICAgY2FzZSBOU1ByaW50RnVuY3Rpb25LZXk6IHJldHVybiAweDJBOworICAg
ICAgICAgICAgLy8gVktfRVhFQ1VURSAoMkIpIEVYRUNVVEUga2V5CisgICAgICAgIGNhc2UgTlNF
eGVjdXRlRnVuY3Rpb25LZXk6IHJldHVybiAweDJCOworICAgICAgICAgICAgLy8gVktfU05BUFNI
T1QgKDJDKSBQUklOVCBTQ1JFRU4ga2V5CisgICAgICAgIGNhc2UgTlNQcmludFNjcmVlbkZ1bmN0
aW9uS2V5OiByZXR1cm4gMHgyQzsKKyAgICAgICAgICAgIC8vIFZLX0lOU0VSVCAoMkQpIElOUyBr
ZXkKKyAgICAgICAgY2FzZSBOU0luc2VydEZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TSGVs
cEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyRDsKKyAgICAgICAgICAgIC8vIFZLX0RFTEVURSAoMkUp
IERFTCBrZXkKKyAgICAgICAgY2FzZSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyRTsg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX0hFTFAgKDJGKSBIRUxQIGtleQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyAgKDMwKSAwIGtleQorICAgICAgICBjYXNlICcwJzogY2Fz
ZSAnKSc6IHJldHVybiAweDMwOworICAgICAgICAgICAgLy8gICgzMSkgMSBrZXkKKyAgICAgICAg
Y2FzZSAnMSc6IGNhc2UgJyEnOiByZXR1cm4gMHgzMTsKKyAgICAgICAgICAgIC8vICAoMzIpIDIg
a2V5CisgICAgICAgIGNhc2UgJzInOiBjYXNlICdAJzogcmV0dXJuIDB4MzI7CisgICAgICAgICAg
ICAvLyAgKDMzKSAzIGtleQorICAgICAgICBjYXNlICczJzogY2FzZSAnIyc6IHJldHVybiAweDMz
OworICAgICAgICAgICAgLy8gICgzNCkgNCBrZXkKKyAgICAgICAgY2FzZSAnNCc6IGNhc2UgJyQn
OiByZXR1cm4gMHgzNDsKKyAgICAgICAgICAgIC8vICAoMzUpIDUga2V5CisgICAgICAgIGNhc2Ug
JzUnOiBjYXNlICclJzogcmV0dXJuIDB4MzU7CisgICAgICAgICAgICAvLyAgKDM2KSA2IGtleQor
ICAgICAgICBjYXNlICc2JzogY2FzZSAnXic6IHJldHVybiAweDM2OworICAgICAgICAgICAgLy8g
ICgzNykgNyBrZXkKKyAgICAgICAgY2FzZSAnNyc6IGNhc2UgJyYnOiByZXR1cm4gMHgzNzsKKyAg
ICAgICAgICAgIC8vICAoMzgpIDgga2V5CisgICAgICAgIGNhc2UgJzgnOiBjYXNlICcqJzogcmV0
dXJuIDB4Mzg7CisgICAgICAgICAgICAvLyAgKDM5KSA5IGtleQorICAgICAgICBjYXNlICc5Jzog
Y2FzZSAnKCc6IHJldHVybiAweDM5OworICAgICAgICAgICAgLy8gICg0MSkgQSBrZXkKKyAgICAg
ICAgY2FzZSAnYSc6IGNhc2UgJ0EnOiByZXR1cm4gMHg0MTsKKyAgICAgICAgICAgIC8vICAoNDIp
IEIga2V5CisgICAgICAgIGNhc2UgJ2InOiBjYXNlICdCJzogcmV0dXJuIDB4NDI7CisgICAgICAg
ICAgICAvLyAgKDQzKSBDIGtleQorICAgICAgICBjYXNlICdjJzogY2FzZSAnQyc6IHJldHVybiAw
eDQzOworICAgICAgICAgICAgLy8gICg0NCkgRCBrZXkKKyAgICAgICAgY2FzZSAnZCc6IGNhc2Ug
J0QnOiByZXR1cm4gMHg0NDsKKyAgICAgICAgICAgIC8vICAoNDUpIEUga2V5CisgICAgICAgIGNh
c2UgJ2UnOiBjYXNlICdFJzogcmV0dXJuIDB4NDU7CisgICAgICAgICAgICAvLyAgKDQ2KSBGIGtl
eQorICAgICAgICBjYXNlICdmJzogY2FzZSAnRic6IHJldHVybiAweDQ2OworICAgICAgICAgICAg
Ly8gICg0NykgRyBrZXkKKyAgICAgICAgY2FzZSAnZyc6IGNhc2UgJ0cnOiByZXR1cm4gMHg0NzsK
KyAgICAgICAgICAgIC8vICAoNDgpIEgga2V5CisgICAgICAgIGNhc2UgJ2gnOiBjYXNlICdIJzog
cmV0dXJuIDB4NDg7CisgICAgICAgICAgICAvLyAgKDQ5KSBJIGtleQorICAgICAgICBjYXNlICdp
JzogY2FzZSAnSSc6IHJldHVybiAweDQ5OworICAgICAgICAgICAgLy8gICg0QSkgSiBrZXkKKyAg
ICAgICAgY2FzZSAnaic6IGNhc2UgJ0onOiByZXR1cm4gMHg0QTsKKyAgICAgICAgICAgIC8vICAo
NEIpIEsga2V5CisgICAgICAgIGNhc2UgJ2snOiBjYXNlICdLJzogcmV0dXJuIDB4NEI7CisgICAg
ICAgICAgICAvLyAgKDRDKSBMIGtleQorICAgICAgICBjYXNlICdsJzogY2FzZSAnTCc6IHJldHVy
biAweDRDOworICAgICAgICAgICAgLy8gICg0RCkgTSBrZXkKKyAgICAgICAgY2FzZSAnbSc6IGNh
c2UgJ00nOiByZXR1cm4gMHg0RDsKKyAgICAgICAgICAgIC8vICAoNEUpIE4ga2V5CisgICAgICAg
IGNhc2UgJ24nOiBjYXNlICdOJzogcmV0dXJuIDB4NEU7CisgICAgICAgICAgICAvLyAgKDRGKSBP
IGtleQorICAgICAgICBjYXNlICdvJzogY2FzZSAnTyc6IHJldHVybiAweDRGOworICAgICAgICAg
ICAgLy8gICg1MCkgUCBrZXkKKyAgICAgICAgY2FzZSAncCc6IGNhc2UgJ1AnOiByZXR1cm4gMHg1
MDsKKyAgICAgICAgICAgIC8vICAoNTEpIFEga2V5CisgICAgICAgIGNhc2UgJ3EnOiBjYXNlICdR
JzogcmV0dXJuIDB4NTE7CisgICAgICAgICAgICAvLyAgKDUyKSBSIGtleQorICAgICAgICBjYXNl
ICdyJzogY2FzZSAnUic6IHJldHVybiAweDUyOworICAgICAgICAgICAgLy8gICg1MykgUyBrZXkK
KyAgICAgICAgY2FzZSAncyc6IGNhc2UgJ1MnOiByZXR1cm4gMHg1MzsKKyAgICAgICAgICAgIC8v
ICAoNTQpIFQga2V5CisgICAgICAgIGNhc2UgJ3QnOiBjYXNlICdUJzogcmV0dXJuIDB4NTQ7Cisg
ICAgICAgICAgICAvLyAgKDU1KSBVIGtleQorICAgICAgICBjYXNlICd1JzogY2FzZSAnVSc6IHJl
dHVybiAweDU1OworICAgICAgICAgICAgLy8gICg1NikgViBrZXkKKyAgICAgICAgY2FzZSAndic6
IGNhc2UgJ1YnOiByZXR1cm4gMHg1NjsKKyAgICAgICAgICAgIC8vICAoNTcpIFcga2V5CisgICAg
ICAgIGNhc2UgJ3cnOiBjYXNlICdXJzogcmV0dXJuIDB4NTc7CisgICAgICAgICAgICAvLyAgKDU4
KSBYIGtleQorICAgICAgICBjYXNlICd4JzogY2FzZSAnWCc6IHJldHVybiAweDU4OworICAgICAg
ICAgICAgLy8gICg1OSkgWSBrZXkKKyAgICAgICAgY2FzZSAneSc6IGNhc2UgJ1knOiByZXR1cm4g
MHg1OTsKKyAgICAgICAgICAgIC8vICAoNUEpIFoga2V5CisgICAgICAgIGNhc2UgJ3onOiBjYXNl
ICdaJzogcmV0dXJuIDB4NUE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX0xXSU4g
KDVCKSBMZWZ0IFdpbmRvd3Mga2V5IChNaWNyb3NvZnQgTmF0dXJhbCBrZXlib2FyZCkKKyAgICAg
ICAgICAgIC8vIFZLX1JXSU4gKDVDKSBSaWdodCBXaW5kb3dzIGtleSAoTmF0dXJhbCBrZXlib2Fy
ZCkKKyAgICAgICAgICAgIC8vIFZLX0FQUFMgKDVEKSBBcHBsaWNhdGlvbnMga2V5IChOYXR1cmFs
IGtleWJvYXJkKQorICAgICAgICAgICAgLy8gVktfU0xFRVAgKDVGKSBDb21wdXRlciBTbGVlcCBr
ZXkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktfTlVNUEFEMCAoNjApIE51bWVyaWMg
a2V5cGFkIDAga2V5CisgICAgICAgICAgICAvLyBWS19OVU1QQUQxICg2MSkgTnVtZXJpYyBrZXlw
YWQgMSBrZXkKKyAgICAgICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmljIGtleXBhZCAy
IGtleQorICAgICAgICAgICAgLy8gVktfTlVNUEFEMyAoNjMpIE51bWVyaWMga2V5cGFkIDMga2V5
CisgICAgICAgICAgICAvLyBWS19OVU1QQUQ0ICg2NCkgTnVtZXJpYyBrZXlwYWQgNCBrZXkKKyAg
ICAgICAgICAgIC8vIFZLX05VTVBBRDUgKDY1KSBOdW1lcmljIGtleXBhZCA1IGtleQorICAgICAg
ICAgICAgLy8gVktfTlVNUEFENiAoNjYpIE51bWVyaWMga2V5cGFkIDYga2V5CisgICAgICAgICAg
ICAvLyBWS19OVU1QQUQ3ICg2NykgTnVtZXJpYyBrZXlwYWQgNyBrZXkKKyAgICAgICAgICAgIC8v
IFZLX05VTVBBRDggKDY4KSBOdW1lcmljIGtleXBhZCA4IGtleQorICAgICAgICAgICAgLy8gVktf
TlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5CisgICAgICAgICAgICAvLyBWS19NVUxU
SVBMWSAoNkEpIE11bHRpcGx5IGtleQorICAgICAgICAgICAgLy8gVktfQUREICg2QikgQWRkIGtl
eQorICAgICAgICAgICAgLy8gaGFuZGxlZCBieSBrZXkgY29kZSBhYm92ZQorICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBWS19TRVBBUkFUT1IgKDZDKSBTZXBhcmF0b3Iga2V5CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIFZLX1NVQlRSQUNUICg2RCkgU3VidHJhY3Qga2V5CisgICAg
ICAgICAgICAvLyBWS19ERUNJTUFMICg2RSkgRGVjaW1hbCBrZXkKKyAgICAgICAgICAgIC8vIFZL
X0RJVklERSAoNkYpIERpdmlkZSBrZXkKKyAgICAgICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNv
ZGUgYWJvdmUKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktfRjEgKDcwKSBGMSBrZXkK
KyAgICAgICAgY2FzZSBOU0YxRnVuY3Rpb25LZXk6IHJldHVybiAweDcwOworICAgICAgICAgICAg
Ly8gVktfRjIgKDcxKSBGMiBrZXkKKyAgICAgICAgY2FzZSBOU0YyRnVuY3Rpb25LZXk6IHJldHVy
biAweDcxOworICAgICAgICAgICAgLy8gVktfRjMgKDcyKSBGMyBrZXkKKyAgICAgICAgY2FzZSBO
U0YzRnVuY3Rpb25LZXk6IHJldHVybiAweDcyOworICAgICAgICAgICAgLy8gVktfRjQgKDczKSBG
NCBrZXkKKyAgICAgICAgY2FzZSBOU0Y0RnVuY3Rpb25LZXk6IHJldHVybiAweDczOworICAgICAg
ICAgICAgLy8gVktfRjUgKDc0KSBGNSBrZXkKKyAgICAgICAgY2FzZSBOU0Y1RnVuY3Rpb25LZXk6
IHJldHVybiAweDc0OworICAgICAgICAgICAgLy8gVktfRjYgKDc1KSBGNiBrZXkKKyAgICAgICAg
Y2FzZSBOU0Y2RnVuY3Rpb25LZXk6IHJldHVybiAweDc1OworICAgICAgICAgICAgLy8gVktfRjcg
KDc2KSBGNyBrZXkKKyAgICAgICAgY2FzZSBOU0Y3RnVuY3Rpb25LZXk6IHJldHVybiAweDc2Owor
ICAgICAgICAgICAgLy8gVktfRjggKDc3KSBGOCBrZXkKKyAgICAgICAgY2FzZSBOU0Y4RnVuY3Rp
b25LZXk6IHJldHVybiAweDc3OworICAgICAgICAgICAgLy8gVktfRjkgKDc4KSBGOSBrZXkKKyAg
ICAgICAgY2FzZSBOU0Y5RnVuY3Rpb25LZXk6IHJldHVybiAweDc4OworICAgICAgICAgICAgLy8g
VktfRjEwICg3OSkgRjEwIGtleQorICAgICAgICBjYXNlIE5TRjEwRnVuY3Rpb25LZXk6IHJldHVy
biAweDc5OworICAgICAgICAgICAgLy8gVktfRjExICg3QSkgRjExIGtleQorICAgICAgICBjYXNl
IE5TRjExRnVuY3Rpb25LZXk6IHJldHVybiAweDdBOworICAgICAgICAgICAgLy8gVktfRjEyICg3
QikgRjEyIGtleQorICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6IHJldHVybiAweDdCOwor
ICAgICAgICAgICAgLy8gVktfRjEzICg3QykgRjEzIGtleQorICAgICAgICBjYXNlIE5TRjEzRnVu
Y3Rpb25LZXk6IHJldHVybiAweDdDOworICAgICAgICAgICAgLy8gVktfRjE0ICg3RCkgRjE0IGtl
eQorICAgICAgICBjYXNlIE5TRjE0RnVuY3Rpb25LZXk6IHJldHVybiAweDdEOworICAgICAgICAg
ICAgLy8gVktfRjE1ICg3RSkgRjE1IGtleQorICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6
IHJldHVybiAweDdFOworICAgICAgICAgICAgLy8gVktfRjE2ICg3RikgRjE2IGtleQorICAgICAg
ICBjYXNlIE5TRjE2RnVuY3Rpb25LZXk6IHJldHVybiAweDdGOworICAgICAgICAgICAgLy8gVktf
RjE3ICg4MEgpIEYxNyBrZXkKKyAgICAgICAgY2FzZSBOU0YxN0Z1bmN0aW9uS2V5OiByZXR1cm4g
MHg4MDsKKyAgICAgICAgICAgIC8vIFZLX0YxOCAoODFIKSBGMTgga2V5CisgICAgICAgIGNhc2Ug
TlNGMThGdW5jdGlvbktleTogcmV0dXJuIDB4ODE7CisgICAgICAgICAgICAvLyBWS19GMTkgKDgy
SCkgRjE5IGtleQorICAgICAgICBjYXNlIE5TRjE5RnVuY3Rpb25LZXk6IHJldHVybiAweDgyOwor
ICAgICAgICAgICAgLy8gVktfRjIwICg4M0gpIEYyMCBrZXkKKyAgICAgICAgY2FzZSBOU0YyMEZ1
bmN0aW9uS2V5OiByZXR1cm4gMHg4MzsKKyAgICAgICAgICAgIC8vIFZLX0YyMSAoODRIKSBGMjEg
a2V5CisgICAgICAgIGNhc2UgTlNGMjFGdW5jdGlvbktleTogcmV0dXJuIDB4ODQ7CisgICAgICAg
ICAgICAvLyBWS19GMjIgKDg1SCkgRjIyIGtleQorICAgICAgICBjYXNlIE5TRjIyRnVuY3Rpb25L
ZXk6IHJldHVybiAweDg1OworICAgICAgICAgICAgLy8gVktfRjIzICg4NkgpIEYyMyBrZXkKKyAg
ICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg4NjsKKyAgICAgICAgICAgIC8v
IFZLX0YyNCAoODdIKSBGMjQga2V5CisgICAgICAgIGNhc2UgTlNGMjRGdW5jdGlvbktleTogcmV0
dXJuIDB4ODc7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX05VTUxPQ0sgKDkwKSBO
VU0gTE9DSyBrZXkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktfU0NST0xMICg5MSkg
U0NST0xMIExPQ0sga2V5CisgICAgICAgIGNhc2UgTlNTY3JvbGxMb2NrRnVuY3Rpb25LZXk6IHJl
dHVybiAweDkxOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19MU0hJRlQgKEEwKSBM
ZWZ0IFNISUZUIGtleQorICAgICAgICAgICAgLy8gVktfUlNISUZUIChBMSkgUmlnaHQgU0hJRlQg
a2V5CisgICAgICAgICAgICAvLyBWS19MQ09OVFJPTCAoQTIpIExlZnQgQ09OVFJPTCBrZXkKKyAg
ICAgICAgICAgIC8vIFZLX1JDT05UUk9MIChBMykgUmlnaHQgQ09OVFJPTCBrZXkKKyAgICAgICAg
ICAgIC8vIFZLX0xNRU5VIChBNCkgTGVmdCBNRU5VIGtleQorICAgICAgICAgICAgLy8gVktfUk1F
TlUgKEE1KSBSaWdodCBNRU5VIGtleQorICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9CQUNLIChB
NikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEJhY2sga2V5CisgICAgICAgICAgICAvLyBWS19C
Uk9XU0VSX0ZPUldBUkQgKEE3KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgRm9yd2FyZCBrZXkK
KyAgICAgICAgICAgIC8vIFZLX0JST1dTRVJfUkVGUkVTSCAoQTgpIFdpbmRvd3MgMjAwMC9YUDog
QnJvd3NlciBSZWZyZXNoIGtleQorICAgICAgICAgICAgLy8gVktfQlJPV1NFUl9TVE9QIChBOSkg
V2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0b3Aga2V5CisgICAgICAgICAgICAvLyBWS19CUk9X
U0VSX1NFQVJDSCAoQUEpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBTZWFyY2gga2V5CisgICAg
ICAgICAgICAvLyBWS19CUk9XU0VSX0ZBVk9SSVRFUyAoQUIpIFdpbmRvd3MgMjAwMC9YUDogQnJv
d3NlciBGYXZvcml0ZXMga2V5CisgICAgICAgICAgICAvLyBWS19CUk9XU0VSX0hPTUUgKEFDKSBX
aW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgU3RhcnQgYW5kIEhvbWUga2V5CisgICAgICAgICAgICAv
LyBWS19WT0xVTUVfTVVURSAoQUQpIFdpbmRvd3MgMjAwMC9YUDogVm9sdW1lIE11dGUga2V5Cisg
ICAgICAgICAgICAvLyBWS19WT0xVTUVfRE9XTiAoQUUpIFdpbmRvd3MgMjAwMC9YUDogVm9sdW1l
IERvd24ga2V5CisgICAgICAgICAgICAvLyBWS19WT0xVTUVfVVAgKEFGKSBXaW5kb3dzIDIwMDAv
WFA6IFZvbHVtZSBVcCBrZXkKKyAgICAgICAgICAgIC8vIFZLX01FRElBX05FWFRfVFJBQ0sgKEIw
KSBXaW5kb3dzIDIwMDAvWFA6IE5leHQgVHJhY2sga2V5CisgICAgICAgICAgICAvLyBWS19NRURJ
QV9QUkVWX1RSQUNLIChCMSkgV2luZG93cyAyMDAwL1hQOiBQcmV2aW91cyBUcmFjayBrZXkKKyAg
ICAgICAgICAgIC8vIFZLX01FRElBX1NUT1AgKEIyKSBXaW5kb3dzIDIwMDAvWFA6IFN0b3AgTWVk
aWEga2V5CisgICAgICAgICAgICAvLyBWS19NRURJQV9QTEFZX1BBVVNFIChCMykgV2luZG93cyAy
MDAwL1hQOiBQbGF5L1BhdXNlIE1lZGlhIGtleQorICAgICAgICAgICAgLy8gVktfTEFVTkNIX01B
SUwgKEI0KSBXaW5kb3dzIDIwMDAvWFA6IFN0YXJ0IE1haWwga2V5CisgICAgICAgICAgICAvLyBW
S19MQVVOQ0hfTUVESUFfU0VMRUNUIChCNSkgV2luZG93cyAyMDAwL1hQOiBTZWxlY3QgTWVkaWEg
a2V5CisgICAgICAgICAgICAvLyBWS19MQVVOQ0hfQVBQMSAoQjYpIFdpbmRvd3MgMjAwMC9YUDog
U3RhcnQgQXBwbGljYXRpb24gMSBrZXkKKyAgICAgICAgICAgIC8vIFZLX0xBVU5DSF9BUFAyIChC
NykgV2luZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAyIGtleQorICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBWS19PRU1fMSAoQkEpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hh
cmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRo
ZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICc7Oicga2V5CisgICAgICAgIGNhc2UgJzsnOiBj
YXNlICc6JzogcmV0dXJuIDB4QkE7CisgICAgICAgICAgICAvLyBWS19PRU1fUExVUyAoQkIpIFdp
bmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcrJyBrZXkKKyAgICAg
ICAgY2FzZSAnPSc6IGNhc2UgJysnOiByZXR1cm4gMHhCQjsKKyAgICAgICAgICAgIC8vIFZLX09F
TV9DT01NQSAoQkMpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhl
ICcsJyBrZXkKKyAgICAgICAgY2FzZSAnLCc6IGNhc2UgJzwnOiByZXR1cm4gMHhCQzsKKyAgICAg
ICAgICAgIC8vIFZLX09FTV9NSU5VUyAoQkQpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3Vu
dHJ5L3JlZ2lvbiwgdGhlICctJyBrZXkKKyAgICAgICAgY2FzZSAnLSc6IGNhc2UgJ18nOiByZXR1
cm4gMHhCRDsKKyAgICAgICAgICAgIC8vIFZLX09FTV9QRVJJT0QgKEJFKSBXaW5kb3dzIDIwMDAv
WFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLicga2V5CisgICAgICAgIGNhc2UgJy4n
OiBjYXNlICc+JzogcmV0dXJuIDB4QkU7CisgICAgICAgICAgICAvLyBWS19PRU1fMiAoQkYpIFVz
ZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQu
IFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICcvPycg
a2V5CisgICAgICAgIGNhc2UgJy8nOiBjYXNlICc/JzogcmV0dXJuIDB4QkY7CisgICAgICAgICAg
ICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQg
Y2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFy
ZCBrZXlib2FyZCwgdGhlICdgficga2V5CisgICAgICAgIGNhc2UgJ2AnOiBjYXNlICd+JzogcmV0
dXJuIDB4QzA7CisgICAgICAgICAgICAvLyBWS19PRU1fNCAoREIpIFVzZWQgZm9yIG1pc2NlbGxh
bmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9Y
UDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdbeycga2V5CisgICAgICAgIGNh
c2UgJ1snOiBjYXNlICd7JzogcmV0dXJuIDB4REI7CisgICAgICAgICAgICAvLyBWS19PRU1fNSAo
REMpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5
Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhl
ICdcfCcga2V5CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnfCc6IHJldHVybiAweERDOworICAg
ICAgICAgICAgLy8gVktfT0VNXzYgKEREKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3Rl
cnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMg
c3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXX0nIGtleQorICAgICAgICBjYXNlICddJzogY2FzZSAn
fSc6IHJldHVybiAweEREOworICAgICAgICAgICAgLy8gVktfT0VNXzcgKERFKSBVc2VkIGZvciBt
aXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dz
IDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnc2luZ2xlLXF1b3Rl
L2RvdWJsZS1xdW90ZScga2V5CisgICAgICAgIGNhc2UgJ1wnJzogY2FzZSAnIic6IHJldHVybiAw
eERFOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19PRU1fOCAoREYpIFVzZWQgZm9y
IG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuCisgICAg
ICAgICAgICAvLyBWS19PRU1fMTAyIChFMikgV2luZG93cyAyMDAwL1hQOiBFaXRoZXIgdGhlIGFu
Z2xlIGJyYWNrZXQga2V5IG9yIHRoZSBiYWNrc2xhc2gga2V5IG9uIHRoZSBSVCAxMDIta2V5IGtl
eWJvYXJkCisgICAgICAgICAgICAvLyBWS19QUk9DRVNTS0VZIChFNSkgV2luZG93cyA5NS85OC9N
ZSwgV2luZG93cyBOVCA0LjAsIFdpbmRvd3MgMjAwMC9YUDogSU1FIFBST0NFU1Mga2V5CisgICAg
ICAgICAgICAvLyBWS19QQUNLRVQgKEU3KSBXaW5kb3dzIDIwMDAvWFA6IFVzZWQgdG8gcGFzcyBV
bmljb2RlIGNoYXJhY3RlcnMgYXMgaWYgdGhleSB3ZXJlIGtleXN0cm9rZXMuIFRoZSBWS19QQUNL
RVQga2V5IGlzIHRoZSBsb3cgd29yZCBvZiBhIDMyLWJpdCBWaXJ0dWFsIEtleSB2YWx1ZSB1c2Vk
IGZvciBub24ta2V5Ym9hcmQgaW5wdXQgbWV0aG9kcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNl
ZSBSZW1hcmsgaW4gS0VZQkRJTlBVVCxTZW5kSW5wdXQsIFdNX0tFWURPV04sIGFuZCBXTV9LRVlV
UAorICAgICAgICAgICAgLy8gVktfQVRUTiAoRjYpIEF0dG4ga2V5CisgICAgICAgICAgICAvLyBW
S19DUlNFTCAoRjcpIENyU2VsIGtleQorICAgICAgICAgICAgLy8gVktfRVhTRUwgKEY4KSBFeFNl
bCBrZXkKKyAgICAgICAgICAgIC8vIFZLX0VSRU9GIChGOSkgRXJhc2UgRU9GIGtleQorICAgICAg
ICAgICAgLy8gVktfUExBWSAoRkEpIFBsYXkga2V5CisgICAgICAgICAgICAvLyBWS19aT09NIChG
QikgWm9vbSBrZXkKKyAgICAgICAgICAgIC8vIFZLX05PTkFNRSAoRkMpIFJlc2VydmVkIGZvciBm
dXR1cmUgdXNlCisgICAgICAgICAgICAvLyBWS19QQTEgKEZEKSBQQTEga2V5CisgICAgICAgICAg
ICAvLyBWS19PRU1fQ0xFQVIgKEZFKSBDbGVhciBrZXkKICAgICB9Ci0gICAgdW5pY2hhciBjID0g
W3MgY2hhcmFjdGVyQXRJbmRleDowXTsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgLy8gRWFj
aCBpZGVudGlmaWVyIGxpc3RlZCBpbiB0aGUgRE9NIHNwZWMgaXMgbGlzdGVkIGhlcmUuCi0gICAg
ICAgIC8vIE1hbnkgYXJlIHNpbXBseSBjb21tZW50ZWQgb3V0IHNpbmNlIHRoZXkgZG8gbm90IGFw
cGVhciBvbiBzdGFuZGFyZCBNYWNpbnRvc2gga2V5Ym9hcmRzCi0gICAgICAgIC8vIG9yIGFyZSBv
biBhIGtleSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLgorICAg
IAorICAgIHJldHVybiAwOworfQogCi0gICAgICAgIC8vICJBY2NlcHQiCi0gICAgICAgIC8vICJB
bGxDYW5kaWRhdGVzIgorU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudENoYXJhY3RlcnMo
TlNTdHJpbmcqIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycykgeworICAgIGlmIChbY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzIGxlbmd0aF0gIT0gMSkgeworICAgICAgICBMT0coRXZlbnRz
LCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZl
bnQ6ICV1IiwgW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBsZW5ndGhdKTsKKyAgICAgICAg
cmV0dXJuICJVbmlkZW50aWZpZWQiOworICAgIH0KIAotICAgICAgICAvLyAiQWx0IgorICAgIHVu
aWNoYXIgYyA9IFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgY2hhcmFjdGVyQXRJbmRleDow
XTsKKyAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgIC8vIEVhY2ggaWRlbnRpZmllciBsaXN0
ZWQgaW4gdGhlIERPTSBzcGVjIGlzIGxpc3RlZCBoZXJlLgorICAgICAgICAgICAgLy8gTWFueSBh
cmUgc2ltcGx5IGNvbW1lbnRlZCBvdXQgc2luY2UgdGhleSBkbyBub3QgYXBwZWFyIG9uIHN0YW5k
YXJkIE1hY2ludG9zaCBrZXlib2FyZHMKKyAgICAgICAgICAgIC8vIG9yIGFyZSBvbiBhIGtleSB0
aGF0IGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLgorICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyAiQWNjZXB0IgorICAgICAgICAgICAgLy8gIkFsbENhbmRpZGF0ZXMi
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vICJBbHQiCiAgICAgICAgIGNhc2UgTlNNZW51
RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkFsdCI7Ci0KLSAgICAgICAgLy8gIkFw
cHMiCi0gICAgICAgIC8vICJCcm93c2VyQmFjayIKLSAgICAgICAgLy8gIkJyb3dzZXJGb3J3YXJk
IgotICAgICAgICAvLyAiQnJvd3NlckhvbWUiCi0gICAgICAgIC8vICJCcm93c2VyUmVmcmVzaCIK
LSAgICAgICAgLy8gIkJyb3dzZXJTZWFyY2giCi0gICAgICAgIC8vICJCcm93c2VyU3RvcCIKLSAg
ICAgICAgLy8gIkNhcHNMb2NrIgotCi0gICAgICAgIC8vICJDbGVhciIKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gIkFwcHMiCisgICAgICAgICAgICAvLyAiQnJvd3NlckJhY2siCisgICAg
ICAgICAgICAvLyAiQnJvd3NlckZvcndhcmQiCisgICAgICAgICAgICAvLyAiQnJvd3NlckhvbWUi
CisgICAgICAgICAgICAvLyAiQnJvd3NlclJlZnJlc2giCisgICAgICAgICAgICAvLyAiQnJvd3Nl
clNlYXJjaCIKKyAgICAgICAgICAgIC8vICJCcm93c2VyU3RvcCIKKyAgICAgICAgICAgIC8vICJD
YXBzTG9jayIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIkNsZWFyIgogICAgICAgICBj
YXNlIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsK
LQotICAgICAgICAvLyAiQ29kZUlucHV0IgotICAgICAgICAvLyAiQ29tcG9zZSIKLSAgICAgICAg
Ly8gIkNvbnRyb2wiCi0gICAgICAgIC8vICJDcnNlbCIKLSAgICAgICAgLy8gIkNvbnZlcnQiCi0g
ICAgICAgIC8vICJDb3B5IgotICAgICAgICAvLyAiQ3V0IgotCi0gICAgICAgIC8vICJEb3duIgor
ICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiQ29kZUlucHV0IgorICAgICAgICAgICAgLy8g
IkNvbXBvc2UiCisgICAgICAgICAgICAvLyAiQ29udHJvbCIKKyAgICAgICAgICAgIC8vICJDcnNl
bCIKKyAgICAgICAgICAgIC8vICJDb252ZXJ0IgorICAgICAgICAgICAgLy8gIkNvcHkiCisgICAg
ICAgICAgICAvLyAiQ3V0IgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiRG93biIKICAg
ICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJE
b3duIjsKLSAgICAgICAgLy8gIkVuZCIKKyAgICAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNh
c2UgTlNFbmRGdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiRW5kIjsKLSAgICAgICAg
Ly8gIkVudGVyIgorICAgICAgICAgICAgLy8gIkVudGVyIgogICAgICAgICBjYXNlIDB4MzogY2Fz
ZSAweEE6IGNhc2UgMHhEOiAvLyBNYWNpbnRvc2ggY2FsbHMgdGhlIG9uZSBvbiB0aGUgbWFpbiBr
ZXlib2FyZCBSZXR1cm4sIGJ1dCBXaW5kb3dzIGNhbGxzIGl0IEVudGVyLCBzbyB3ZSdsbCBkbyB0
aGUgc2FtZSBmb3IgdGhlIERPTQogICAgICAgICAgICAgcmV0dXJuICJFbnRlciI7Ci0KLSAgICAg
ICAgLy8gIkVyYXNlRW9mIgotCi0gICAgICAgIC8vICJFeGVjdXRlIgorICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyAiRXJhc2VFb2YiCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vICJF
eGVjdXRlIgogICAgICAgICBjYXNlIE5TRXhlY3V0ZUZ1bmN0aW9uS2V5OgogICAgICAgICAgICAg
cmV0dXJuICJFeGVjdXRlIjsKLQotICAgICAgICAvLyAiRXhzZWwiCi0KLSAgICAgICAgLy8gIkYx
IgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiRXhzZWwiCisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vICJGMSIKICAgICAgICAgY2FzZSBOU0YxRnVuY3Rpb25LZXk6CiAgICAgICAg
ICAgICByZXR1cm4gIkYxIjsKLSAgICAgICAgLy8gIkYyIgorICAgICAgICAgICAgLy8gIkYyIgog
ICAgICAgICBjYXNlIE5TRjJGdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiRjIiOwot
ICAgICAgICAvLyAiRjMiCisgICAgICAgICAgICAvLyAiRjMiCiAgICAgICAgIGNhc2UgTlNGM0Z1
bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJGMyI7Ci0gICAgICAgIC8vICJGNCIKKyAg
ICAgICAgICAgIC8vICJGNCIKICAgICAgICAgY2FzZSBOU0Y0RnVuY3Rpb25LZXk6CiAgICAgICAg
ICAgICByZXR1cm4gIkY0IjsKLSAgICAgICAgLy8gIkY1IgorICAgICAgICAgICAgLy8gIkY1Igog
ICAgICAgICBjYXNlIE5TRjVGdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiRjUiOwot
ICAgICAgICAvLyAiRjYiCisgICAgICAgICAgICAvLyAiRjYiCiAgICAgICAgIGNhc2UgTlNGNkZ1
bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJGNiI7Ci0gICAgICAgIC8vICJGNyIKKyAg
ICAgICAgICAgIC8vICJGNyIKICAgICAgICAgY2FzZSBOU0Y3RnVuY3Rpb25LZXk6CiAgICAgICAg
ICAgICByZXR1cm4gIkY3IjsKLSAgICAgICAgLy8gIkY4IgorICAgICAgICAgICAgLy8gIkY4Igog
ICAgICAgICBjYXNlIE5TRjhGdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiRjgiOwot
ICAgICAgICAvLyAiRjkiCisgICAgICAgICAgICAvLyAiRjkiCiAgICAgICAgIGNhc2UgTlNGOUZ1
bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJGOSI7Ci0gICAgICAgIC8vICJGMTAiCisg
ICAgICAgICAgICAvLyAiRjEwIgogICAgICAgICBjYXNlIE5TRjEwRnVuY3Rpb25LZXk6CiAgICAg
ICAgICAgICByZXR1cm4gIkYxMCI7Ci0gICAgICAgIC8vICJGMTEiCisgICAgICAgICAgICAvLyAi
RjExIgogICAgICAgICBjYXNlIE5TRjExRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4g
IkYxMSI7Ci0gICAgICAgIC8vICJGMTIiCisgICAgICAgICAgICAvLyAiRjEyIgogICAgICAgICBj
YXNlIE5TRjEyRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxMiI7Ci0gICAgICAg
IC8vICJGMTMiCisgICAgICAgICAgICAvLyAiRjEzIgogICAgICAgICBjYXNlIE5TRjEzRnVuY3Rp
b25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxMyI7Ci0gICAgICAgIC8vICJGMTQiCisgICAg
ICAgICAgICAvLyAiRjE0IgogICAgICAgICBjYXNlIE5TRjE0RnVuY3Rpb25LZXk6CiAgICAgICAg
ICAgICByZXR1cm4gIkYxNCI7Ci0gICAgICAgIC8vICJGMTUiCisgICAgICAgICAgICAvLyAiRjE1
IgogICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYx
NSI7Ci0gICAgICAgIC8vICJGMTYiCisgICAgICAgICAgICAvLyAiRjE2IgogICAgICAgICBjYXNl
IE5TRjE2RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxNiI7Ci0gICAgICAgIC8v
ICJGMTciCisgICAgICAgICAgICAvLyAiRjE3IgogICAgICAgICBjYXNlIE5TRjE3RnVuY3Rpb25L
ZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxNyI7Ci0gICAgICAgIC8vICJGMTgiCisgICAgICAg
ICAgICAvLyAiRjE4IgogICAgICAgICBjYXNlIE5TRjE4RnVuY3Rpb25LZXk6CiAgICAgICAgICAg
ICByZXR1cm4gIkYxOCI7Ci0gICAgICAgIC8vICJGMTkiCisgICAgICAgICAgICAvLyAiRjE5Igog
ICAgICAgICBjYXNlIE5TRjE5RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxOSI7
Ci0gICAgICAgIC8vICJGMjAiCisgICAgICAgICAgICAvLyAiRjIwIgogICAgICAgICBjYXNlIE5T
RjIwRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYyMCI7Ci0gICAgICAgIC8vICJG
MjEiCisgICAgICAgICAgICAvLyAiRjIxIgogICAgICAgICBjYXNlIE5TRjIxRnVuY3Rpb25LZXk6
CiAgICAgICAgICAgICByZXR1cm4gIkYyMSI7Ci0gICAgICAgIC8vICJGMjIiCisgICAgICAgICAg
ICAvLyAiRjIyIgogICAgICAgICBjYXNlIE5TRjIyRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICBy
ZXR1cm4gIkYyMiI7Ci0gICAgICAgIC8vICJGMjMiCisgICAgICAgICAgICAvLyAiRjIzIgogICAg
ICAgICBjYXNlIE5TRjIzRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYyMyI7Ci0g
ICAgICAgIC8vICJGMjQiCisgICAgICAgICAgICAvLyAiRjI0IgogICAgICAgICBjYXNlIE5TRjI0
RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYyNCI7Ci0KLSAgICAgICAgLy8gIkZp
bmFsTW9kZSIKLQotICAgICAgICAvLyAiRmluZCIKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gIkZpbmFsTW9kZSIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIkZpbmQiCiAgICAg
ICAgIGNhc2UgTlNGaW5kRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkZpbmQiOwot
Ci0gICAgICAgIC8vICJGdWxsV2lkdGgiCi0gICAgICAgIC8vICJIYWxmV2lkdGgiCi0gICAgICAg
IC8vICJIYW5ndWxNb2RlIgotICAgICAgICAvLyAiSGFuamFNb2RlIgotCi0gICAgICAgIC8vICJI
ZWxwIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiRnVsbFdpZHRoIgorICAgICAgICAg
ICAgLy8gIkhhbGZXaWR0aCIKKyAgICAgICAgICAgIC8vICJIYW5ndWxNb2RlIgorICAgICAgICAg
ICAgLy8gIkhhbmphTW9kZSIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIkhlbHAiCiAg
ICAgICAgIGNhc2UgTlNIZWxwRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkhlbHAi
OwotCi0gICAgICAgIC8vICJIaXJhZ2FuYSIKLQotICAgICAgICAvLyAiSG9tZSIKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gIkhpcmFnYW5hIgorICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyAiSG9tZSIKICAgICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleToKICAgICAgICAgICAg
IHJldHVybiAiSG9tZSI7Ci0gICAgICAgIC8vICJJbnNlcnQiCisgICAgICAgICAgICAvLyAiSW5z
ZXJ0IgogICAgICAgICBjYXNlIE5TSW5zZXJ0RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1
cm4gIkluc2VydCI7Ci0KLSAgICAgICAgLy8gIkphcGFuZXNlSGlyYWdhbmEiCi0gICAgICAgIC8v
ICJKYXBhbmVzZUthdGFrYW5hIgotICAgICAgICAvLyAiSmFwYW5lc2VSb21hamkiCi0gICAgICAg
IC8vICJKdW5qYU1vZGUiCi0gICAgICAgIC8vICJLYW5hTW9kZSIKLSAgICAgICAgLy8gIkthbmpp
TW9kZSIKLSAgICAgICAgLy8gIkthdGFrYW5hIgotICAgICAgICAvLyAiTGF1bmNoQXBwbGljYXRp
b24xIgotICAgICAgICAvLyAiTGF1bmNoQXBwbGljYXRpb24yIgotICAgICAgICAvLyAiTGF1bmNo
TWFpbCIKLQotICAgICAgICAvLyAiTGVmdCIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
IkphcGFuZXNlSGlyYWdhbmEiCisgICAgICAgICAgICAvLyAiSmFwYW5lc2VLYXRha2FuYSIKKyAg
ICAgICAgICAgIC8vICJKYXBhbmVzZVJvbWFqaSIKKyAgICAgICAgICAgIC8vICJKdW5qYU1vZGUi
CisgICAgICAgICAgICAvLyAiS2FuYU1vZGUiCisgICAgICAgICAgICAvLyAiS2FuamlNb2RlIgor
ICAgICAgICAgICAgLy8gIkthdGFrYW5hIgorICAgICAgICAgICAgLy8gIkxhdW5jaEFwcGxpY2F0
aW9uMSIKKyAgICAgICAgICAgIC8vICJMYXVuY2hBcHBsaWNhdGlvbjIiCisgICAgICAgICAgICAv
LyAiTGF1bmNoTWFpbCIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIkxlZnQiCiAgICAg
ICAgIGNhc2UgTlNMZWZ0QXJyb3dGdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiTGVm
dCI7Ci0KLSAgICAgICAgLy8gIk1ldGEiCi0gICAgICAgIC8vICJNZWRpYU5leHRUcmFjayIKLSAg
ICAgICAgLy8gIk1lZGlhUGxheVBhdXNlIgotICAgICAgICAvLyAiTWVkaWFQcmV2aW91c1RyYWNr
IgotICAgICAgICAvLyAiTWVkaWFTdG9wIgotCi0gICAgICAgIC8vICJNb2RlQ2hhbmdlIgorICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyAiTWV0YSIKKyAgICAgICAgICAgIC8vICJNZWRpYU5l
eHRUcmFjayIKKyAgICAgICAgICAgIC8vICJNZWRpYVBsYXlQYXVzZSIKKyAgICAgICAgICAgIC8v
ICJNZWRpYVByZXZpb3VzVHJhY2siCisgICAgICAgICAgICAvLyAiTWVkaWFTdG9wIgorICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyAiTW9kZUNoYW5nZSIKICAgICAgICAgY2FzZSBOU01vZGVT
d2l0Y2hGdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiTW9kZUNoYW5nZSI7Ci0KLSAg
ICAgICAgLy8gIk5vbmNvbnZlcnQiCi0gICAgICAgIC8vICJOdW1Mb2NrIgotCi0gICAgICAgIC8v
ICJQYWdlRG93biIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIk5vbmNvbnZlcnQiCisg
ICAgICAgICAgICAvLyAiTnVtTG9jayIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIlBh
Z2VEb3duIgogICAgICAgICBjYXNlIE5TUGFnZURvd25GdW5jdGlvbktleToKICAgICAgICAgICAg
IHJldHVybiAiUGFnZURvd24iOwotICAgICAgICAvLyAiUGFnZVVwIgorICAgICAgICAgICAgLy8g
IlBhZ2VVcCIKICAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OgogICAgICAgICAgICAg
cmV0dXJuICJQYWdlVXAiOwotCi0gICAgICAgIC8vICJQYXN0ZSIKLQotICAgICAgICAvLyAiUGF1
c2UiCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vICJQYXN0ZSIKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gIlBhdXNlIgogICAgICAgICBjYXNlIE5TUGF1c2VGdW5jdGlvbktleToK
ICAgICAgICAgICAgIHJldHVybiAiUGF1c2UiOwotCi0gICAgICAgIC8vICJQbGF5IgotICAgICAg
ICAvLyAiUHJldmlvdXNDYW5kaWRhdGUiCi0KLSAgICAgICAgLy8gIlByaW50U2NyZWVuIgorICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyAiUGxheSIKKyAgICAgICAgICAgIC8vICJQcmV2aW91
c0NhbmRpZGF0ZSIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIlByaW50U2NyZWVuIgog
ICAgICAgICBjYXNlIE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVy
biAiUHJpbnRTY3JlZW4iOwotCi0gICAgICAgIC8vICJQcm9jZXNzIgotICAgICAgICAvLyAiUHJv
cHMiCi0KLSAgICAgICAgLy8gIlJpZ2h0IgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAi
UHJvY2VzcyIKKyAgICAgICAgICAgIC8vICJQcm9wcyIKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gIlJpZ2h0IgogICAgICAgICBjYXNlIE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OgogICAg
ICAgICAgICAgcmV0dXJuICJSaWdodCI7Ci0KLSAgICAgICAgLy8gIlJvbWFuQ2hhcmFjdGVycyIK
LQotICAgICAgICAvLyAiU2Nyb2xsIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiUm9t
YW5DaGFyYWN0ZXJzIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiU2Nyb2xsIgogICAg
ICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJT
Y3JvbGwiOwotICAgICAgICAvLyAiU2VsZWN0IgorICAgICAgICAgICAgLy8gIlNlbGVjdCIKICAg
ICAgICAgY2FzZSBOU1NlbGVjdEZ1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJTZWxl
Y3QiOwotCi0gICAgICAgIC8vICJTZWxlY3RNZWRpYSIKLSAgICAgICAgLy8gIlNoaWZ0IgotCi0g
ICAgICAgIC8vICJTdG9wIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiU2VsZWN0TWVk
aWEiCisgICAgICAgICAgICAvLyAiU2hpZnQiCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
ICJTdG9wIgogICAgICAgICBjYXNlIE5TU3RvcEZ1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0
dXJuICJTdG9wIjsKLSAgICAgICAgLy8gIlVwIgorICAgICAgICAgICAgLy8gIlVwIgogICAgICAg
ICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJVcCI7Ci0g
ICAgICAgIC8vICJVbmRvIgorICAgICAgICAgICAgLy8gIlVuZG8iCiAgICAgICAgIGNhc2UgTlNV
bmRvRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIlVuZG8iOwotCi0gICAgICAgIC8v
ICJWb2x1bWVEb3duIgotICAgICAgICAvLyAiVm9sdW1lTXV0ZSIKLSAgICAgICAgLy8gIlZvbHVt
ZVVwIgotICAgICAgICAvLyAiV2luIgotICAgICAgICAvLyAiWm9vbSIKLQotICAgICAgICAvLyBN
b3JlIGZ1bmN0aW9uIGtleXMsIG5vdCBpbiB0aGUga2V5IGlkZW50aWZpZXIgc3BlY2lmaWNhdGlv
bi4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIlZvbHVtZURvd24iCisgICAgICAgICAg
ICAvLyAiVm9sdW1lTXV0ZSIKKyAgICAgICAgICAgIC8vICJWb2x1bWVVcCIKKyAgICAgICAgICAg
IC8vICJXaW4iCisgICAgICAgICAgICAvLyAiWm9vbSIKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gTW9yZSBmdW5jdGlvbiBrZXlzLCBub3QgaW4gdGhlIGtleSBpZGVudGlmaWVyIHNwZWNp
ZmljYXRpb24uCiAgICAgICAgIGNhc2UgTlNGMjVGdW5jdGlvbktleToKICAgICAgICAgICAgIHJl
dHVybiAiRjI1IjsKICAgICAgICAgY2FzZSBOU0YyNkZ1bmN0aW9uS2V5OgpAQCAtMzIyLDE4ICs2
NjEsMTggQEAgc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTgogICAgICAg
ICAgICAgcmV0dXJuICJGMzQiOwogICAgICAgICBjYXNlIE5TRjM1RnVuY3Rpb25LZXk6CiAgICAg
ICAgICAgICByZXR1cm4gIkYzNSI7Ci0KLSAgICAgICAgLy8gVHVybiAweDdGIGludG8gMHgwOCwg
YmVjYXVzZSBiYWNrc3BhY2UgbmVlZHMgdG8gYWx3YXlzIGJlIDB4MDguCisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIFR1cm4gMHg3RiBpbnRvIDB4MDgsIGJlY2F1c2UgYmFja3NwYWNlIG5l
ZWRzIHRvIGFsd2F5cyBiZSAweDA4LgogICAgICAgICBjYXNlIDB4N0Y6CiAgICAgICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7Ci0gICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21l
cyBVKzAwN0YuCisgICAgICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMg
VSswMDdGLgogICAgICAgICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICBy
ZXR1cm4gIlUrMDA3RiI7CiAgICAgICAgICAgICAKLSAgICAgICAgLy8gQWx3YXlzIHVzZSAweDA5
IGZvciB0YWIgaW5zdGVhZCBvZiBBcHBLaXQncyBiYWNrdGFiIGNoYXJhY3Rlci4KKyAgICAgICAg
ICAgIC8vIEFsd2F5cyB1c2UgMHgwOSBmb3IgdGFiIGluc3RlYWQgb2YgQXBwS2l0J3MgYmFja3Rh
YiBjaGFyYWN0ZXIuCiAgICAgICAgIGNhc2UgTlNCYWNrVGFiQ2hhcmFjdGVyOgogICAgICAgICAg
ICAgcmV0dXJuICJVKzAwMDkiOwotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOU0JlZ2lu
RnVuY3Rpb25LZXk6CiAgICAgICAgIGNhc2UgTlNCcmVha0Z1bmN0aW9uS2V5OgogICAgICAgICBj
YXNlIE5TQ2xlYXJEaXNwbGF5RnVuY3Rpb25LZXk6CkBAIC0zNTMsNTI3ICs2OTIsOSBAQCBzdGF0
aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOCiAgICAgICAgICAgICAvLyBGb3Ig
bm93LCBqdXN0IGZhbGwgdGhyb3VnaCB0byB0aGUgZGVmYXVsdC4KICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVSslMDRYIiwgdG9BU0NJSVVwcGVy
KGMpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQoTlNFdmVudCogZXZl
bnQpCi17Ci0gICAgLy8gQ2hlY2sgdGhhdCB0aGlzIGlzIHRoZSB0eXBlIG9mIGV2ZW50IHRoYXQg
aGFzIGEga2V5Q29kZS4KLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNl
IE5TS2V5RG93bjoKLSAgICAgICAgY2FzZSBOU0tleVVwOgotICAgICAgICBjYXNlIE5TRmxhZ3ND
aGFuZ2VkOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TTnVtZXJpY1BhZEtleU1hc2spCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3dpdGNo
IChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgY2FzZSA3MTogLy8gQ2xlYXIKLSAgICAgICAg
Y2FzZSA4MTogLy8gPQotICAgICAgICBjYXNlIDc1OiAvLyAvCi0gICAgICAgIGNhc2UgNjc6IC8v
ICoKLSAgICAgICAgY2FzZSA3ODogLy8gLQotICAgICAgICBjYXNlIDY5OiAvLyArCi0gICAgICAg
IGNhc2UgNzY6IC8vIEVudGVyCi0gICAgICAgIGNhc2UgNjU6IC8vIC4KLSAgICAgICAgY2FzZSA4
MjogLy8gMAotICAgICAgICBjYXNlIDgzOiAvLyAxCi0gICAgICAgIGNhc2UgODQ6IC8vIDIKLSAg
ICAgICAgY2FzZSA4NTogLy8gMwotICAgICAgICBjYXNlIDg2OiAvLyA0Ci0gICAgICAgIGNhc2Ug
ODc6IC8vIDUKLSAgICAgICAgY2FzZSA4ODogLy8gNgotICAgICAgICBjYXNlIDg5OiAvLyA3Ci0g
ICAgICAgIGNhc2UgOTE6IC8vIDgKLSAgICAgICAgY2FzZSA5MjogLy8gOQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgIH0KLSAgICAgCi0gICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3Rh
dGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KQotewotICAg
IHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgIC8vIFZLX1RBQiAoMDkpIFRBQiBr
ZXkKLSAgICAgICAgY2FzZSA0ODogcmV0dXJuIDB4MDk7Ci0KLSAgICAgICAgLy8gVktfQVBQUyAo
NUQpIFJpZ2h0IHdpbmRvd3MvbWV0YSBrZXkKLSAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29t
bWFuZAotICAgICAgICAgICAgcmV0dXJuIDB4NUQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8g
VktfTFdJTiAoNUIpIExlZnQgd2luZG93cy9tZXRhIGtleQotICAgICAgICBjYXNlIDU1OiAvLyBM
ZWZ0IENvbW1hbmQKLSAgICAgICAgICAgIHJldHVybiAweDVCOwotICAgICAgICAgICAgCi0gICAg
ICAgIC8vIFZLX0NBUElUQUwgKDE0KSBjYXBzIGxvY2tzIGtleQotICAgICAgICBjYXNlIDU3OiAv
LyBDYXBzbG9jawotICAgICAgICAgICAgcmV0dXJuIDB4MTQ7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgLy8gVktfU0hJRlQgKDEwKSBlaXRoZXIgc2hpZnQga2V5Ci0gICAgICAgIGNhc2UgNTY6IC8v
IExlZnQgU2hpZnQKLSAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKLSAgICAgICAgICAg
IHJldHVybiAweDEwOwotICAgICAgICAgICAgCi0gICAgICAgIC8vIFZLX01FTlUgKDEyKSBlaXRo
ZXIgYWx0IGtleQotICAgICAgICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAotICAgICAgICBjYXNlIDYx
OiAvLyBSaWdodCBBbHQKLSAgICAgICAgICAgIHJldHVybiAweDEyOwotICAgICAgICAgICAgCi0g
ICAgICAgIC8vIFZLX0NPTlRST0wgKDExKSBlaXRoZXIgY3RybCBrZXkKLSAgICAgICAgY2FzZSA1
OTogLy8gTGVmdCBDdHJsCi0gICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAgICAgICAg
ICAgIHJldHVybiAweDExOwotICAgICAgICAgICAgCi0gICAgICAgIC8vIFZLX0NMRUFSICgwQykg
Q0xFQVIga2V5Ci0gICAgICAgIGNhc2UgNzE6IHJldHVybiAweDBDOwotCi0gICAgICAgIC8vIFZL
X05VTVBBRDAgKDYwKSBOdW1lcmljIGtleXBhZCAwIGtleQotICAgICAgICBjYXNlIDgyOiByZXR1
cm4gMHg2MDsKLSAgICAgICAgLy8gVktfTlVNUEFEMSAoNjEpIE51bWVyaWMga2V5cGFkIDEga2V5
Ci0gICAgICAgIGNhc2UgODM6IHJldHVybiAweDYxOwotICAgICAgICAvLyBWS19OVU1QQUQyICg2
MikgTnVtZXJpYyBrZXlwYWQgMiBrZXkKLSAgICAgICAgY2FzZSA4NDogcmV0dXJuIDB4NjI7Ci0g
ICAgICAgIC8vIFZLX05VTVBBRDMgKDYzKSBOdW1lcmljIGtleXBhZCAzIGtleQotICAgICAgICBj
YXNlIDg1OiByZXR1cm4gMHg2MzsKLSAgICAgICAgLy8gVktfTlVNUEFENCAoNjQpIE51bWVyaWMg
a2V5cGFkIDQga2V5Ci0gICAgICAgIGNhc2UgODY6IHJldHVybiAweDY0OwotICAgICAgICAvLyBW
S19OVU1QQUQ1ICg2NSkgTnVtZXJpYyBrZXlwYWQgNSBrZXkKLSAgICAgICAgY2FzZSA4NzogcmV0
dXJuIDB4NjU7Ci0gICAgICAgIC8vIFZLX05VTVBBRDYgKDY2KSBOdW1lcmljIGtleXBhZCA2IGtl
eQotICAgICAgICBjYXNlIDg4OiByZXR1cm4gMHg2NjsKLSAgICAgICAgLy8gVktfTlVNUEFENyAo
NjcpIE51bWVyaWMga2V5cGFkIDcga2V5Ci0gICAgICAgIGNhc2UgODk6IHJldHVybiAweDY3Owot
ICAgICAgICAvLyBWS19OVU1QQUQ4ICg2OCkgTnVtZXJpYyBrZXlwYWQgOCBrZXkKLSAgICAgICAg
Y2FzZSA5MTogcmV0dXJuIDB4Njg7Ci0gICAgICAgIC8vIFZLX05VTVBBRDkgKDY5KSBOdW1lcmlj
IGtleXBhZCA5IGtleQotICAgICAgICBjYXNlIDkyOiByZXR1cm4gMHg2OTsKLSAgICAgICAgLy8g
VktfTVVMVElQTFkgKDZBKSBNdWx0aXBseSBrZXkKLSAgICAgICAgY2FzZSA2NzogcmV0dXJuIDB4
NkE7Ci0gICAgICAgIC8vIFZLX0FERCAoNkIpIEFkZCBrZXkKLSAgICAgICAgY2FzZSA2OTogcmV0
dXJuIDB4NkI7Ci0KLSAgICAgICAgLy8gVktfU1VCVFJBQ1QgKDZEKSBTdWJ0cmFjdCBrZXkKLSAg
ICAgICAgY2FzZSA3ODogcmV0dXJuIDB4NkQ7Ci0gICAgICAgIC8vIFZLX0RFQ0lNQUwgKDZFKSBE
ZWNpbWFsIGtleQotICAgICAgICBjYXNlIDY1OiByZXR1cm4gMHg2RTsKLSAgICAgICAgLy8gVktf
RElWSURFICg2RikgRGl2aWRlIGtleQotICAgICAgICBjYXNlIDc1OiByZXR1cm4gMHg2RjsKLSAg
ICAgfQotCi0gICAgTlNTdHJpbmcqIHMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzXTsKLSAgICBpZiAoW3MgbGVuZ3RoXSAhPSAxKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IHN3aXRjaCAoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgewotICAgICAgICAvLyBWS19MQlVUVE9O
ICgwMSkgTGVmdCBtb3VzZSBidXR0b24KLSAgICAgICAgLy8gVktfUkJVVFRPTiAoMDIpIFJpZ2h0
IG1vdXNlIGJ1dHRvbgotICAgICAgICAvLyBWS19DQU5DRUwgKDAzKSBDb250cm9sLWJyZWFrIHBy
b2Nlc3NpbmcKLSAgICAgICAgLy8gVktfTUJVVFRPTiAoMDQpIE1pZGRsZSBtb3VzZSBidXR0b24g
KHRocmVlLWJ1dHRvbiBtb3VzZSkKLSAgICAgICAgLy8gVktfWEJVVFRPTjEgKDA1KQotICAgICAg
ICAvLyBWS19YQlVUVE9OMiAoMDYpCi0KLSAgICAgICAgLy8gVktfQkFDSyAoMDgpIEJBQ0tTUEFD
RSBrZXkKLSAgICAgICAgY2FzZSA4OiBjYXNlIDB4N0Y6IHJldHVybiAweDA4OwotICAgICAgICAv
LyBWS19UQUIgKDA5KSBUQUIga2V5Ci0gICAgICAgIGNhc2UgOTogcmV0dXJuIDB4MDk7Ci0KLSAg
ICAgICAgLy8gVktfQ0xFQVIgKDBDKSBDTEVBUiBrZXkKLSAgICAgICAgLy8gaGFuZGxlZCBieSBr
ZXkgY29kZSBhYm92ZQotCi0gICAgICAgIC8vIFZLX1JFVFVSTiAoMEQpCi0gICAgICAgIGNhc2Ug
MHhEOiBjYXNlIDM6IHJldHVybiAweDBEOwotCi0gICAgICAgIC8vIFZLX1NISUZUICgxMCkgU0hJ
RlQga2V5Ci0gICAgICAgIC8vIFZLX0NPTlRST0wgKDExKSBDVFJMIGtleQotICAgICAgICAvLyBW
S19NRU5VICgxMikgQUxUIGtleQotCi0gICAgICAgIC8vIFZLX1BBVVNFICgxMykgUEFVU0Uga2V5
Ci0gICAgICAgIGNhc2UgTlNQYXVzZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgxMzsKLQotICAgICAg
ICAvLyBWS19DQVBJVEFMICgxNCkgQ0FQUyBMT0NLIGtleQotICAgICAgICAvLyBWS19LQU5BICgx
NSkgSW5wdXQgTWV0aG9kIEVkaXRvciAoSU1FKSBLYW5hIG1vZGUKLSAgICAgICAgLy8gVktfSEFO
R1VFTCAoMTUpIElNRSBIYW5ndWVsIG1vZGUgKG1haW50YWluZWQgZm9yIGNvbXBhdGliaWxpdHk7
IHVzZSBWS19IQU5HVUwpCi0gICAgICAgIC8vIFZLX0hBTkdVTCAoMTUpIElNRSBIYW5ndWwgbW9k
ZQotICAgICAgICAvLyBWS19KVU5KQSAoMTcpIElNRSBKdW5qYSBtb2RlCi0gICAgICAgIC8vIFZL
X0ZJTkFMICgxOCkgSU1FIGZpbmFsIG1vZGUKLSAgICAgICAgLy8gVktfSEFOSkEgKDE5KSBJTUUg
SGFuamEgbW9kZQotICAgICAgICAvLyBWS19LQU5KSSAoMTkpIElNRSBLYW5qaSBtb2RlCi0KLSAg
ICAgICAgLy8gVktfRVNDQVBFICgxQikgRVNDIGtleQotICAgICAgICBjYXNlIDB4MUI6IHJldHVy
biAweDFCOwotCi0gICAgICAgIC8vIFZLX0NPTlZFUlQgKDFDKSBJTUUgY29udmVydAotICAgICAg
ICAvLyBWS19OT05DT05WRVJUICgxRCkgSU1FIG5vbmNvbnZlcnQKLSAgICAgICAgLy8gVktfQUND
RVBUICgxRSkgSU1FIGFjY2VwdAotICAgICAgICAvLyBWS19NT0RFQ0hBTkdFICgxRikgSU1FIG1v
ZGUgY2hhbmdlIHJlcXVlc3QKLQotICAgICAgICAvLyBWS19TUEFDRSAoMjApIFNQQUNFQkFSCi0g
ICAgICAgIGNhc2UgJyAnOiByZXR1cm4gMHgyMDsKLSAgICAgICAgLy8gVktfUFJJT1IgKDIxKSBQ
QUdFIFVQIGtleQotICAgICAgICBjYXNlIE5TUGFnZVVwRnVuY3Rpb25LZXk6IHJldHVybiAweDIx
OwotICAgICAgICAvLyBWS19ORVhUICgyMikgUEFHRSBET1dOIGtleQotICAgICAgICBjYXNlIE5T
UGFnZURvd25GdW5jdGlvbktleTogcmV0dXJuIDB4MjI7Ci0gICAgICAgIC8vIFZLX0VORCAoMjMp
IEVORCBrZXkKLSAgICAgICAgY2FzZSBOU0VuZEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyMzsKLSAg
ICAgICAgLy8gVktfSE9NRSAoMjQpIEhPTUUga2V5Ci0gICAgICAgIGNhc2UgTlNIb21lRnVuY3Rp
b25LZXk6IHJldHVybiAweDI0OwotICAgICAgICAvLyBWS19MRUZUICgyNSkgTEVGVCBBUlJPVyBr
ZXkKLSAgICAgICAgY2FzZSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgyNTsKLSAg
ICAgICAgLy8gVktfVVAgKDI2KSBVUCBBUlJPVyBrZXkKLSAgICAgICAgY2FzZSBOU1VwQXJyb3dG
dW5jdGlvbktleTogcmV0dXJuIDB4MjY7Ci0gICAgICAgIC8vIFZLX1JJR0hUICgyNykgUklHSFQg
QVJST1cga2V5Ci0gICAgICAgIGNhc2UgTlNSaWdodEFycm93RnVuY3Rpb25LZXk6IHJldHVybiAw
eDI3OwotICAgICAgICAvLyBWS19ET1dOICgyOCkgRE9XTiBBUlJPVyBrZXkKLSAgICAgICAgY2Fz
ZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgyODsKLSAgICAgICAgLy8gVktfU0VM
RUNUICgyOSkgU0VMRUNUIGtleQotICAgICAgICBjYXNlIE5TU2VsZWN0RnVuY3Rpb25LZXk6IHJl
dHVybiAweDI5OwotICAgICAgICAvLyBWS19QUklOVCAoMkEpIFBSSU5UIGtleQotICAgICAgICBj
YXNlIE5TUHJpbnRGdW5jdGlvbktleTogcmV0dXJuIDB4MkE7Ci0gICAgICAgIC8vIFZLX0VYRUNV
VEUgKDJCKSBFWEVDVVRFIGtleQotICAgICAgICBjYXNlIE5TRXhlY3V0ZUZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHgyQjsKLSAgICAgICAgLy8gVktfU05BUFNIT1QgKDJDKSBQUklOVCBTQ1JFRU4ga2V5
Ci0gICAgICAgIGNhc2UgTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyQzsKLSAg
ICAgICAgLy8gVktfSU5TRVJUICgyRCkgSU5TIGtleQotICAgICAgICBjYXNlIE5TSW5zZXJ0RnVu
Y3Rpb25LZXk6IGNhc2UgTlNIZWxwRnVuY3Rpb25LZXk6IHJldHVybiAweDJEOwotICAgICAgICAv
LyBWS19ERUxFVEUgKDJFKSBERUwga2V5Ci0gICAgICAgIGNhc2UgTlNEZWxldGVGdW5jdGlvbktl
eTogcmV0dXJuIDB4MkU7Ci0KLSAgICAgICAgLy8gVktfSEVMUCAoMkYpIEhFTFAga2V5Ci0KLSAg
ICAgICAgLy8gICgzMCkgMCBrZXkKLSAgICAgICAgY2FzZSAnMCc6IGNhc2UgJyknOiByZXR1cm4g
MHgzMDsKLSAgICAgICAgLy8gICgzMSkgMSBrZXkKLSAgICAgICAgY2FzZSAnMSc6IGNhc2UgJyEn
OiByZXR1cm4gMHgzMTsKLSAgICAgICAgLy8gICgzMikgMiBrZXkKLSAgICAgICAgY2FzZSAnMic6
IGNhc2UgJ0AnOiByZXR1cm4gMHgzMjsKLSAgICAgICAgLy8gICgzMykgMyBrZXkKLSAgICAgICAg
Y2FzZSAnMyc6IGNhc2UgJyMnOiByZXR1cm4gMHgzMzsKLSAgICAgICAgLy8gICgzNCkgNCBrZXkK
LSAgICAgICAgY2FzZSAnNCc6IGNhc2UgJyQnOiByZXR1cm4gMHgzNDsKLSAgICAgICAgLy8gICgz
NSkgNSBrZXkKLSAgICAgICAgY2FzZSAnNSc6IGNhc2UgJyUnOiByZXR1cm4gMHgzNTsKLSAgICAg
ICAgLy8gICgzNikgNiBrZXkKLSAgICAgICAgY2FzZSAnNic6IGNhc2UgJ14nOiByZXR1cm4gMHgz
NjsKLSAgICAgICAgLy8gICgzNykgNyBrZXkKLSAgICAgICAgY2FzZSAnNyc6IGNhc2UgJyYnOiBy
ZXR1cm4gMHgzNzsKLSAgICAgICAgLy8gICgzOCkgOCBrZXkKLSAgICAgICAgY2FzZSAnOCc6IGNh
c2UgJyonOiByZXR1cm4gMHgzODsKLSAgICAgICAgLy8gICgzOSkgOSBrZXkKLSAgICAgICAgY2Fz
ZSAnOSc6IGNhc2UgJygnOiByZXR1cm4gMHgzOTsKLSAgICAgICAgLy8gICg0MSkgQSBrZXkKLSAg
ICAgICAgY2FzZSAnYSc6IGNhc2UgJ0EnOiByZXR1cm4gMHg0MTsKLSAgICAgICAgLy8gICg0Mikg
QiBrZXkKLSAgICAgICAgY2FzZSAnYic6IGNhc2UgJ0InOiByZXR1cm4gMHg0MjsKLSAgICAgICAg
Ly8gICg0MykgQyBrZXkKLSAgICAgICAgY2FzZSAnYyc6IGNhc2UgJ0MnOiByZXR1cm4gMHg0MzsK
LSAgICAgICAgLy8gICg0NCkgRCBrZXkKLSAgICAgICAgY2FzZSAnZCc6IGNhc2UgJ0QnOiByZXR1
cm4gMHg0NDsKLSAgICAgICAgLy8gICg0NSkgRSBrZXkKLSAgICAgICAgY2FzZSAnZSc6IGNhc2Ug
J0UnOiByZXR1cm4gMHg0NTsKLSAgICAgICAgLy8gICg0NikgRiBrZXkKLSAgICAgICAgY2FzZSAn
Zic6IGNhc2UgJ0YnOiByZXR1cm4gMHg0NjsKLSAgICAgICAgLy8gICg0NykgRyBrZXkKLSAgICAg
ICAgY2FzZSAnZyc6IGNhc2UgJ0cnOiByZXR1cm4gMHg0NzsKLSAgICAgICAgLy8gICg0OCkgSCBr
ZXkKLSAgICAgICAgY2FzZSAnaCc6IGNhc2UgJ0gnOiByZXR1cm4gMHg0ODsKLSAgICAgICAgLy8g
ICg0OSkgSSBrZXkKLSAgICAgICAgY2FzZSAnaSc6IGNhc2UgJ0knOiByZXR1cm4gMHg0OTsKLSAg
ICAgICAgLy8gICg0QSkgSiBrZXkKLSAgICAgICAgY2FzZSAnaic6IGNhc2UgJ0onOiByZXR1cm4g
MHg0QTsKLSAgICAgICAgLy8gICg0QikgSyBrZXkKLSAgICAgICAgY2FzZSAnayc6IGNhc2UgJ0sn
OiByZXR1cm4gMHg0QjsKLSAgICAgICAgLy8gICg0QykgTCBrZXkKLSAgICAgICAgY2FzZSAnbCc6
IGNhc2UgJ0wnOiByZXR1cm4gMHg0QzsKLSAgICAgICAgLy8gICg0RCkgTSBrZXkKLSAgICAgICAg
Y2FzZSAnbSc6IGNhc2UgJ00nOiByZXR1cm4gMHg0RDsKLSAgICAgICAgLy8gICg0RSkgTiBrZXkK
LSAgICAgICAgY2FzZSAnbic6IGNhc2UgJ04nOiByZXR1cm4gMHg0RTsKLSAgICAgICAgLy8gICg0
RikgTyBrZXkKLSAgICAgICAgY2FzZSAnbyc6IGNhc2UgJ08nOiByZXR1cm4gMHg0RjsKLSAgICAg
ICAgLy8gICg1MCkgUCBrZXkKLSAgICAgICAgY2FzZSAncCc6IGNhc2UgJ1AnOiByZXR1cm4gMHg1
MDsKLSAgICAgICAgLy8gICg1MSkgUSBrZXkKLSAgICAgICAgY2FzZSAncSc6IGNhc2UgJ1EnOiBy
ZXR1cm4gMHg1MTsKLSAgICAgICAgLy8gICg1MikgUiBrZXkKLSAgICAgICAgY2FzZSAncic6IGNh
c2UgJ1InOiByZXR1cm4gMHg1MjsKLSAgICAgICAgLy8gICg1MykgUyBrZXkKLSAgICAgICAgY2Fz
ZSAncyc6IGNhc2UgJ1MnOiByZXR1cm4gMHg1MzsKLSAgICAgICAgLy8gICg1NCkgVCBrZXkKLSAg
ICAgICAgY2FzZSAndCc6IGNhc2UgJ1QnOiByZXR1cm4gMHg1NDsKLSAgICAgICAgLy8gICg1NSkg
VSBrZXkKLSAgICAgICAgY2FzZSAndSc6IGNhc2UgJ1UnOiByZXR1cm4gMHg1NTsKLSAgICAgICAg
Ly8gICg1NikgViBrZXkKLSAgICAgICAgY2FzZSAndic6IGNhc2UgJ1YnOiByZXR1cm4gMHg1NjsK
LSAgICAgICAgLy8gICg1NykgVyBrZXkKLSAgICAgICAgY2FzZSAndyc6IGNhc2UgJ1cnOiByZXR1
cm4gMHg1NzsKLSAgICAgICAgLy8gICg1OCkgWCBrZXkKLSAgICAgICAgY2FzZSAneCc6IGNhc2Ug
J1gnOiByZXR1cm4gMHg1ODsKLSAgICAgICAgLy8gICg1OSkgWSBrZXkKLSAgICAgICAgY2FzZSAn
eSc6IGNhc2UgJ1knOiByZXR1cm4gMHg1OTsKLSAgICAgICAgLy8gICg1QSkgWiBrZXkKLSAgICAg
ICAgY2FzZSAneic6IGNhc2UgJ1onOiByZXR1cm4gMHg1QTsKLQotICAgICAgICAvLyBWS19MV0lO
ICg1QikgTGVmdCBXaW5kb3dzIGtleSAoTWljcm9zb2Z0IE5hdHVyYWwga2V5Ym9hcmQpCi0gICAg
ICAgIC8vIFZLX1JXSU4gKDVDKSBSaWdodCBXaW5kb3dzIGtleSAoTmF0dXJhbCBrZXlib2FyZCkK
LSAgICAgICAgLy8gVktfQVBQUyAoNUQpIEFwcGxpY2F0aW9ucyBrZXkgKE5hdHVyYWwga2V5Ym9h
cmQpCi0gICAgICAgIC8vIFZLX1NMRUVQICg1RikgQ29tcHV0ZXIgU2xlZXAga2V5Ci0KLSAgICAg
ICAgLy8gVktfTlVNUEFEMCAoNjApIE51bWVyaWMga2V5cGFkIDAga2V5Ci0gICAgICAgIC8vIFZL
X05VTVBBRDEgKDYxKSBOdW1lcmljIGtleXBhZCAxIGtleQotICAgICAgICAvLyBWS19OVU1QQUQy
ICg2MikgTnVtZXJpYyBrZXlwYWQgMiBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFEMyAoNjMpIE51
bWVyaWMga2V5cGFkIDMga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDQgKDY0KSBOdW1lcmljIGtl
eXBhZCA0IGtleQotICAgICAgICAvLyBWS19OVU1QQUQ1ICg2NSkgTnVtZXJpYyBrZXlwYWQgNSBr
ZXkKLSAgICAgICAgLy8gVktfTlVNUEFENiAoNjYpIE51bWVyaWMga2V5cGFkIDYga2V5Ci0gICAg
ICAgIC8vIFZLX05VTVBBRDcgKDY3KSBOdW1lcmljIGtleXBhZCA3IGtleQotICAgICAgICAvLyBW
S19OVU1QQUQ4ICg2OCkgTnVtZXJpYyBrZXlwYWQgOCBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFE
OSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5Ci0gICAgICAgIC8vIFZLX01VTFRJUExZICg2QSkg
TXVsdGlwbHkga2V5Ci0gICAgICAgIC8vIFZLX0FERCAoNkIpIEFkZCBrZXkKLSAgICAgICAgLy8g
aGFuZGxlZCBieSBrZXkgY29kZSBhYm92ZQotCi0gICAgICAgIC8vIFZLX1NFUEFSQVRPUiAoNkMp
IFNlcGFyYXRvciBrZXkKLQotICAgICAgICAvLyBWS19TVUJUUkFDVCAoNkQpIFN1YnRyYWN0IGtl
eQotICAgICAgICAvLyBWS19ERUNJTUFMICg2RSkgRGVjaW1hbCBrZXkKLSAgICAgICAgLy8gVktf
RElWSURFICg2RikgRGl2aWRlIGtleQotICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFi
b3ZlCi0KLSAgICAgICAgLy8gVktfRjEgKDcwKSBGMSBrZXkKLSAgICAgICAgY2FzZSBOU0YxRnVu
Y3Rpb25LZXk6IHJldHVybiAweDcwOwotICAgICAgICAvLyBWS19GMiAoNzEpIEYyIGtleQotICAg
ICAgICBjYXNlIE5TRjJGdW5jdGlvbktleTogcmV0dXJuIDB4NzE7Ci0gICAgICAgIC8vIFZLX0Yz
ICg3MikgRjMga2V5Ci0gICAgICAgIGNhc2UgTlNGM0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg3MjsK
LSAgICAgICAgLy8gVktfRjQgKDczKSBGNCBrZXkKLSAgICAgICAgY2FzZSBOU0Y0RnVuY3Rpb25L
ZXk6IHJldHVybiAweDczOwotICAgICAgICAvLyBWS19GNSAoNzQpIEY1IGtleQotICAgICAgICBj
YXNlIE5TRjVGdW5jdGlvbktleTogcmV0dXJuIDB4NzQ7Ci0gICAgICAgIC8vIFZLX0Y2ICg3NSkg
RjYga2V5Ci0gICAgICAgIGNhc2UgTlNGNkZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3NTsKLSAgICAg
ICAgLy8gVktfRjcgKDc2KSBGNyBrZXkKLSAgICAgICAgY2FzZSBOU0Y3RnVuY3Rpb25LZXk6IHJl
dHVybiAweDc2OwotICAgICAgICAvLyBWS19GOCAoNzcpIEY4IGtleQotICAgICAgICBjYXNlIE5T
RjhGdW5jdGlvbktleTogcmV0dXJuIDB4Nzc7Ci0gICAgICAgIC8vIFZLX0Y5ICg3OCkgRjkga2V5
Ci0gICAgICAgIGNhc2UgTlNGOUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3ODsKLSAgICAgICAgLy8g
VktfRjEwICg3OSkgRjEwIGtleQotICAgICAgICBjYXNlIE5TRjEwRnVuY3Rpb25LZXk6IHJldHVy
biAweDc5OwotICAgICAgICAvLyBWS19GMTEgKDdBKSBGMTEga2V5Ci0gICAgICAgIGNhc2UgTlNG
MTFGdW5jdGlvbktleTogcmV0dXJuIDB4N0E7Ci0gICAgICAgIC8vIFZLX0YxMiAoN0IpIEYxMiBr
ZXkKLSAgICAgICAgY2FzZSBOU0YxMkZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3QjsKLSAgICAgICAg
Ly8gVktfRjEzICg3QykgRjEzIGtleQotICAgICAgICBjYXNlIE5TRjEzRnVuY3Rpb25LZXk6IHJl
dHVybiAweDdDOwotICAgICAgICAvLyBWS19GMTQgKDdEKSBGMTQga2V5Ci0gICAgICAgIGNhc2Ug
TlNGMTRGdW5jdGlvbktleTogcmV0dXJuIDB4N0Q7Ci0gICAgICAgIC8vIFZLX0YxNSAoN0UpIEYx
NSBrZXkKLSAgICAgICAgY2FzZSBOU0YxNUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3RTsKLSAgICAg
ICAgLy8gVktfRjE2ICg3RikgRjE2IGtleQotICAgICAgICBjYXNlIE5TRjE2RnVuY3Rpb25LZXk6
IHJldHVybiAweDdGOwotICAgICAgICAvLyBWS19GMTcgKDgwSCkgRjE3IGtleQotICAgICAgICBj
YXNlIE5TRjE3RnVuY3Rpb25LZXk6IHJldHVybiAweDgwOwotICAgICAgICAvLyBWS19GMTggKDgx
SCkgRjE4IGtleQotICAgICAgICBjYXNlIE5TRjE4RnVuY3Rpb25LZXk6IHJldHVybiAweDgxOwot
ICAgICAgICAvLyBWS19GMTkgKDgySCkgRjE5IGtleQotICAgICAgICBjYXNlIE5TRjE5RnVuY3Rp
b25LZXk6IHJldHVybiAweDgyOwotICAgICAgICAvLyBWS19GMjAgKDgzSCkgRjIwIGtleQotICAg
ICAgICBjYXNlIE5TRjIwRnVuY3Rpb25LZXk6IHJldHVybiAweDgzOwotICAgICAgICAvLyBWS19G
MjEgKDg0SCkgRjIxIGtleQotICAgICAgICBjYXNlIE5TRjIxRnVuY3Rpb25LZXk6IHJldHVybiAw
eDg0OwotICAgICAgICAvLyBWS19GMjIgKDg1SCkgRjIyIGtleQotICAgICAgICBjYXNlIE5TRjIy
RnVuY3Rpb25LZXk6IHJldHVybiAweDg1OwotICAgICAgICAvLyBWS19GMjMgKDg2SCkgRjIzIGtl
eQotICAgICAgICBjYXNlIE5TRjIzRnVuY3Rpb25LZXk6IHJldHVybiAweDg2OwotICAgICAgICAv
LyBWS19GMjQgKDg3SCkgRjI0IGtleQotICAgICAgICBjYXNlIE5TRjI0RnVuY3Rpb25LZXk6IHJl
dHVybiAweDg3OwotCi0gICAgICAgIC8vIFZLX05VTUxPQ0sgKDkwKSBOVU0gTE9DSyBrZXkKLQot
ICAgICAgICAvLyBWS19TQ1JPTEwgKDkxKSBTQ1JPTEwgTE9DSyBrZXkKLSAgICAgICAgY2FzZSBO
U1Njcm9sbExvY2tGdW5jdGlvbktleTogcmV0dXJuIDB4OTE7Ci0KLSAgICAgICAgLy8gVktfTFNI
SUZUIChBMCkgTGVmdCBTSElGVCBrZXkKLSAgICAgICAgLy8gVktfUlNISUZUIChBMSkgUmlnaHQg
U0hJRlQga2V5Ci0gICAgICAgIC8vIFZLX0xDT05UUk9MIChBMikgTGVmdCBDT05UUk9MIGtleQot
ICAgICAgICAvLyBWS19SQ09OVFJPTCAoQTMpIFJpZ2h0IENPTlRST0wga2V5Ci0gICAgICAgIC8v
IFZLX0xNRU5VIChBNCkgTGVmdCBNRU5VIGtleQotICAgICAgICAvLyBWS19STUVOVSAoQTUpIFJp
Z2h0IE1FTlUga2V5Ci0gICAgICAgIC8vIFZLX0JST1dTRVJfQkFDSyAoQTYpIFdpbmRvd3MgMjAw
MC9YUDogQnJvd3NlciBCYWNrIGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX0ZPUldBUkQgKEE3
KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgRm9yd2FyZCBrZXkKLSAgICAgICAgLy8gVktfQlJP
V1NFUl9SRUZSRVNIIChBOCkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFJlZnJlc2gga2V5Ci0g
ICAgICAgIC8vIFZLX0JST1dTRVJfU1RPUCAoQTkpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBT
dG9wIGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX1NFQVJDSCAoQUEpIFdpbmRvd3MgMjAwMC9Y
UDogQnJvd3NlciBTZWFyY2gga2V5Ci0gICAgICAgIC8vIFZLX0JST1dTRVJfRkFWT1JJVEVTIChB
QikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEZhdm9yaXRlcyBrZXkKLSAgICAgICAgLy8gVktf
QlJPV1NFUl9IT01FIChBQykgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0YXJ0IGFuZCBIb21l
IGtleQotICAgICAgICAvLyBWS19WT0xVTUVfTVVURSAoQUQpIFdpbmRvd3MgMjAwMC9YUDogVm9s
dW1lIE11dGUga2V5Ci0gICAgICAgIC8vIFZLX1ZPTFVNRV9ET1dOIChBRSkgV2luZG93cyAyMDAw
L1hQOiBWb2x1bWUgRG93biBrZXkKLSAgICAgICAgLy8gVktfVk9MVU1FX1VQIChBRikgV2luZG93
cyAyMDAwL1hQOiBWb2x1bWUgVXAga2V5Ci0gICAgICAgIC8vIFZLX01FRElBX05FWFRfVFJBQ0sg
KEIwKSBXaW5kb3dzIDIwMDAvWFA6IE5leHQgVHJhY2sga2V5Ci0gICAgICAgIC8vIFZLX01FRElB
X1BSRVZfVFJBQ0sgKEIxKSBXaW5kb3dzIDIwMDAvWFA6IFByZXZpb3VzIFRyYWNrIGtleQotICAg
ICAgICAvLyBWS19NRURJQV9TVE9QIChCMikgV2luZG93cyAyMDAwL1hQOiBTdG9wIE1lZGlhIGtl
eQotICAgICAgICAvLyBWS19NRURJQV9QTEFZX1BBVVNFIChCMykgV2luZG93cyAyMDAwL1hQOiBQ
bGF5L1BhdXNlIE1lZGlhIGtleQotICAgICAgICAvLyBWS19MQVVOQ0hfTUFJTCAoQjQpIFdpbmRv
d3MgMjAwMC9YUDogU3RhcnQgTWFpbCBrZXkKLSAgICAgICAgLy8gVktfTEFVTkNIX01FRElBX1NF
TEVDVCAoQjUpIFdpbmRvd3MgMjAwMC9YUDogU2VsZWN0IE1lZGlhIGtleQotICAgICAgICAvLyBW
S19MQVVOQ0hfQVBQMSAoQjYpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMSBr
ZXkKLSAgICAgICAgLy8gVktfTEFVTkNIX0FQUDIgKEI3KSBXaW5kb3dzIDIwMDAvWFA6IFN0YXJ0
IEFwcGxpY2F0aW9uIDIga2V5Ci0KLSAgICAgICAgLy8gVktfT0VNXzEgKEJBKSBVc2VkIGZvciBt
aXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dz
IDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnOzonIGtleQotICAg
ICAgICBjYXNlICc7JzogY2FzZSAnOic6IHJldHVybiAweEJBOwotICAgICAgICAvLyBWS19PRU1f
UExVUyAoQkIpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcr
JyBrZXkKLSAgICAgICAgY2FzZSAnPSc6IGNhc2UgJysnOiByZXR1cm4gMHhCQjsKLSAgICAgICAg
Ly8gVktfT0VNX0NPTU1BIChCQykgV2luZG93cyAyMDAwL1hQOiBGb3IgYW55IGNvdW50cnkvcmVn
aW9uLCB0aGUgJywnIGtleQotICAgICAgICBjYXNlICcsJzogY2FzZSAnPCc6IHJldHVybiAweEJD
OwotICAgICAgICAvLyBWS19PRU1fTUlOVVMgKEJEKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkg
Y291bnRyeS9yZWdpb24sIHRoZSAnLScga2V5Ci0gICAgICAgIGNhc2UgJy0nOiBjYXNlICdfJzog
cmV0dXJuIDB4QkQ7Ci0gICAgICAgIC8vIFZLX09FTV9QRVJJT0QgKEJFKSBXaW5kb3dzIDIwMDAv
WFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLicga2V5Ci0gICAgICAgIGNhc2UgJy4n
OiBjYXNlICc+JzogcmV0dXJuIDB4QkU7Ci0gICAgICAgIC8vIFZLX09FTV8yIChCRikgVXNlZCBm
b3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2lu
ZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJy8/JyBrZXkK
LSAgICAgICAgY2FzZSAnLyc6IGNhc2UgJz8nOiByZXR1cm4gMHhCRjsKLSAgICAgICAgLy8gVktf
T0VNXzMgKEMwKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5
IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9h
cmQsIHRoZSAnYH4nIGtleQotICAgICAgICBjYXNlICdgJzogY2FzZSAnfic6IHJldHVybiAweEMw
OwotICAgICAgICAvLyBWS19PRU1fNCAoREIpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFj
dGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBV
UyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdbeycga2V5Ci0gICAgICAgIGNhc2UgJ1snOiBjYXNl
ICd7JzogcmV0dXJuIDB4REI7Ci0gICAgICAgIC8vIFZLX09FTV81IChEQykgVXNlZCBmb3IgbWlz
Y2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAy
MDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ1x8JyBrZXkKLSAgICAg
ICAgY2FzZSAnXFwnOiBjYXNlICd8JzogcmV0dXJuIDB4REM7Ci0gICAgICAgIC8vIFZLX09FTV82
IChERCkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBr
ZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0
aGUgJ119JyBrZXkKLSAgICAgICAgY2FzZSAnXSc6IGNhc2UgJ30nOiByZXR1cm4gMHhERDsKLSAg
ICAgICAgLy8gVktfT0VNXzcgKERFKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7
IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3Rh
bmRhcmQga2V5Ym9hcmQsIHRoZSAnc2luZ2xlLXF1b3RlL2RvdWJsZS1xdW90ZScga2V5Ci0gICAg
ICAgIGNhc2UgJ1wnJzogY2FzZSAnIic6IHJldHVybiAweERFOwotCi0gICAgICAgIC8vIFZLX09F
TV84IChERikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBi
eSBrZXlib2FyZC4KLSAgICAgICAgLy8gVktfT0VNXzEwMiAoRTIpIFdpbmRvd3MgMjAwMC9YUDog
RWl0aGVyIHRoZSBhbmdsZSBicmFja2V0IGtleSBvciB0aGUgYmFja3NsYXNoIGtleSBvbiB0aGUg
UlQgMTAyLWtleSBrZXlib2FyZAotICAgICAgICAvLyBWS19QUk9DRVNTS0VZIChFNSkgV2luZG93
cyA5NS85OC9NZSwgV2luZG93cyBOVCA0LjAsIFdpbmRvd3MgMjAwMC9YUDogSU1FIFBST0NFU1Mg
a2V5Ci0gICAgICAgIC8vIFZLX1BBQ0tFVCAoRTcpIFdpbmRvd3MgMjAwMC9YUDogVXNlZCB0byBw
YXNzIFVuaWNvZGUgY2hhcmFjdGVycyBhcyBpZiB0aGV5IHdlcmUga2V5c3Ryb2tlcy4gVGhlIFZL
X1BBQ0tFVCBrZXkgaXMgdGhlIGxvdyB3b3JkIG9mIGEgMzItYml0IFZpcnR1YWwgS2V5IHZhbHVl
IHVzZWQgZm9yIG5vbi1rZXlib2FyZCBpbnB1dCBtZXRob2RzLiBGb3IgbW9yZSBpbmZvcm1hdGlv
biwgc2VlIFJlbWFyayBpbiBLRVlCRElOUFVULFNlbmRJbnB1dCwgV01fS0VZRE9XTiwgYW5kIFdN
X0tFWVVQCi0gICAgICAgIC8vIFZLX0FUVE4gKEY2KSBBdHRuIGtleQotICAgICAgICAvLyBWS19D
UlNFTCAoRjcpIENyU2VsIGtleQotICAgICAgICAvLyBWS19FWFNFTCAoRjgpIEV4U2VsIGtleQot
ICAgICAgICAvLyBWS19FUkVPRiAoRjkpIEVyYXNlIEVPRiBrZXkKLSAgICAgICAgLy8gVktfUExB
WSAoRkEpIFBsYXkga2V5Ci0gICAgICAgIC8vIFZLX1pPT00gKEZCKSBab29tIGtleQotICAgICAg
ICAvLyBWS19OT05BTUUgKEZDKSBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQotICAgICAgICAvLyBW
S19QQTEgKEZEKSBQQTEga2V5Ci0gICAgICAgIC8vIFZLX09FTV9DTEVBUiAoRkUpIENsZWFyIGtl
eQotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIH0gICAgCiB9CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0tleVVwRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0gICAgaWYgKFtldmVudCB0eXBl
XSAhPSBOU0ZsYWdzQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuIFtldmVudCB0eXBlXSA9PSBOU0tl
eVVwOwotICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGZhaWxzIGlmIHRoZSB1c2VyIHByZXNzZXMg
Ym90aCBTaGlmdCBrZXlzIGF0IG9uY2UsIGZvciBleGFtcGxlOgotICAgIC8vIHdlIHRyZWF0IHJl
bGVhc2luZyBvbmUgb2YgdGhlbSBhcyBrZXlEb3duLgotICAgIHN3aXRjaCAoW2V2ZW50IGtleUNv
ZGVdKSB7Ci0gICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKLSAgICAgICAgY2FzZSA1
NTogLy8gTGVmdCBDb21tYW5kCi0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZs
YWdzXSAmIE5TQ29tbWFuZEtleU1hc2spID09IDA7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNBbHBoYVNoaWZ0S2V5TWFzaykgPT0gMDsKLSAgICAgICAgICAgIAotICAgICAgICBj
YXNlIDU2OiAvLyBMZWZ0IFNoaWZ0Ci0gICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0Ci0g
ICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNr
KSA9PSAwOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0Ci0gICAg
ICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spID09IDA7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0
cmwKLSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9s
S2V5TWFzaykgPT0gMDsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIDYzOiAvLyBGdW5jdGlv
bgotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0Z1bmN0aW9u
S2V5TWFzaykgPT0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgaW5s
aW5lIFN0cmluZyB0ZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2ZW50KQotewotICAgIGlmIChbZXZl
bnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpCi0gICAgICAgIHJldHVybiAiIjsKLSAgICByZXR1
cm4gW2V2ZW50IGNoYXJhY3RlcnNdOwotfQotICAgIAotICAgIAotc3RhdGljIGlubGluZSBTdHJp
bmcgdW5tb2RpZmllZFRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKFtl
dmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIHJl
dHVybiBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKIH0KIAotUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQpCi0gICAg
OiBtX3R5cGUoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5
VXAgOiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24pCi0gICAgLCBtX3RleHQodGV4dEZy
b21FdmVudChldmVudCkpCi0gICAgLCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZpZWRUZXh0RnJv
bUV2ZW50KGV2ZW50KSkKLSAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5
RXZlbnQoZXZlbnQpKQotICAgICwgbV9hdXRvUmVwZWF0KChbZXZlbnQgdHlwZV0gIT0gTlNGbGFn
c0NoYW5nZWQpICYmIFtldmVudCBpc0FSZXBlYXRdKQotICAgICwgbV93aW5kb3dzVmlydHVhbEtl
eUNvZGUod2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVudCkpCi0gICAgLCBtX25hdGl2ZVZp
cnR1YWxLZXlDb2RlKFtldmVudCBrZXlDb2RlXSkKLSAgICAsIG1faXNLZXlwYWQoaXNLZXlwYWRF
dmVudChldmVudCkpCi0gICAgLCBtX3NoaWZ0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5T
U2hpZnRLZXlNYXNrKQotICAgICwgbV9jdHJsS2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5T
Q29udHJvbEtleU1hc2spCi0gICAgLCBtX2FsdEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBO
U0FsdGVybmF0ZUtleU1hc2spCi0gICAgLCBtX21ldGFLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3Nd
ICYgTlNDb21tYW5kS2V5TWFzaykKLSAgICAsIG1fbWFjRXZlbnQoZXZlbnQpCi17Ci0gICAgLy8g
QWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFw
cEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgotICAgIGlmIChtX3dpbmRvd3NW
aXJ0dWFsS2V5Q29kZSA9PSAnXHInKSB7Ci0gICAgICAgIG1fdGV4dCA9ICJcciI7Ci0gICAgICAg
IG1fdW5tb2RpZmllZFRleHQgPSAiXHIiOwotICAgIH0KLQotICAgIC8vIFRoZSBhZGp1c3RtZW50
cyBiZWxvdyBhcmUgb25seSBuZWVkZWQgaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBtb2RlLCBi
dXQgd2UgY2Fubm90IHRlbGwgd2hhdCBtb2RlIHdlIGFyZSBpbiBmcm9tIGhlcmUuCi0KLSAgICAv
LyBUdXJuIDB4N0YgaW50byA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdheXMgYmUg
OC4KLSAgICBpZiAobV90ZXh0ID09ICJceDdGIikKLSAgICAgICAgbV90ZXh0ID0gIlx4OCI7Ci0g
ICAgaWYgKG1fdW5tb2RpZmllZFRleHQgPT0gIlx4N0YiKQotICAgICAgICBtX3VubW9kaWZpZWRU
ZXh0ID0gIlx4OCI7Ci0gICAgLy8gQWx3YXlzIHVzZSA5IGZvciB0YWIgLS0gd2UgZG9uJ3Qgd2Fu
dCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgotICAg
IGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSA5KSB7Ci0gICAgICAgIG1fdGV4dCA9ICJc
eDkiOwotICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OSI7Ci0gICAgfQotfQotCi12b2lk
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUgdHlw
ZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQotewotICAgIC8vIENhbiBvbmx5IGNo
YW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sg
aW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VSVChtX3R5cGUgPT0g
S2V5RG93bik7Ci0gICAgQVNTRVJUKHR5cGUgPT0gUmF3S2V5RG93biB8fCB0eXBlID09IENoYXIp
OwotICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAgaWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKLSAgICAg
ICAgbV90ZXh0ID0gU3RyaW5nKCk7Ci0gICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmco
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2tleUlkZW50aWZpZXIgPSBTdHJpbmcoKTsKLSAg
ICAgICAgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSAwOwotICAgICAgICBpZiAobV90ZXh0Lmxl
bmd0aCgpID09IDEgJiYgKG1fdGV4dFswVV0gPj0gMHhGNzAwICYmIG1fdGV4dFswVV0gPD0gMHhG
N0ZGKSkgewotICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIE5TRXZlbnRzLmgsIE9wZW5TdGVw
IHJlc2VydmVzIHRoZSByYW5nZSAweEY3MDAtMHhGOEZGIGZvciBmdW5jdGlvbiBrZXlzLiBIb3dl
dmVyLCBzb21lIGFjdHVhbCBwcml2YXRlIHVzZSBjaGFyYWN0ZXJzCi0gICAgICAgICAgICAvLyBo
YXBwZW4gdG8gYmUgaW4gdGhpcyByYW5nZSwgZS5nLiB0aGUgQXBwbGUgbG9nbyAoT3B0aW9uK1No
aWZ0K0spLgotICAgICAgICAgICAgLy8gMHhGN0ZGIGlzIGFuIGFyYml0cmFyeSBjdXQtb2ZmLgot
ICAgICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7Ci0gICAgICAgICAgICBtX3VubW9kaWZpZWRU
ZXh0ID0gU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCi17Ci0gICAgcmV0dXJuIEdldEN1cnJl
bnRLZXlNb2RpZmllcnMoKSAmIGFscGhhTG9jazsKLX0KLQotfQorI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pcGhvbmUvS2V5RXZlbnRJUGhvbmUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pcGhvbmUvS2V5RXZlbnRJUGhvbmUubW0J
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2lwaG9uZS9LZXlFdmVudElQaG9uZS5t
bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgorCisjaWYgUExBVEZPUk0oSVBIT05FKQorCisjaW1wb3J0ICJLZXlFdmVudENvY29h
LmgiCisjaW1wb3J0ICJXZWJFdmVudC5oIgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1BsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFdlYkV2ZW50ICpldmVudCkKKyAgICA6IG1fdHlwZShldmVudC50eXBlID09IFdlYkV2
ZW50S2V5VXAgPyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwIDogUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpLZXlEb3duKQorICAgICwgbV90ZXh0KGV2ZW50LmNoYXJhY3RlcnMpCisgICAgLCBt
X3VubW9kaWZpZWRUZXh0KGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycykKKyAgICAs
IG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnRDaGFyYWN0ZXJzKGV2ZW50
LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycykpCisgICAgLCBtX2F1dG9SZXBlYXQoZXZlbnQu
aXNLZXlSZXBlYXRpbmcpCisgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5
Q29kZUZvcktleUV2ZW50KGV2ZW50LmtleUNvZGUsIGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycykpCisgICAgLCBtX2lzS2V5cGFkKGZhbHNlKSAvLyBpUGhvbmUgZG9lcyBub3QgZGlz
dGluZ3Vpc2ggdGhlIG51bXBhZCA8cmRhcjovL3Byb2JsZW0vNzE5MDgzNT4KKyAgICAsIG1fc2hp
ZnRLZXkoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tTaGlmdCkKKyAgICAs
IG1fY3RybEtleShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2wp
CisgICAgLCBtX2FsdEtleShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0Fs
dGVybmF0ZSkKKyAgICAsIG1fbWV0YUtleShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRG
bGFnTWFza0NvbW1hbmQpCisgICAgLCBtX0V2ZW50KGV2ZW50KQoreworICAgIEFTU0VSVChldmVu
dC50eXBlID09IFdlYkV2ZW50S2V5RG93biB8fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXAp
OworCisgICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRvbid0IHdh
bnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgorICAgIGlm
IChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSAnXHInKSB7CisgICAgICAgIG1fdGV4dCA9ICJc
ciI7CisgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgIH0KKworICAgIC8vIFRo
ZSBhZGp1c3RtZW50cyBiZWxvdyBhcmUgb25seSBuZWVkZWQgaW4gYmFja3dhcmQgY29tcGF0aWJp
bGl0eSBtb2RlLCBidXQgd2UgY2Fubm90IHRlbGwgd2hhdCBtb2RlIHdlIGFyZSBpbiBmcm9tIGhl
cmUuCisKKyAgICAvLyBUdXJuIDB4N0YgaW50byA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0
byBhbHdheXMgYmUgOC4KKyAgICBpZiAobV90ZXh0ID09ICJceDdGIikKKyAgICAgICAgbV90ZXh0
ID0gIlx4OCI7CisgICAgaWYgKG1fdW5tb2RpZmllZFRleHQgPT0gIlx4N0YiKQorICAgICAgICBt
X3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7CisgICAgLy8gQWx3YXlzIHVzZSA5IGZvciB0YWIgLS0g
d2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hp
ZnQtdGFiLgorICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSA5KSB7CisgICAgICAg
IG1fdGV4dCA9ICJceDkiOworICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OSI7CisgICAg
fQorfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2
ZW50KFR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQoreworICAgIC8v
IENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIs
IGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgorICAgIEFTU0VS
VChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNTRVJUKHR5cGUgPT0gUmF3S2V5RG93biB8fCB0
eXBlID09IENoYXIpOworICAgIG1fdHlwZSA9IHR5cGU7CisgICAgaWYgKGJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh0eXBlID09IFJhd0tleURv
d24pIHsKKyAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CisgICAgICAgIG1fdW5tb2RpZmllZFRl
eHQgPSBTdHJpbmcoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2tleUlkZW50aWZpZXIgPSBT
dHJpbmcoKTsKKyAgICAgICAgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSAwOworICAgICAgICBp
ZiAobV90ZXh0Lmxlbmd0aCgpID09IDEgJiYgKG1fdGV4dFswVV0gPj0gMHhGNzAwICYmIG1fdGV4
dFswVV0gPD0gMHhGN0ZGKSkgeworICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIE5TRXZlbnRz
LmgsIE9wZW5TdGVwIHJlc2VydmVzIHRoZSByYW5nZSAweEY3MDAtMHhGOEZGIGZvciBmdW5jdGlv
biBrZXlzLiBIb3dldmVyLCBzb21lIGFjdHVhbCBwcml2YXRlIHVzZSBjaGFyYWN0ZXJzCisgICAg
ICAgICAgICAvLyBoYXBwZW4gdG8gYmUgaW4gdGhpcyByYW5nZSwgZS5nLiB0aGUgQXBwbGUgbG9n
byAoT3B0aW9uK1NoaWZ0K0spLgorICAgICAgICAgICAgLy8gMHhGN0ZGIGlzIGFuIGFyYml0cmFy
eSBjdXQtb2ZmLgorICAgICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CisgICAgICAgICAgICBt
X3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElQSE9ORSkKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCShyZXZpc2lvbiA1NTU5MikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw5IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgog
Ci0jaW1wb3J0ICJMb2dnaW5nLmgiCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSVBI
T05FKSAvLyBGSVhNRTogVXBkYXRlIHdoZW4gSVBIT05FIGFuZCBNQUMgYXJlIHNlcGVyYXRlZAor
CisjaW1wb3J0ICJLZXlFdmVudENvY29hLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAj
aW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5oPgogCkBAIC02MSwyOTkgKzYzLDggQEAgc3RhdGljIFN0
cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTgogICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICAgfQotICAg
IAotICAgIE5TU3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107
Ci0gICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkgewotICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2
ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1Iiwg
W3MgbGVuZ3RoXSk7Ci0gICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKLSAgICB9Ci0gICAg
dW5pY2hhciBjID0gW3MgY2hhcmFjdGVyQXRJbmRleDowXTsKLSAgICBzd2l0Y2ggKGMpIHsKLSAg
ICAgICAgLy8gRWFjaCBpZGVudGlmaWVyIGxpc3RlZCBpbiB0aGUgRE9NIHNwZWMgaXMgbGlzdGVk
IGhlcmUuCi0gICAgICAgIC8vIE1hbnkgYXJlIHNpbXBseSBjb21tZW50ZWQgb3V0IHNpbmNlIHRo
ZXkgZG8gbm90IGFwcGVhciBvbiBzdGFuZGFyZCBNYWNpbnRvc2gga2V5Ym9hcmRzCi0gICAgICAg
IC8vIG9yIGFyZSBvbiBhIGtleSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgY2hh
cmFjdGVyLgotCi0gICAgICAgIC8vICJBY2NlcHQiCi0gICAgICAgIC8vICJBbGxDYW5kaWRhdGVz
IgotCi0gICAgICAgIC8vICJBbHQiCi0gICAgICAgIGNhc2UgTlNNZW51RnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7Ci0KLSAgICAgICAgLy8gIkFwcHMiCi0gICAgICAgIC8v
ICJCcm93c2VyQmFjayIKLSAgICAgICAgLy8gIkJyb3dzZXJGb3J3YXJkIgotICAgICAgICAvLyAi
QnJvd3NlckhvbWUiCi0gICAgICAgIC8vICJCcm93c2VyUmVmcmVzaCIKLSAgICAgICAgLy8gIkJy
b3dzZXJTZWFyY2giCi0gICAgICAgIC8vICJCcm93c2VyU3RvcCIKLSAgICAgICAgLy8gIkNhcHNM
b2NrIgotCi0gICAgICAgIC8vICJDbGVhciIKLSAgICAgICAgY2FzZSBOU0NsZWFyTGluZUZ1bmN0
aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7Ci0KLSAgICAgICAgLy8gIkNvZGVJ
bnB1dCIKLSAgICAgICAgLy8gIkNvbXBvc2UiCi0gICAgICAgIC8vICJDb250cm9sIgotICAgICAg
ICAvLyAiQ3JzZWwiCi0gICAgICAgIC8vICJDb252ZXJ0IgotICAgICAgICAvLyAiQ29weSIKLSAg
ICAgICAgLy8gIkN1dCIKLQotICAgICAgICAvLyAiRG93biIKLSAgICAgICAgY2FzZSBOU0Rvd25B
cnJvd0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJEb3duIjsKLSAgICAgICAgLy8g
IkVuZCIKLSAgICAgICAgY2FzZSBOU0VuZEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJu
ICJFbmQiOwotICAgICAgICAvLyAiRW50ZXIiCi0gICAgICAgIGNhc2UgMHgzOiBjYXNlIDB4QTog
Y2FzZSAweEQ6IC8vIE1hY2ludG9zaCBjYWxscyB0aGUgb25lIG9uIHRoZSBtYWluIGtleWJvYXJk
IFJldHVybiwgYnV0IFdpbmRvd3MgY2FsbHMgaXQgRW50ZXIsIHNvIHdlJ2xsIGRvIHRoZSBzYW1l
IGZvciB0aGUgRE9NCi0gICAgICAgICAgICByZXR1cm4gIkVudGVyIjsKLQotICAgICAgICAvLyAi
RXJhc2VFb2YiCi0KLSAgICAgICAgLy8gIkV4ZWN1dGUiCi0gICAgICAgIGNhc2UgTlNFeGVjdXRl
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOwotCi0gICAgICAgIC8v
ICJFeHNlbCIKLQotICAgICAgICAvLyAiRjEiCi0gICAgICAgIGNhc2UgTlNGMUZ1bmN0aW9uS2V5
OgotICAgICAgICAgICAgcmV0dXJuICJGMSI7Ci0gICAgICAgIC8vICJGMiIKLSAgICAgICAgY2Fz
ZSBOU0YyRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyIjsKLSAgICAgICAgLy8g
IkYzIgotICAgICAgICBjYXNlIE5TRjNGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAi
RjMiOwotICAgICAgICAvLyAiRjQiCi0gICAgICAgIGNhc2UgTlNGNEZ1bmN0aW9uS2V5OgotICAg
ICAgICAgICAgcmV0dXJuICJGNCI7Ci0gICAgICAgIC8vICJGNSIKLSAgICAgICAgY2FzZSBOU0Y1
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkY1IjsKLSAgICAgICAgLy8gIkY2Igot
ICAgICAgICBjYXNlIE5TRjZGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjYiOwot
ICAgICAgICAvLyAiRjciCi0gICAgICAgIGNhc2UgTlNGN0Z1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJGNyI7Ci0gICAgICAgIC8vICJGOCIKLSAgICAgICAgY2FzZSBOU0Y4RnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKLSAgICAgICAgLy8gIkY5IgotICAgICAg
ICBjYXNlIE5TRjlGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjkiOwotICAgICAg
ICAvLyAiRjEwIgotICAgICAgICBjYXNlIE5TRjEwRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkYxMCI7Ci0gICAgICAgIC8vICJGMTEiCi0gICAgICAgIGNhc2UgTlNGMTFGdW5jdGlv
bktleToKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKLSAgICAgICAgLy8gIkYxMiIKLSAgICAg
ICAgY2FzZSBOU0YxMkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTIiOwotICAg
ICAgICAvLyAiRjEzIgotICAgICAgICBjYXNlIE5TRjEzRnVuY3Rpb25LZXk6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYxMyI7Ci0gICAgICAgIC8vICJGMTQiCi0gICAgICAgIGNhc2UgTlNGMTRGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjE0IjsKLSAgICAgICAgLy8gIkYxNSIKLSAg
ICAgICAgY2FzZSBOU0YxNUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTUiOwot
ICAgICAgICAvLyAiRjE2IgotICAgICAgICBjYXNlIE5TRjE2RnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICByZXR1cm4gIkYxNiI7Ci0gICAgICAgIC8vICJGMTciCi0gICAgICAgIGNhc2UgTlNGMTdG
dW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjE3IjsKLSAgICAgICAgLy8gIkYxOCIK
LSAgICAgICAgY2FzZSBOU0YxOEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTgi
OwotICAgICAgICAvLyAiRjE5IgotICAgICAgICBjYXNlIE5TRjE5RnVuY3Rpb25LZXk6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYxOSI7Ci0gICAgICAgIC8vICJGMjAiCi0gICAgICAgIGNhc2UgTlNG
MjBGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIwIjsKLSAgICAgICAgLy8gIkYy
MSIKLSAgICAgICAgY2FzZSBOU0YyMUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJG
MjEiOwotICAgICAgICAvLyAiRjIyIgotICAgICAgICBjYXNlIE5TRjIyRnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYyMiI7Ci0gICAgICAgIC8vICJGMjMiCi0gICAgICAgIGNhc2Ug
TlNGMjNGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKLSAgICAgICAgLy8g
IkYyNCIKLSAgICAgICAgY2FzZSBOU0YyNEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJu
ICJGMjQiOwotCi0gICAgICAgIC8vICJGaW5hbE1vZGUiCi0KLSAgICAgICAgLy8gIkZpbmQiCi0g
ICAgICAgIGNhc2UgTlNGaW5kRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkZpbmQi
OwotCi0gICAgICAgIC8vICJGdWxsV2lkdGgiCi0gICAgICAgIC8vICJIYWxmV2lkdGgiCi0gICAg
ICAgIC8vICJIYW5ndWxNb2RlIgotICAgICAgICAvLyAiSGFuamFNb2RlIgotCi0gICAgICAgIC8v
ICJIZWxwIgotICAgICAgICBjYXNlIE5TSGVscEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0
dXJuICJIZWxwIjsKLQotICAgICAgICAvLyAiSGlyYWdhbmEiCi0KLSAgICAgICAgLy8gIkhvbWUi
Ci0gICAgICAgIGNhc2UgTlNIb21lRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkhv
bWUiOwotICAgICAgICAvLyAiSW5zZXJ0IgotICAgICAgICBjYXNlIE5TSW5zZXJ0RnVuY3Rpb25L
ZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc2VydCI7Ci0KLSAgICAgICAgLy8gIkphcGFuZXNl
SGlyYWdhbmEiCi0gICAgICAgIC8vICJKYXBhbmVzZUthdGFrYW5hIgotICAgICAgICAvLyAiSmFw
YW5lc2VSb21hamkiCi0gICAgICAgIC8vICJKdW5qYU1vZGUiCi0gICAgICAgIC8vICJLYW5hTW9k
ZSIKLSAgICAgICAgLy8gIkthbmppTW9kZSIKLSAgICAgICAgLy8gIkthdGFrYW5hIgotICAgICAg
ICAvLyAiTGF1bmNoQXBwbGljYXRpb24xIgotICAgICAgICAvLyAiTGF1bmNoQXBwbGljYXRpb24y
IgotICAgICAgICAvLyAiTGF1bmNoTWFpbCIKLQotICAgICAgICAvLyAiTGVmdCIKLSAgICAgICAg
Y2FzZSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJMZWZ0IjsK
LQotICAgICAgICAvLyAiTWV0YSIKLSAgICAgICAgLy8gIk1lZGlhTmV4dFRyYWNrIgotICAgICAg
ICAvLyAiTWVkaWFQbGF5UGF1c2UiCi0gICAgICAgIC8vICJNZWRpYVByZXZpb3VzVHJhY2siCi0g
ICAgICAgIC8vICJNZWRpYVN0b3AiCi0KLSAgICAgICAgLy8gIk1vZGVDaGFuZ2UiCi0gICAgICAg
IGNhc2UgTlNNb2RlU3dpdGNoRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIk1vZGVD
aGFuZ2UiOwotCi0gICAgICAgIC8vICJOb25jb252ZXJ0IgotICAgICAgICAvLyAiTnVtTG9jayIK
LQotICAgICAgICAvLyAiUGFnZURvd24iCi0gICAgICAgIGNhc2UgTlNQYWdlRG93bkZ1bmN0aW9u
S2V5OgotICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biI7Ci0gICAgICAgIC8vICJQYWdlVXAi
Ci0gICAgICAgIGNhc2UgTlNQYWdlVXBGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAi
UGFnZVVwIjsKLQotICAgICAgICAvLyAiUGFzdGUiCi0KLSAgICAgICAgLy8gIlBhdXNlIgotICAg
ICAgICBjYXNlIE5TUGF1c2VGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiUGF1c2Ui
OwotCi0gICAgICAgIC8vICJQbGF5IgotICAgICAgICAvLyAiUHJldmlvdXNDYW5kaWRhdGUiCi0K
LSAgICAgICAgLy8gIlByaW50U2NyZWVuIgotICAgICAgICBjYXNlIE5TUHJpbnRTY3JlZW5GdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOwotCi0gICAgICAgIC8v
ICJQcm9jZXNzIgotICAgICAgICAvLyAiUHJvcHMiCi0KLSAgICAgICAgLy8gIlJpZ2h0IgotICAg
ICAgICBjYXNlIE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJS
aWdodCI7Ci0KLSAgICAgICAgLy8gIlJvbWFuQ2hhcmFjdGVycyIKLQotICAgICAgICAvLyAiU2Ny
b2xsIgotICAgICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAg
cmV0dXJuICJTY3JvbGwiOwotICAgICAgICAvLyAiU2VsZWN0IgotICAgICAgICBjYXNlIE5TU2Vs
ZWN0RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7Ci0KLSAgICAgICAg
Ly8gIlNlbGVjdE1lZGlhIgotICAgICAgICAvLyAiU2hpZnQiCi0KLSAgICAgICAgLy8gIlN0b3Ai
Ci0gICAgICAgIGNhc2UgTlNTdG9wRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlN0
b3AiOwotICAgICAgICAvLyAiVXAiCi0gICAgICAgIGNhc2UgTlNVcEFycm93RnVuY3Rpb25LZXk6
Ci0gICAgICAgICAgICByZXR1cm4gIlVwIjsKLSAgICAgICAgLy8gIlVuZG8iCi0gICAgICAgIGNh
c2UgTlNVbmRvRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlVuZG8iOwotCi0gICAg
ICAgIC8vICJWb2x1bWVEb3duIgotICAgICAgICAvLyAiVm9sdW1lTXV0ZSIKLSAgICAgICAgLy8g
IlZvbHVtZVVwIgotICAgICAgICAvLyAiV2luIgotICAgICAgICAvLyAiWm9vbSIKLQotICAgICAg
ICAvLyBNb3JlIGZ1bmN0aW9uIGtleXMsIG5vdCBpbiB0aGUga2V5IGlkZW50aWZpZXIgc3BlY2lm
aWNhdGlvbi4KLSAgICAgICAgY2FzZSBOU0YyNUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0
dXJuICJGMjUiOwotICAgICAgICBjYXNlIE5TRjI2RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkYyNiI7Ci0gICAgICAgIGNhc2UgTlNGMjdGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiRjI3IjsKLSAgICAgICAgY2FzZSBOU0YyOEZ1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJGMjgiOwotICAgICAgICBjYXNlIE5TRjI5RnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICByZXR1cm4gIkYyOSI7Ci0gICAgICAgIGNhc2UgTlNGMzBGdW5jdGlvbktleToKLSAgICAg
ICAgICAgIHJldHVybiAiRjMwIjsKLSAgICAgICAgY2FzZSBOU0YzMUZ1bmN0aW9uS2V5OgotICAg
ICAgICAgICAgcmV0dXJuICJGMzEiOwotICAgICAgICBjYXNlIE5TRjMyRnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYzMiI7Ci0gICAgICAgIGNhc2UgTlNGMzNGdW5jdGlvbktleToK
LSAgICAgICAgICAgIHJldHVybiAiRjMzIjsKLSAgICAgICAgY2FzZSBOU0YzNEZ1bmN0aW9uS2V5
OgotICAgICAgICAgICAgcmV0dXJuICJGMzQiOwotICAgICAgICBjYXNlIE5TRjM1RnVuY3Rpb25L
ZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzNSI7Ci0KLSAgICAgICAgLy8gVHVybiAweDdGIGlu
dG8gMHgwOCwgYmVjYXVzZSBiYWNrc3BhY2UgbmVlZHMgdG8gYWx3YXlzIGJlIDB4MDguCi0gICAg
ICAgIGNhc2UgMHg3RjoKLSAgICAgICAgICAgIHJldHVybiAiVSswMDA4IjsKLSAgICAgICAgLy8g
U3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KLSAgICAgICAgY2FzZSBOU0Rl
bGV0ZUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJVKzAwN0YiOwotICAgICAgICAg
ICAgCi0gICAgICAgIC8vIEFsd2F5cyB1c2UgMHgwOSBmb3IgdGFiIGluc3RlYWQgb2YgQXBwS2l0
J3MgYmFja3RhYiBjaGFyYWN0ZXIuCi0gICAgICAgIGNhc2UgTlNCYWNrVGFiQ2hhcmFjdGVyOgot
ICAgICAgICAgICAgcmV0dXJuICJVKzAwMDkiOwotCi0gICAgICAgIGNhc2UgTlNCZWdpbkZ1bmN0
aW9uS2V5OgotICAgICAgICBjYXNlIE5TQnJlYWtGdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBO
U0NsZWFyRGlzcGxheUZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TRGVsZXRlQ2hhckZ1bmN0
aW9uS2V5OgotICAgICAgICBjYXNlIE5TRGVsZXRlTGluZUZ1bmN0aW9uS2V5OgotICAgICAgICBj
YXNlIE5TSW5zZXJ0Q2hhckZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TSW5zZXJ0TGluZUZ1
bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TTmV4dEZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNl
IE5TUHJldkZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TUHJpbnRGdW5jdGlvbktleToKLSAg
ICAgICAgY2FzZSBOU1JlZG9GdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU1Jlc2V0RnVuY3Rp
b25LZXk6Ci0gICAgICAgIGNhc2UgTlNTeXNSZXFGdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBO
U1N5c3RlbUZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TVXNlckZ1bmN0aW9uS2V5OgotICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gdGhl
IHZlbmRvci1hcmVhIFVuaWNvZGUgdmFsdWVzIGZvciB0aGUgYWJvdmUga2V5cy4KLSAgICAgICAg
ICAgIC8vIEZvciBub3csIGp1c3QgZmFsbCB0aHJvdWdoIHRvIHRoZSBkZWZhdWx0LgotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJVKyUwNFgiLCB0
b0FTQ0lJVXBwZXIoYykpOwotICAgIH0KKworICAgIHJldHVybiBrZXlJZGVudGlmaWVyRm9yS2V5
RXZlbnRDaGFyYWN0ZXJzKFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdKTsKIH0K
IAogc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChOU0V2ZW50KiBldmVudCkKQEAgLTM5NiwzNzQg
KzEwNyw2IEBAIHN0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQoTlNFdmVudCogZXZlbnQKICAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQo
TlNFdmVudCogZXZlbnQpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAg
ICAgLy8gVktfVEFCICgwOSkgVEFCIGtleQotICAgICAgICBjYXNlIDQ4OiByZXR1cm4gMHgwOTsK
LQotICAgICAgICAvLyBWS19BUFBTICg1RCkgUmlnaHQgd2luZG93cy9tZXRhIGtleQotICAgICAg
ICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAgICAgICAgICByZXR1cm4gMHg1RDsKLSAg
ICAgICAgICAgIAotICAgICAgICAvLyBWS19MV0lOICg1QikgTGVmdCB3aW5kb3dzL21ldGEga2V5
Ci0gICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAotICAgICAgICAgICAgcmV0dXJuIDB4
NUI7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktfQ0FQSVRBTCAoMTQpIGNhcHMgbG9ja3Mg
a2V5Ci0gICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCi0gICAgICAgICAgICByZXR1cm4gMHgx
NDsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBWS19TSElGVCAoMTApIGVpdGhlciBzaGlmdCBr
ZXkKLSAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAotICAgICAgICBjYXNlIDYwOiAvLyBS
aWdodCBTaGlmdAotICAgICAgICAgICAgcmV0dXJuIDB4MTA7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgLy8gVktfTUVOVSAoMTIpIGVpdGhlciBhbHQga2V5Ci0gICAgICAgIGNhc2UgNTg6IC8vIExl
ZnQgQWx0Ci0gICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAgICAgcmV0dXJu
IDB4MTI7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktfQ09OVFJPTCAoMTEpIGVpdGhlciBj
dHJsIGtleQotICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKLSAgICAgICAgY2FzZSA2Mjog
Ly8gUmlnaHQgQ3RybAotICAgICAgICAgICAgcmV0dXJuIDB4MTE7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgLy8gVktfQ0xFQVIgKDBDKSBDTEVBUiBrZXkKLSAgICAgICAgY2FzZSA3MTogcmV0dXJu
IDB4MEM7Ci0KLSAgICAgICAgLy8gVktfTlVNUEFEMCAoNjApIE51bWVyaWMga2V5cGFkIDAga2V5
Ci0gICAgICAgIGNhc2UgODI6IHJldHVybiAweDYwOwotICAgICAgICAvLyBWS19OVU1QQUQxICg2
MSkgTnVtZXJpYyBrZXlwYWQgMSBrZXkKLSAgICAgICAgY2FzZSA4MzogcmV0dXJuIDB4NjE7Ci0g
ICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQotICAgICAgICBj
YXNlIDg0OiByZXR1cm4gMHg2MjsKLSAgICAgICAgLy8gVktfTlVNUEFEMyAoNjMpIE51bWVyaWMg
a2V5cGFkIDMga2V5Ci0gICAgICAgIGNhc2UgODU6IHJldHVybiAweDYzOwotICAgICAgICAvLyBW
S19OVU1QQUQ0ICg2NCkgTnVtZXJpYyBrZXlwYWQgNCBrZXkKLSAgICAgICAgY2FzZSA4NjogcmV0
dXJuIDB4NjQ7Ci0gICAgICAgIC8vIFZLX05VTVBBRDUgKDY1KSBOdW1lcmljIGtleXBhZCA1IGtl
eQotICAgICAgICBjYXNlIDg3OiByZXR1cm4gMHg2NTsKLSAgICAgICAgLy8gVktfTlVNUEFENiAo
NjYpIE51bWVyaWMga2V5cGFkIDYga2V5Ci0gICAgICAgIGNhc2UgODg6IHJldHVybiAweDY2Owot
ICAgICAgICAvLyBWS19OVU1QQUQ3ICg2NykgTnVtZXJpYyBrZXlwYWQgNyBrZXkKLSAgICAgICAg
Y2FzZSA4OTogcmV0dXJuIDB4Njc7Ci0gICAgICAgIC8vIFZLX05VTVBBRDggKDY4KSBOdW1lcmlj
IGtleXBhZCA4IGtleQotICAgICAgICBjYXNlIDkxOiByZXR1cm4gMHg2ODsKLSAgICAgICAgLy8g
VktfTlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5Ci0gICAgICAgIGNhc2UgOTI6IHJl
dHVybiAweDY5OwotICAgICAgICAvLyBWS19NVUxUSVBMWSAoNkEpIE11bHRpcGx5IGtleQotICAg
ICAgICBjYXNlIDY3OiByZXR1cm4gMHg2QTsKLSAgICAgICAgLy8gVktfQUREICg2QikgQWRkIGtl
eQotICAgICAgICBjYXNlIDY5OiByZXR1cm4gMHg2QjsKLQotICAgICAgICAvLyBWS19TVUJUUkFD
VCAoNkQpIFN1YnRyYWN0IGtleQotICAgICAgICBjYXNlIDc4OiByZXR1cm4gMHg2RDsKLSAgICAg
ICAgLy8gVktfREVDSU1BTCAoNkUpIERlY2ltYWwga2V5Ci0gICAgICAgIGNhc2UgNjU6IHJldHVy
biAweDZFOwotICAgICAgICAvLyBWS19ESVZJREUgKDZGKSBEaXZpZGUga2V5Ci0gICAgICAgIGNh
c2UgNzU6IHJldHVybiAweDZGOwotICAgICB9Ci0KLSAgICBOU1N0cmluZyogcyA9IFtldmVudCBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChbcyBsZW5ndGhdICE9IDEpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgc3dpdGNoIChbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKSB7
Ci0gICAgICAgIC8vIFZLX0xCVVRUT04gKDAxKSBMZWZ0IG1vdXNlIGJ1dHRvbgotICAgICAgICAv
LyBWS19SQlVUVE9OICgwMikgUmlnaHQgbW91c2UgYnV0dG9uCi0gICAgICAgIC8vIFZLX0NBTkNF
TCAoMDMpIENvbnRyb2wtYnJlYWsgcHJvY2Vzc2luZwotICAgICAgICAvLyBWS19NQlVUVE9OICgw
NCkgTWlkZGxlIG1vdXNlIGJ1dHRvbiAodGhyZWUtYnV0dG9uIG1vdXNlKQotICAgICAgICAvLyBW
S19YQlVUVE9OMSAoMDUpCi0gICAgICAgIC8vIFZLX1hCVVRUT04yICgwNikKLQotICAgICAgICAv
LyBWS19CQUNLICgwOCkgQkFDS1NQQUNFIGtleQotICAgICAgICBjYXNlIDg6IGNhc2UgMHg3Rjog
cmV0dXJuIDB4MDg7Ci0gICAgICAgIC8vIFZLX1RBQiAoMDkpIFRBQiBrZXkKLSAgICAgICAgY2Fz
ZSA5OiByZXR1cm4gMHgwOTsKLQotICAgICAgICAvLyBWS19DTEVBUiAoMEMpIENMRUFSIGtleQot
ICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFib3ZlCi0KLSAgICAgICAgLy8gVktfUkVU
VVJOICgwRCkKLSAgICAgICAgY2FzZSAweEQ6IGNhc2UgMzogcmV0dXJuIDB4MEQ7Ci0KLSAgICAg
ICAgLy8gVktfU0hJRlQgKDEwKSBTSElGVCBrZXkKLSAgICAgICAgLy8gVktfQ09OVFJPTCAoMTEp
IENUUkwga2V5Ci0gICAgICAgIC8vIFZLX01FTlUgKDEyKSBBTFQga2V5Ci0KLSAgICAgICAgLy8g
VktfUEFVU0UgKDEzKSBQQVVTRSBrZXkKLSAgICAgICAgY2FzZSBOU1BhdXNlRnVuY3Rpb25LZXk6
IHJldHVybiAweDEzOwotCi0gICAgICAgIC8vIFZLX0NBUElUQUwgKDE0KSBDQVBTIExPQ0sga2V5
Ci0gICAgICAgIC8vIFZLX0tBTkEgKDE1KSBJbnB1dCBNZXRob2QgRWRpdG9yIChJTUUpIEthbmEg
bW9kZQotICAgICAgICAvLyBWS19IQU5HVUVMICgxNSkgSU1FIEhhbmd1ZWwgbW9kZSAobWFpbnRh
aW5lZCBmb3IgY29tcGF0aWJpbGl0eTsgdXNlIFZLX0hBTkdVTCkKLSAgICAgICAgLy8gVktfSEFO
R1VMICgxNSkgSU1FIEhhbmd1bCBtb2RlCi0gICAgICAgIC8vIFZLX0pVTkpBICgxNykgSU1FIEp1
bmphIG1vZGUKLSAgICAgICAgLy8gVktfRklOQUwgKDE4KSBJTUUgZmluYWwgbW9kZQotICAgICAg
ICAvLyBWS19IQU5KQSAoMTkpIElNRSBIYW5qYSBtb2RlCi0gICAgICAgIC8vIFZLX0tBTkpJICgx
OSkgSU1FIEthbmppIG1vZGUKLQotICAgICAgICAvLyBWS19FU0NBUEUgKDFCKSBFU0Mga2V5Ci0g
ICAgICAgIGNhc2UgMHgxQjogcmV0dXJuIDB4MUI7Ci0KLSAgICAgICAgLy8gVktfQ09OVkVSVCAo
MUMpIElNRSBjb252ZXJ0Ci0gICAgICAgIC8vIFZLX05PTkNPTlZFUlQgKDFEKSBJTUUgbm9uY29u
dmVydAotICAgICAgICAvLyBWS19BQ0NFUFQgKDFFKSBJTUUgYWNjZXB0Ci0gICAgICAgIC8vIFZL
X01PREVDSEFOR0UgKDFGKSBJTUUgbW9kZSBjaGFuZ2UgcmVxdWVzdAotCi0gICAgICAgIC8vIFZL
X1NQQUNFICgyMCkgU1BBQ0VCQVIKLSAgICAgICAgY2FzZSAnICc6IHJldHVybiAweDIwOwotICAg
ICAgICAvLyBWS19QUklPUiAoMjEpIFBBR0UgVVAga2V5Ci0gICAgICAgIGNhc2UgTlNQYWdlVXBG
dW5jdGlvbktleTogcmV0dXJuIDB4MjE7Ci0gICAgICAgIC8vIFZLX05FWFQgKDIyKSBQQUdFIERP
V04ga2V5Ci0gICAgICAgIGNhc2UgTlNQYWdlRG93bkZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyMjsK
LSAgICAgICAgLy8gVktfRU5EICgyMykgRU5EIGtleQotICAgICAgICBjYXNlIE5TRW5kRnVuY3Rp
b25LZXk6IHJldHVybiAweDIzOwotICAgICAgICAvLyBWS19IT01FICgyNCkgSE9NRSBrZXkKLSAg
ICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleTogcmV0dXJuIDB4MjQ7Ci0gICAgICAgIC8vIFZL
X0xFRlQgKDI1KSBMRUZUIEFSUk9XIGtleQotICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rp
b25LZXk6IHJldHVybiAweDI1OwotICAgICAgICAvLyBWS19VUCAoMjYpIFVQIEFSUk9XIGtleQot
ICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgyNjsKLSAgICAgICAg
Ly8gVktfUklHSFQgKDI3KSBSSUdIVCBBUlJPVyBrZXkKLSAgICAgICAgY2FzZSBOU1JpZ2h0QXJy
b3dGdW5jdGlvbktleTogcmV0dXJuIDB4Mjc7Ci0gICAgICAgIC8vIFZLX0RPV04gKDI4KSBET1dO
IEFSUk9XIGtleQotICAgICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6IHJldHVybiAw
eDI4OwotICAgICAgICAvLyBWS19TRUxFQ1QgKDI5KSBTRUxFQ1Qga2V5Ci0gICAgICAgIGNhc2Ug
TlNTZWxlY3RGdW5jdGlvbktleTogcmV0dXJuIDB4Mjk7Ci0gICAgICAgIC8vIFZLX1BSSU5UICgy
QSkgUFJJTlQga2V5Ci0gICAgICAgIGNhc2UgTlNQcmludEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgy
QTsKLSAgICAgICAgLy8gVktfRVhFQ1VURSAoMkIpIEVYRUNVVEUga2V5Ci0gICAgICAgIGNhc2Ug
TlNFeGVjdXRlRnVuY3Rpb25LZXk6IHJldHVybiAweDJCOwotICAgICAgICAvLyBWS19TTkFQU0hP
VCAoMkMpIFBSSU5UIFNDUkVFTiBrZXkKLSAgICAgICAgY2FzZSBOU1ByaW50U2NyZWVuRnVuY3Rp
b25LZXk6IHJldHVybiAweDJDOwotICAgICAgICAvLyBWS19JTlNFUlQgKDJEKSBJTlMga2V5Ci0g
ICAgICAgIGNhc2UgTlNJbnNlcnRGdW5jdGlvbktleTogY2FzZSBOU0hlbHBGdW5jdGlvbktleTog
cmV0dXJuIDB4MkQ7Ci0gICAgICAgIC8vIFZLX0RFTEVURSAoMkUpIERFTCBrZXkKLSAgICAgICAg
Y2FzZSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyRTsKLQotICAgICAgICAvLyBWS19I
RUxQICgyRikgSEVMUCBrZXkKLQotICAgICAgICAvLyAgKDMwKSAwIGtleQotICAgICAgICBjYXNl
ICcwJzogY2FzZSAnKSc6IHJldHVybiAweDMwOwotICAgICAgICAvLyAgKDMxKSAxIGtleQotICAg
ICAgICBjYXNlICcxJzogY2FzZSAnISc6IHJldHVybiAweDMxOwotICAgICAgICAvLyAgKDMyKSAy
IGtleQotICAgICAgICBjYXNlICcyJzogY2FzZSAnQCc6IHJldHVybiAweDMyOwotICAgICAgICAv
LyAgKDMzKSAzIGtleQotICAgICAgICBjYXNlICczJzogY2FzZSAnIyc6IHJldHVybiAweDMzOwot
ICAgICAgICAvLyAgKDM0KSA0IGtleQotICAgICAgICBjYXNlICc0JzogY2FzZSAnJCc6IHJldHVy
biAweDM0OwotICAgICAgICAvLyAgKDM1KSA1IGtleQotICAgICAgICBjYXNlICc1JzogY2FzZSAn
JSc6IHJldHVybiAweDM1OwotICAgICAgICAvLyAgKDM2KSA2IGtleQotICAgICAgICBjYXNlICc2
JzogY2FzZSAnXic6IHJldHVybiAweDM2OwotICAgICAgICAvLyAgKDM3KSA3IGtleQotICAgICAg
ICBjYXNlICc3JzogY2FzZSAnJic6IHJldHVybiAweDM3OwotICAgICAgICAvLyAgKDM4KSA4IGtl
eQotICAgICAgICBjYXNlICc4JzogY2FzZSAnKic6IHJldHVybiAweDM4OwotICAgICAgICAvLyAg
KDM5KSA5IGtleQotICAgICAgICBjYXNlICc5JzogY2FzZSAnKCc6IHJldHVybiAweDM5OwotICAg
ICAgICAvLyAgKDQxKSBBIGtleQotICAgICAgICBjYXNlICdhJzogY2FzZSAnQSc6IHJldHVybiAw
eDQxOwotICAgICAgICAvLyAgKDQyKSBCIGtleQotICAgICAgICBjYXNlICdiJzogY2FzZSAnQic6
IHJldHVybiAweDQyOwotICAgICAgICAvLyAgKDQzKSBDIGtleQotICAgICAgICBjYXNlICdjJzog
Y2FzZSAnQyc6IHJldHVybiAweDQzOwotICAgICAgICAvLyAgKDQ0KSBEIGtleQotICAgICAgICBj
YXNlICdkJzogY2FzZSAnRCc6IHJldHVybiAweDQ0OwotICAgICAgICAvLyAgKDQ1KSBFIGtleQot
ICAgICAgICBjYXNlICdlJzogY2FzZSAnRSc6IHJldHVybiAweDQ1OwotICAgICAgICAvLyAgKDQ2
KSBGIGtleQotICAgICAgICBjYXNlICdmJzogY2FzZSAnRic6IHJldHVybiAweDQ2OwotICAgICAg
ICAvLyAgKDQ3KSBHIGtleQotICAgICAgICBjYXNlICdnJzogY2FzZSAnRyc6IHJldHVybiAweDQ3
OwotICAgICAgICAvLyAgKDQ4KSBIIGtleQotICAgICAgICBjYXNlICdoJzogY2FzZSAnSCc6IHJl
dHVybiAweDQ4OwotICAgICAgICAvLyAgKDQ5KSBJIGtleQotICAgICAgICBjYXNlICdpJzogY2Fz
ZSAnSSc6IHJldHVybiAweDQ5OwotICAgICAgICAvLyAgKDRBKSBKIGtleQotICAgICAgICBjYXNl
ICdqJzogY2FzZSAnSic6IHJldHVybiAweDRBOwotICAgICAgICAvLyAgKDRCKSBLIGtleQotICAg
ICAgICBjYXNlICdrJzogY2FzZSAnSyc6IHJldHVybiAweDRCOwotICAgICAgICAvLyAgKDRDKSBM
IGtleQotICAgICAgICBjYXNlICdsJzogY2FzZSAnTCc6IHJldHVybiAweDRDOwotICAgICAgICAv
LyAgKDREKSBNIGtleQotICAgICAgICBjYXNlICdtJzogY2FzZSAnTSc6IHJldHVybiAweDREOwot
ICAgICAgICAvLyAgKDRFKSBOIGtleQotICAgICAgICBjYXNlICduJzogY2FzZSAnTic6IHJldHVy
biAweDRFOwotICAgICAgICAvLyAgKDRGKSBPIGtleQotICAgICAgICBjYXNlICdvJzogY2FzZSAn
Tyc6IHJldHVybiAweDRGOwotICAgICAgICAvLyAgKDUwKSBQIGtleQotICAgICAgICBjYXNlICdw
JzogY2FzZSAnUCc6IHJldHVybiAweDUwOwotICAgICAgICAvLyAgKDUxKSBRIGtleQotICAgICAg
ICBjYXNlICdxJzogY2FzZSAnUSc6IHJldHVybiAweDUxOwotICAgICAgICAvLyAgKDUyKSBSIGtl
eQotICAgICAgICBjYXNlICdyJzogY2FzZSAnUic6IHJldHVybiAweDUyOwotICAgICAgICAvLyAg
KDUzKSBTIGtleQotICAgICAgICBjYXNlICdzJzogY2FzZSAnUyc6IHJldHVybiAweDUzOwotICAg
ICAgICAvLyAgKDU0KSBUIGtleQotICAgICAgICBjYXNlICd0JzogY2FzZSAnVCc6IHJldHVybiAw
eDU0OwotICAgICAgICAvLyAgKDU1KSBVIGtleQotICAgICAgICBjYXNlICd1JzogY2FzZSAnVSc6
IHJldHVybiAweDU1OwotICAgICAgICAvLyAgKDU2KSBWIGtleQotICAgICAgICBjYXNlICd2Jzog
Y2FzZSAnVic6IHJldHVybiAweDU2OwotICAgICAgICAvLyAgKDU3KSBXIGtleQotICAgICAgICBj
YXNlICd3JzogY2FzZSAnVyc6IHJldHVybiAweDU3OwotICAgICAgICAvLyAgKDU4KSBYIGtleQot
ICAgICAgICBjYXNlICd4JzogY2FzZSAnWCc6IHJldHVybiAweDU4OwotICAgICAgICAvLyAgKDU5
KSBZIGtleQotICAgICAgICBjYXNlICd5JzogY2FzZSAnWSc6IHJldHVybiAweDU5OwotICAgICAg
ICAvLyAgKDVBKSBaIGtleQotICAgICAgICBjYXNlICd6JzogY2FzZSAnWic6IHJldHVybiAweDVB
OwotCi0gICAgICAgIC8vIFZLX0xXSU4gKDVCKSBMZWZ0IFdpbmRvd3Mga2V5IChNaWNyb3NvZnQg
TmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgLy8gVktfUldJTiAoNUMpIFJpZ2h0IFdpbmRvd3Mg
a2V5IChOYXR1cmFsIGtleWJvYXJkKQotICAgICAgICAvLyBWS19BUFBTICg1RCkgQXBwbGljYXRp
b25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgLy8gVktfU0xFRVAgKDVGKSBDb21w
dXRlciBTbGVlcCBrZXkKLQotICAgICAgICAvLyBWS19OVU1QQUQwICg2MCkgTnVtZXJpYyBrZXlw
YWQgMCBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFEMSAoNjEpIE51bWVyaWMga2V5cGFkIDEga2V5
Ci0gICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQotICAgICAg
ICAvLyBWS19OVU1QQUQzICg2MykgTnVtZXJpYyBrZXlwYWQgMyBrZXkKLSAgICAgICAgLy8gVktf
TlVNUEFENCAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDUg
KDY1KSBOdW1lcmljIGtleXBhZCA1IGtleQotICAgICAgICAvLyBWS19OVU1QQUQ2ICg2NikgTnVt
ZXJpYyBrZXlwYWQgNiBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFENyAoNjcpIE51bWVyaWMga2V5
cGFkIDcga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDggKDY4KSBOdW1lcmljIGtleXBhZCA4IGtl
eQotICAgICAgICAvLyBWS19OVU1QQUQ5ICg2OSkgTnVtZXJpYyBrZXlwYWQgOSBrZXkKLSAgICAg
ICAgLy8gVktfTVVMVElQTFkgKDZBKSBNdWx0aXBseSBrZXkKLSAgICAgICAgLy8gVktfQUREICg2
QikgQWRkIGtleQotICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFib3ZlCi0KLSAgICAg
ICAgLy8gVktfU0VQQVJBVE9SICg2QykgU2VwYXJhdG9yIGtleQotCi0gICAgICAgIC8vIFZLX1NV
QlRSQUNUICg2RCkgU3VidHJhY3Qga2V5Ci0gICAgICAgIC8vIFZLX0RFQ0lNQUwgKDZFKSBEZWNp
bWFsIGtleQotICAgICAgICAvLyBWS19ESVZJREUgKDZGKSBEaXZpZGUga2V5Ci0gICAgICAgIC8v
IGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKLQotICAgICAgICAvLyBWS19GMSAoNzApIEYxIGtl
eQotICAgICAgICBjYXNlIE5TRjFGdW5jdGlvbktleTogcmV0dXJuIDB4NzA7Ci0gICAgICAgIC8v
IFZLX0YyICg3MSkgRjIga2V5Ci0gICAgICAgIGNhc2UgTlNGMkZ1bmN0aW9uS2V5OiByZXR1cm4g
MHg3MTsKLSAgICAgICAgLy8gVktfRjMgKDcyKSBGMyBrZXkKLSAgICAgICAgY2FzZSBOU0YzRnVu
Y3Rpb25LZXk6IHJldHVybiAweDcyOwotICAgICAgICAvLyBWS19GNCAoNzMpIEY0IGtleQotICAg
ICAgICBjYXNlIE5TRjRGdW5jdGlvbktleTogcmV0dXJuIDB4NzM7Ci0gICAgICAgIC8vIFZLX0Y1
ICg3NCkgRjUga2V5Ci0gICAgICAgIGNhc2UgTlNGNUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3NDsK
LSAgICAgICAgLy8gVktfRjYgKDc1KSBGNiBrZXkKLSAgICAgICAgY2FzZSBOU0Y2RnVuY3Rpb25L
ZXk6IHJldHVybiAweDc1OwotICAgICAgICAvLyBWS19GNyAoNzYpIEY3IGtleQotICAgICAgICBj
YXNlIE5TRjdGdW5jdGlvbktleTogcmV0dXJuIDB4NzY7Ci0gICAgICAgIC8vIFZLX0Y4ICg3Nykg
Rjgga2V5Ci0gICAgICAgIGNhc2UgTlNGOEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3NzsKLSAgICAg
ICAgLy8gVktfRjkgKDc4KSBGOSBrZXkKLSAgICAgICAgY2FzZSBOU0Y5RnVuY3Rpb25LZXk6IHJl
dHVybiAweDc4OwotICAgICAgICAvLyBWS19GMTAgKDc5KSBGMTAga2V5Ci0gICAgICAgIGNhc2Ug
TlNGMTBGdW5jdGlvbktleTogcmV0dXJuIDB4Nzk7Ci0gICAgICAgIC8vIFZLX0YxMSAoN0EpIEYx
MSBrZXkKLSAgICAgICAgY2FzZSBOU0YxMUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3QTsKLSAgICAg
ICAgLy8gVktfRjEyICg3QikgRjEyIGtleQotICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6
IHJldHVybiAweDdCOwotICAgICAgICAvLyBWS19GMTMgKDdDKSBGMTMga2V5Ci0gICAgICAgIGNh
c2UgTlNGMTNGdW5jdGlvbktleTogcmV0dXJuIDB4N0M7Ci0gICAgICAgIC8vIFZLX0YxNCAoN0Qp
IEYxNCBrZXkKLSAgICAgICAgY2FzZSBOU0YxNEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3RDsKLSAg
ICAgICAgLy8gVktfRjE1ICg3RSkgRjE1IGtleQotICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25L
ZXk6IHJldHVybiAweDdFOwotICAgICAgICAvLyBWS19GMTYgKDdGKSBGMTYga2V5Ci0gICAgICAg
IGNhc2UgTlNGMTZGdW5jdGlvbktleTogcmV0dXJuIDB4N0Y7Ci0gICAgICAgIC8vIFZLX0YxNyAo
ODBIKSBGMTcga2V5Ci0gICAgICAgIGNhc2UgTlNGMTdGdW5jdGlvbktleTogcmV0dXJuIDB4ODA7
Ci0gICAgICAgIC8vIFZLX0YxOCAoODFIKSBGMTgga2V5Ci0gICAgICAgIGNhc2UgTlNGMThGdW5j
dGlvbktleTogcmV0dXJuIDB4ODE7Ci0gICAgICAgIC8vIFZLX0YxOSAoODJIKSBGMTkga2V5Ci0g
ICAgICAgIGNhc2UgTlNGMTlGdW5jdGlvbktleTogcmV0dXJuIDB4ODI7Ci0gICAgICAgIC8vIFZL
X0YyMCAoODNIKSBGMjAga2V5Ci0gICAgICAgIGNhc2UgTlNGMjBGdW5jdGlvbktleTogcmV0dXJu
IDB4ODM7Ci0gICAgICAgIC8vIFZLX0YyMSAoODRIKSBGMjEga2V5Ci0gICAgICAgIGNhc2UgTlNG
MjFGdW5jdGlvbktleTogcmV0dXJuIDB4ODQ7Ci0gICAgICAgIC8vIFZLX0YyMiAoODVIKSBGMjIg
a2V5Ci0gICAgICAgIGNhc2UgTlNGMjJGdW5jdGlvbktleTogcmV0dXJuIDB4ODU7Ci0gICAgICAg
IC8vIFZLX0YyMyAoODZIKSBGMjMga2V5Ci0gICAgICAgIGNhc2UgTlNGMjNGdW5jdGlvbktleTog
cmV0dXJuIDB4ODY7Ci0gICAgICAgIC8vIFZLX0YyNCAoODdIKSBGMjQga2V5Ci0gICAgICAgIGNh
c2UgTlNGMjRGdW5jdGlvbktleTogcmV0dXJuIDB4ODc7Ci0KLSAgICAgICAgLy8gVktfTlVNTE9D
SyAoOTApIE5VTSBMT0NLIGtleQotCi0gICAgICAgIC8vIFZLX1NDUk9MTCAoOTEpIFNDUk9MTCBM
T0NLIGtleQotICAgICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg5
MTsKLQotICAgICAgICAvLyBWS19MU0hJRlQgKEEwKSBMZWZ0IFNISUZUIGtleQotICAgICAgICAv
LyBWS19SU0hJRlQgKEExKSBSaWdodCBTSElGVCBrZXkKLSAgICAgICAgLy8gVktfTENPTlRST0wg
KEEyKSBMZWZ0IENPTlRST0wga2V5Ci0gICAgICAgIC8vIFZLX1JDT05UUk9MIChBMykgUmlnaHQg
Q09OVFJPTCBrZXkKLSAgICAgICAgLy8gVktfTE1FTlUgKEE0KSBMZWZ0IE1FTlUga2V5Ci0gICAg
ICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkKLSAgICAgICAgLy8gVktfQlJPV1NF
Ul9CQUNLIChBNikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEJhY2sga2V5Ci0gICAgICAgIC8v
IFZLX0JST1dTRVJfRk9SV0FSRCAoQTcpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBGb3J3YXJk
IGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX1JFRlJFU0ggKEE4KSBXaW5kb3dzIDIwMDAvWFA6
IEJyb3dzZXIgUmVmcmVzaCBrZXkKLSAgICAgICAgLy8gVktfQlJPV1NFUl9TVE9QIChBOSkgV2lu
ZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0b3Aga2V5Ci0gICAgICAgIC8vIFZLX0JST1dTRVJfU0VB
UkNIIChBQSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFNlYXJjaCBrZXkKLSAgICAgICAgLy8g
VktfQlJPV1NFUl9GQVZPUklURVMgKEFCKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgRmF2b3Jp
dGVzIGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX0hPTUUgKEFDKSBXaW5kb3dzIDIwMDAvWFA6
IEJyb3dzZXIgU3RhcnQgYW5kIEhvbWUga2V5Ci0gICAgICAgIC8vIFZLX1ZPTFVNRV9NVVRFIChB
RCkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgTXV0ZSBrZXkKLSAgICAgICAgLy8gVktfVk9MVU1F
X0RPV04gKEFFKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBEb3duIGtleQotICAgICAgICAvLyBW
S19WT0xVTUVfVVAgKEFGKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBVcCBrZXkKLSAgICAgICAg
Ly8gVktfTUVESUFfTkVYVF9UUkFDSyAoQjApIFdpbmRvd3MgMjAwMC9YUDogTmV4dCBUcmFjayBr
ZXkKLSAgICAgICAgLy8gVktfTUVESUFfUFJFVl9UUkFDSyAoQjEpIFdpbmRvd3MgMjAwMC9YUDog
UHJldmlvdXMgVHJhY2sga2V5Ci0gICAgICAgIC8vIFZLX01FRElBX1NUT1AgKEIyKSBXaW5kb3dz
IDIwMDAvWFA6IFN0b3AgTWVkaWEga2V5Ci0gICAgICAgIC8vIFZLX01FRElBX1BMQVlfUEFVU0Ug
KEIzKSBXaW5kb3dzIDIwMDAvWFA6IFBsYXkvUGF1c2UgTWVkaWEga2V5Ci0gICAgICAgIC8vIFZL
X0xBVU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBTdGFydCBNYWlsIGtleQotICAgICAg
ICAvLyBWS19MQVVOQ0hfTUVESUFfU0VMRUNUIChCNSkgV2luZG93cyAyMDAwL1hQOiBTZWxlY3Qg
TWVkaWEga2V5Ci0gICAgICAgIC8vIFZLX0xBVU5DSF9BUFAxIChCNikgV2luZG93cyAyMDAwL1hQ
OiBTdGFydCBBcHBsaWNhdGlvbiAxIGtleQotICAgICAgICAvLyBWS19MQVVOQ0hfQVBQMiAoQjcp
IFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMiBrZXkKLQotICAgICAgICAvLyBW
S19PRU1fMSAoQkEpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZh
cnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXli
b2FyZCwgdGhlICc7Oicga2V5Ci0gICAgICAgIGNhc2UgJzsnOiBjYXNlICc6JzogcmV0dXJuIDB4
QkE7Ci0gICAgICAgIC8vIFZLX09FTV9QTFVTIChCQikgV2luZG93cyAyMDAwL1hQOiBGb3IgYW55
IGNvdW50cnkvcmVnaW9uLCB0aGUgJysnIGtleQotICAgICAgICBjYXNlICc9JzogY2FzZSAnKyc6
IHJldHVybiAweEJCOwotICAgICAgICAvLyBWS19PRU1fQ09NTUEgKEJDKSBXaW5kb3dzIDIwMDAv
WFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLCcga2V5Ci0gICAgICAgIGNhc2UgJywn
OiBjYXNlICc8JzogcmV0dXJuIDB4QkM7Ci0gICAgICAgIC8vIFZLX09FTV9NSU5VUyAoQkQpIFdp
bmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICctJyBrZXkKLSAgICAg
ICAgY2FzZSAnLSc6IGNhc2UgJ18nOiByZXR1cm4gMHhCRDsKLSAgICAgICAgLy8gVktfT0VNX1BF
UklPRCAoQkUpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcu
JyBrZXkKLSAgICAgICAgY2FzZSAnLic6IGNhc2UgJz4nOiByZXR1cm4gMHhCRTsKLSAgICAgICAg
Ly8gVktfT0VNXzIgKEJGKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNh
biB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQg
a2V5Ym9hcmQsIHRoZSAnLz8nIGtleQotICAgICAgICBjYXNlICcvJzogY2FzZSAnPyc6IHJldHVy
biAweEJGOwotICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMg
Y2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9y
IHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficga2V5Ci0gICAgICAgIGNhc2UgJ2An
OiBjYXNlICd+JzogcmV0dXJuIDB4QzA7Ci0gICAgICAgIC8vIFZLX09FTV80IChEQikgVXNlZCBm
b3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2lu
ZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ1t7JyBrZXkK
LSAgICAgICAgY2FzZSAnWyc6IGNhc2UgJ3snOiByZXR1cm4gMHhEQjsKLSAgICAgICAgLy8gVktf
T0VNXzUgKERDKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5
IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9h
cmQsIHRoZSAnXHwnIGtleQotICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ3wnOiByZXR1cm4gMHhE
QzsKLSAgICAgICAgLy8gVktfT0VNXzYgKEREKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJh
Y3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUg
VVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXX0nIGtleQotICAgICAgICBjYXNlICddJzogY2Fz
ZSAnfSc6IHJldHVybiAweEREOwotICAgICAgICAvLyBWS19PRU1fNyAoREUpIFVzZWQgZm9yIG1p
c2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3Mg
MjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdzaW5nbGUtcXVvdGUv
ZG91YmxlLXF1b3RlJyBrZXkKLSAgICAgICAgY2FzZSAnXCcnOiBjYXNlICciJzogcmV0dXJuIDB4
REU7Ci0KLSAgICAgICAgLy8gVktfT0VNXzggKERGKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNo
YXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLgotICAgICAgICAvLyBWS19PRU1fMTAy
IChFMikgV2luZG93cyAyMDAwL1hQOiBFaXRoZXIgdGhlIGFuZ2xlIGJyYWNrZXQga2V5IG9yIHRo
ZSBiYWNrc2xhc2gga2V5IG9uIHRoZSBSVCAxMDIta2V5IGtleWJvYXJkCi0gICAgICAgIC8vIFZL
X1BST0NFU1NLRVkgKEU1KSBXaW5kb3dzIDk1Lzk4L01lLCBXaW5kb3dzIE5UIDQuMCwgV2luZG93
cyAyMDAwL1hQOiBJTUUgUFJPQ0VTUyBrZXkKLSAgICAgICAgLy8gVktfUEFDS0VUIChFNykgV2lu
ZG93cyAyMDAwL1hQOiBVc2VkIHRvIHBhc3MgVW5pY29kZSBjaGFyYWN0ZXJzIGFzIGlmIHRoZXkg
d2VyZSBrZXlzdHJva2VzLiBUaGUgVktfUEFDS0VUIGtleSBpcyB0aGUgbG93IHdvcmQgb2YgYSAz
Mi1iaXQgVmlydHVhbCBLZXkgdmFsdWUgdXNlZCBmb3Igbm9uLWtleWJvYXJkIGlucHV0IG1ldGhv
ZHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgUmVtYXJrIGluIEtFWUJESU5QVVQsU2VuZElu
cHV0LCBXTV9LRVlET1dOLCBhbmQgV01fS0VZVVAKLSAgICAgICAgLy8gVktfQVRUTiAoRjYpIEF0
dG4ga2V5Ci0gICAgICAgIC8vIFZLX0NSU0VMIChGNykgQ3JTZWwga2V5Ci0gICAgICAgIC8vIFZL
X0VYU0VMIChGOCkgRXhTZWwga2V5Ci0gICAgICAgIC8vIFZLX0VSRU9GIChGOSkgRXJhc2UgRU9G
IGtleQotICAgICAgICAvLyBWS19QTEFZIChGQSkgUGxheSBrZXkKLSAgICAgICAgLy8gVktfWk9P
TSAoRkIpIFpvb20ga2V5Ci0gICAgICAgIC8vIFZLX05PTkFNRSAoRkMpIFJlc2VydmVkIGZvciBm
dXR1cmUgdXNlCi0gICAgICAgIC8vIFZLX1BBMSAoRkQpIFBBMSBrZXkKLSAgICAgICAgLy8gVktf
T0VNX0NMRUFSIChGRSkgQ2xlYXIga2V5Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQoTlNFdmVudCAqZXZlbnQpCiB7CiAgICAgaWYg
KFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkKQEAgLTgxNyw3ICsxNjAsNyBAQCBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiAgICAgLCBtX3VubW9kaWZpZWRU
ZXh0KHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50KSkKICAgICAsIG1fa2V5SWRlbnRpZmll
cihrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQpKQogICAgICwgbV9hdXRvUmVwZWF0KChb
ZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpICYmIFtldmVudCBpc0FSZXBlYXRdKQotICAg
ICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVu
dCkpCisgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvcktleUV2
ZW50KFtldmVudCBrZXlDb2RlXSwgW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc10p
KQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pCiAgICAgLCBt
X2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoZXZlbnQpKQogICAgICwgbV9zaGlmdEtleShbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKQEAgLTg3NywzICsyMjAsNSBAQCBib29s
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVudENhcHNMCiB9CiAKIH0KKworI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElQSE9ORSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50229</attachid>
            <date>2010-03-08 09:40:29 -0800</date>
            <delta_ts>2010-03-10 16:02:17 -0800</delta_ts>
            <desc>Updated to ToT for Bots</desc>
            <filename>os-keyevent.patch</filename>
            <type>text/plain</type>
            <size>119928</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1NjY3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDMtMDggIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSBQYXJ0IG9mIHRoZSBpUGhvbmUgUGxhdGZv
cm0gc2hhcmluZyBjb2RlIHdpdGggdGhlIE1hYyBQbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NzAKKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOiBBZGRlZCBQTEFURk9STShDT0NPQSkgbWVhbmluZyBJUEhPTkUgfHwgTUFDCisKIDIw
MTAtMDMtMDcgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkocmV2aXNpb24gNTU2NjcpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
d29ya2luZyBjb3B5KQpAQCAtNDY1LDYgKzQ2NSwxMiBAQAogI2RlZmluZSBXVEZfUExBVEZPUk1f
SVBIT05FIDAKICNlbmRpZgogCisvKiBQTEFURk9STShDT0NPQSkgKi8KKy8qIFNoYXJlZCBjb2Rl
IGJldHdlZW4gaVBob25lIGFuZCBNYWMgcGxhdGZvcm1zICovCisjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJUEhPTkUpCisjZGVmaW5lIFdURl9QTEFURk9STV9DT0NPQSAxCisjZW5kaWYK
KwogLyogUExBVEZPUk0oQU5EUk9JRCkgKi8KIC8qIEZJWE1FOiB0aGlzIGlzIHNvbWV0aW1lcyB1
c2VkIGFzIGFuIE9TKCkgc3dpdGNoLCBhbmQgb3RoZXIgdGltZXMgdG8gZHJpdmUKICAgIHBvbGlj
eSBjaG9pY2VzICovCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNTU2NjcpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEwLTAzLTA4ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBzdHJlYW0gUGFydCBvZiB0aGUgaVBob25lIFBsYXRmb3JtIHNoYXJp
bmcgY29kZSB3aXRoIHRoZSBNYWMgUGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODcwCisKKyAgICAgICAgICBTaGFyZWQgaVBob25lIGFu
ZCBNYWMgcGxhdGZvcm0gY29kZS4gUHN1ZWRvLXBsYXRmb3JtICJjb2NvYSIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvS2V5RXZl
bnRDb2NvYS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29h
Lm1tOiBDb3BpZWQgZnJvbSBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0uCisKKyAgICAgICAg
ICBOZXcgaVBob25lIHBsYXRmb3JtLiBCb3RoIG1hYyBhbmQgaXBob25lIHBsYXRmb3JtcyB1c2lu
ZyBzaGFyZWQgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZTogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaXBob25lL0tleUV2ZW50SVBob25lLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW06CisKKyAgICAgICAgICBBZGRlZCB0aGUgbmV3
IGZpbGVzIGFuZCBmb2xkZXJzIChncm91cHMpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisKIDIwMTAtMDMtMDggIEVyaWMgVWhyaGFuZSAgPGVyaWN1
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1NTY2
NykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDgxLDYgKzI0ODEsOSBAQAogCQk5RjcyMzA1MTExMTg0QjQxMDBBRDAxMjYg
LyogU2NyaXB0UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlGNzIzMDRFMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExN0M4MTIy
MEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVC
IC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUExN0M4MTIzMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVu
dEZhY3RvcnkuaCAqLzsgfTsKKwkJQTUxRDdGM0ExMTQxQjI2NzAwMkNFRDM2IC8qIEtleUV2ZW50
Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MUQ3RjM4MTE0MUIyNjcwMDJDRUQzNiAvKiBLZXlFdmVudENvY29hLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUxRDdGM0IxMTQxQjI2NzAwMkNF
RDM2IC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTFEN0YzOTExNDFCMjY3MDAyQ0VEMzYgLyogS2V5RXZlbnRDb2NvYS5t
bSAqLzsgfTsKKwkJQTVBODQ5MzQxMTQxQkJDODAwQ0QxODBFIC8qIEtleUV2ZW50SVBob25lLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBODQ5MzMx
MTQxQkJDODAwQ0QxODBFIC8qIEtleUV2ZW50SVBob25lLm1tICovOyB9OwogCQlBNzE4NzYwRTBC
MkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE3MTg3ODkwMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3ODhGMEIyRDA0QUMw
MEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJQTczNTJDMTkwQjFCQjg5
RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJT
VkdCbG9jay5jcHAgKi87IH07CkBAIC03ODY1LDYgKzc4NjgsOSBAQAogCQk5RjcyMzA0RTExMTg0
QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyaXB0UHJvZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyog
SFRNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTFEN0Yz
ODExNDFCMjY3MDAyQ0VEMzYgLyogS2V5RXZlbnRDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBLZXlFdmVudENvY29hLmg7IHBhdGggPSBjb2NvYS9LZXlFdmVudENvY29h
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MUQ3RjM5MTE0MUIyNjcwMDJDRUQz
NiAvKiBLZXlFdmVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gS2V5RXZlbnRDb2NvYS5tbTsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QTg0OTMzMTE0MUJCQzgwMENEMTgwRSAvKiBL
ZXlFdmVudElQaG9uZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IEtleUV2ZW50SVBob25lLm1tOyBwYXRoID0gaXBob25lL0tleUV2ZW50SVBob25lLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJh
Z0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNF
IC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHQmxvY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxNDYsNiArMTMxNTIsMjMgQEAKIAkJCXRhYldp
ZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQTUxRDdGMzcxMTQxQjI0OTAwMkNF
RDM2IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlBNTFEN0YzODExNDFCMjY3MDAyQ0VEMzYgLyogS2V5RXZlbnRDb2NvYS5oICovLAorCQkJ
CUE1MUQ3RjM5MTE0MUIyNjcwMDJDRUQzNiAvKiBLZXlFdmVudENvY29hLm1tICovLAorCQkJKTsK
KwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1
QTg0OTMyMTE0MUJCQUIwMENEMTgwRSAvKiBpcGhvbmUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QTg0OTMzMTE0MUJCQzgwMENEMTgwRSAvKiBLZXlF
dmVudElQaG9uZS5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gaXBob25lOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQTc1RThCN0YwRTFERTJCMDAwN0YyNDgxIC8qIGZpbHRl
cnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTUyNDgs
NyArMTUyNzEsOSBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDlFOTEyQTQwRUZBQzhFNjAwOUQw
Q0FGIC8qIGFuaW1hdGlvbiAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2Yg
Ki8sCisJCQkJQTUxRDdGMzcxMTQxQjI0OTAwMkNFRDM2IC8qIGNvY29hICovLAogCQkJCUIyQTAx
NTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywKKwkJCQlBNUE4NDkzMjExNDFCQkFC
MDBDRDE4MEUgLyogaXBob25lICovLAogCQkJCTY1ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBt
YWMgKi8sCiAJCQkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJCQkJNjU2
Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsgKi8sCkBAIC0xODY1Nyw2ICsxODY4Miw3
IEBACiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3NjM3QzU0MzExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAwMUU1QTY4IC8q
IFNwYXRpYWxOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTFEN0YzQTExNDFCMjY3
MDAyQ0VEMzYgLyogS2V5RXZlbnRDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0Q5MTEx
MTQzMTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNTNEQTJFMTE0MzEyMUUwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNTNEQTYwMTE0MzE0MUEwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFi
bGVNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMjA4NTUsNiArMjA4ODEsOCBAQAogCQkJCTBCQzJD
Nzc3MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTc2MzdDNTQxMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTYyNkNERTBFMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0
aWFsTmF2aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTFEN0YzQjExNDFCMjY3MDAy
Q0VEMzYgLyogS2V5RXZlbnRDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE1QTg0OTM0MTE0
MUJCQzgwMENEMTgwRSAvKiBLZXlFdmVudElQaG9uZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJD
NTNEQTQ4MTE0MzEzNEQwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM1M0RBNjIxMTQzMTRCRDAwMEQ4MTdFIC8qIERPTU9iamVjdEhhc2hUYWJsZU1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUzREFDNTExNDMyRkQ5MDAwRDgxN0UgLyogSlNE
ZWJ1Z1dyYXBwZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0tleUV2ZW50Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0tleUV2ZW50Q29jb2EuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vY29j
b2EvS2V5RXZlbnRDb2NvYS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWYgUExBVEZPUk0oQ09DT0EpCisK
KyNpZm5kZWYgS2V5RXZlbnRDb2NvYV9ICisjZGVmaW5lIEtleUV2ZW50Q29jb2FfSAorCisjaWYg
UExBVEZPUk0oSVBIT05FKQorZW51bSB7CisJTlNVcEFycm93RnVuY3Rpb25LZXkJCT0gMHhGNzAw
LAorCU5TRG93bkFycm93RnVuY3Rpb25LZXkJCT0gMHhGNzAxLAorCU5TTGVmdEFycm93RnVuY3Rp
b25LZXkJCT0gMHhGNzAyLAorCU5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5CQk9IDB4RjcwMywKKwlO
U0YxRnVuY3Rpb25LZXkJCQk9IDB4RjcwNCwKKwlOU0YyRnVuY3Rpb25LZXkJCQk9IDB4RjcwNSwK
KwlOU0YzRnVuY3Rpb25LZXkJCQk9IDB4RjcwNiwKKwlOU0Y0RnVuY3Rpb25LZXkJCQk9IDB4Rjcw
NywKKwlOU0Y1RnVuY3Rpb25LZXkJCQk9IDB4RjcwOCwKKwlOU0Y2RnVuY3Rpb25LZXkJCQk9IDB4
RjcwOSwKKwlOU0Y3RnVuY3Rpb25LZXkJCQk9IDB4RjcwQSwKKwlOU0Y4RnVuY3Rpb25LZXkJCQk9
IDB4RjcwQiwKKwlOU0Y5RnVuY3Rpb25LZXkJCQk9IDB4RjcwQywKKwlOU0YxMEZ1bmN0aW9uS2V5
CQk9IDB4RjcwRCwKKwlOU0YxMUZ1bmN0aW9uS2V5CQk9IDB4RjcwRSwKKwlOU0YxMkZ1bmN0aW9u
S2V5CQk9IDB4RjcwRiwKKwlOU0YxM0Z1bmN0aW9uS2V5CQk9IDB4RjcxMCwKKwlOU0YxNEZ1bmN0
aW9uS2V5CQk9IDB4RjcxMSwKKwlOU0YxNUZ1bmN0aW9uS2V5CQk9IDB4RjcxMiwKKwlOU0YxNkZ1
bmN0aW9uS2V5CQk9IDB4RjcxMywKKwlOU0YxN0Z1bmN0aW9uS2V5CQk9IDB4RjcxNCwKKwlOU0Yx
OEZ1bmN0aW9uS2V5CQk9IDB4RjcxNSwKKwlOU0YxOUZ1bmN0aW9uS2V5CQk9IDB4RjcxNiwKKwlO
U0YyMEZ1bmN0aW9uS2V5CQk9IDB4RjcxNywKKwlOU0YyMUZ1bmN0aW9uS2V5CQk9IDB4RjcxOCwK
KwlOU0YyMkZ1bmN0aW9uS2V5CQk9IDB4RjcxOSwKKwlOU0YyM0Z1bmN0aW9uS2V5CQk9IDB4Rjcx
QSwKKwlOU0YyNEZ1bmN0aW9uS2V5CQk9IDB4RjcxQiwKKwlOU0YyNUZ1bmN0aW9uS2V5CQk9IDB4
RjcxQywKKwlOU0YyNkZ1bmN0aW9uS2V5CQk9IDB4RjcxRCwKKwlOU0YyN0Z1bmN0aW9uS2V5CQk9
IDB4RjcxRSwKKwlOU0YyOEZ1bmN0aW9uS2V5CQk9IDB4RjcxRiwKKwlOU0YyOUZ1bmN0aW9uS2V5
CQk9IDB4RjcyMCwKKwlOU0YzMEZ1bmN0aW9uS2V5CQk9IDB4RjcyMSwKKwlOU0YzMUZ1bmN0aW9u
S2V5CQk9IDB4RjcyMiwKKwlOU0YzMkZ1bmN0aW9uS2V5CQk9IDB4RjcyMywKKwlOU0YzM0Z1bmN0
aW9uS2V5CQk9IDB4RjcyNCwKKwlOU0YzNEZ1bmN0aW9uS2V5CQk9IDB4RjcyNSwKKwlOU0YzNUZ1
bmN0aW9uS2V5CQk9IDB4RjcyNiwKKwlOU0luc2VydEZ1bmN0aW9uS2V5CQk9IDB4RjcyNywKKwlO
U0RlbGV0ZUZ1bmN0aW9uS2V5CQk9IDB4RjcyOCwKKwlOU0hvbWVGdW5jdGlvbktleQkJPSAweEY3
MjksCisJTlNCZWdpbkZ1bmN0aW9uS2V5CQk9IDB4RjcyQSwKKwlOU0VuZEZ1bmN0aW9uS2V5CQk9
IDB4RjcyQiwKKwlOU1BhZ2VVcEZ1bmN0aW9uS2V5CQk9IDB4RjcyQywKKwlOU1BhZ2VEb3duRnVu
Y3Rpb25LZXkJCT0gMHhGNzJELAorCU5TUHJpbnRTY3JlZW5GdW5jdGlvbktleQk9IDB4RjcyRSwK
KwlOU1Njcm9sbExvY2tGdW5jdGlvbktleQkJPSAweEY3MkYsCisJTlNQYXVzZUZ1bmN0aW9uS2V5
CQk9IDB4RjczMCwKKwlOU1N5c1JlcUZ1bmN0aW9uS2V5CQk9IDB4RjczMSwKKwlOU0JyZWFrRnVu
Y3Rpb25LZXkJCT0gMHhGNzMyLAorCU5TUmVzZXRGdW5jdGlvbktleQkJPSAweEY3MzMsCisJTlNT
dG9wRnVuY3Rpb25LZXkJCT0gMHhGNzM0LAorCU5TTWVudUZ1bmN0aW9uS2V5CQk9IDB4RjczNSwK
KwlOU1VzZXJGdW5jdGlvbktleQkJPSAweEY3MzYsCisJTlNTeXN0ZW1GdW5jdGlvbktleQkJPSAw
eEY3MzcsCisJTlNQcmludEZ1bmN0aW9uS2V5CQk9IDB4RjczOCwKKwlOU0NsZWFyTGluZUZ1bmN0
aW9uS2V5CQk9IDB4RjczOSwKKwlOU0NsZWFyRGlzcGxheUZ1bmN0aW9uS2V5CT0gMHhGNzNBLAor
CU5TSW5zZXJ0TGluZUZ1bmN0aW9uS2V5CQk9IDB4RjczQiwKKwlOU0RlbGV0ZUxpbmVGdW5jdGlv
bktleQkJPSAweEY3M0MsCisJTlNJbnNlcnRDaGFyRnVuY3Rpb25LZXkJCT0gMHhGNzNELAorCU5T
RGVsZXRlQ2hhckZ1bmN0aW9uS2V5CQk9IDB4RjczRSwKKwlOU1ByZXZGdW5jdGlvbktleQkJPSAw
eEY3M0YsCisJTlNOZXh0RnVuY3Rpb25LZXkJCT0gMHhGNzQwLAorCU5TU2VsZWN0RnVuY3Rpb25L
ZXkJCT0gMHhGNzQxLAorCU5TRXhlY3V0ZUZ1bmN0aW9uS2V5CQk9IDB4Rjc0MiwKKwlOU1VuZG9G
dW5jdGlvbktleQkJPSAweEY3NDMsCisJTlNSZWRvRnVuY3Rpb25LZXkJCT0gMHhGNzQ0LAorCU5T
RmluZEZ1bmN0aW9uS2V5CQk9IDB4Rjc0NSwKKwlOU0hlbHBGdW5jdGlvbktleQkJPSAweEY3NDYs
CisJTlNNb2RlU3dpdGNoRnVuY3Rpb25LZXkJCT0gMHhGNzQ3Cit9OworCitlbnVtIHsKKyAgICBO
U1BhcmFncmFwaFNlcGFyYXRvckNoYXJhY3RlciA9IDB4MjAyOSwKKyAgICBOU0xpbmVTZXBhcmF0
b3JDaGFyYWN0ZXIgPSAweDIwMjgsCisgICAgTlNUYWJDaGFyYWN0ZXIgPSAweDAwMDksCisgICAg
TlNGb3JtRmVlZENoYXJhY3RlciA9IDB4MDAwYywKKyAgICBOU05ld2xpbmVDaGFyYWN0ZXIgPSAw
eDAwMGEsCisgICAgTlNDYXJyaWFnZVJldHVybkNoYXJhY3RlciA9IDB4MDAwZCwKKyAgICBOU0Vu
dGVyQ2hhcmFjdGVyID0gMHgwMDAzLAorICAgIE5TQmFja3NwYWNlQ2hhcmFjdGVyID0gMHgwMDA4
LAorICAgIE5TQmFja1RhYkNoYXJhY3RlciA9IDB4MDAxOSwKKyAgICBOU0RlbGV0ZUNoYXJhY3Rl
ciA9IDB4MDA3ZgorfTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0
cmluZzsKKworaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQodWludDE2X3Qga2V5Q29kZSwg
TlNTdHJpbmcqIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyk7CitTdHJpbmcga2V5SWRlbnRp
ZmllckZvcktleUV2ZW50Q2hhcmFjdGVycyhOU1N0cmluZyogY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzKTsKKworfQorCisjZW5kaWYgLy8gS2V5RXZlbnRDb2NvYV9ICisKKyNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2Eu
bW0JKHJldmlzaW9uIDU1NTkyKQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1h
Yy5tbTo1NTU5MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisKKyNp
bXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KKyNpbXBvcnQgPHd0
Zi9BU0NJSUNUeXBlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTlNFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkgCisgICAg
ICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7CisgICAgICAgICAgICBjYXNlIDU0OiAvLyBS
aWdodCBDb21tYW5kCisgICAgICAgICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKKyAgICAg
ICAgICAgICAgICByZXR1cm4gIk1ldGEiOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
Y2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKKyAg
ICAgICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICAgICAgcmV0dXJu
ICJTaGlmdCI7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIDU4OiAvLyBMZWZ0
IEFsdAorICAgICAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0CisgICAgICAgICAgICAgICAg
cmV0dXJuICJBbHQiOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1OTogLy8g
TGVmdCBDdHJsCisgICAgICAgICAgICBjYXNlIDYyOiAvLyBSaWdodCBDdHJsCisgICAgICAgICAg
ICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgCisgICAgTlNTdHJpbmcgKnMgPSBbZXZl
bnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKKyAgICBpZiAoW3MgbGVuZ3RoXSAhPSAx
KSB7CisgICAgICAgIExPRyhFdmVudHMsICJyZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUiLCBbcyBsZW5ndGhdKTsKKyAgICAgICAgcmV0
dXJuICJVbmlkZW50aWZpZWQiOworICAgIH0KKyAgICB1bmljaGFyIGMgPSBbcyBjaGFyYWN0ZXJB
dEluZGV4OjBdOworICAgIHN3aXRjaCAoYykgeworICAgICAgICAvLyBFYWNoIGlkZW50aWZpZXIg
bGlzdGVkIGluIHRoZSBET00gc3BlYyBpcyBsaXN0ZWQgaGVyZS4KKyAgICAgICAgLy8gTWFueSBh
cmUgc2ltcGx5IGNvbW1lbnRlZCBvdXQgc2luY2UgdGhleSBkbyBub3QgYXBwZWFyIG9uIHN0YW5k
YXJkIE1hY2ludG9zaCBrZXlib2FyZHMKKyAgICAgICAgLy8gb3IgYXJlIG9uIGEga2V5IHRoYXQg
ZG9lc24ndCBoYXZlIGEgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuCisKKyAgICAgICAgLy8gIkFj
Y2VwdCIKKyAgICAgICAgLy8gIkFsbENhbmRpZGF0ZXMiCisKKyAgICAgICAgLy8gIkFsdCIKKyAg
ICAgICAgY2FzZSBOU01lbnVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiQWx0IjsK
KworICAgICAgICAvLyAiQXBwcyIKKyAgICAgICAgLy8gIkJyb3dzZXJCYWNrIgorICAgICAgICAv
LyAiQnJvd3NlckZvcndhcmQiCisgICAgICAgIC8vICJCcm93c2VySG9tZSIKKyAgICAgICAgLy8g
IkJyb3dzZXJSZWZyZXNoIgorICAgICAgICAvLyAiQnJvd3NlclNlYXJjaCIKKyAgICAgICAgLy8g
IkJyb3dzZXJTdG9wIgorICAgICAgICAvLyAiQ2Fwc0xvY2siCisKKyAgICAgICAgLy8gIkNsZWFy
IgorICAgICAgICBjYXNlIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1
cm4gIkNsZWFyIjsKKworICAgICAgICAvLyAiQ29kZUlucHV0IgorICAgICAgICAvLyAiQ29tcG9z
ZSIKKyAgICAgICAgLy8gIkNvbnRyb2wiCisgICAgICAgIC8vICJDcnNlbCIKKyAgICAgICAgLy8g
IkNvbnZlcnQiCisgICAgICAgIC8vICJDb3B5IgorICAgICAgICAvLyAiQ3V0IgorCisgICAgICAg
IC8vICJEb3duIgorICAgICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6CisgICAgICAg
ICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAvLyAiRW5kIgorICAgICAgICBjYXNlIE5TRW5k
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgIC8vICJFbnRl
ciIKKyAgICAgICAgY2FzZSAweDM6IGNhc2UgMHhBOiBjYXNlIDB4RDogLy8gTWFjaW50b3NoIGNh
bGxzIHRoZSBvbmUgb24gdGhlIG1haW4ga2V5Ym9hcmQgUmV0dXJuLCBidXQgV2luZG93cyBjYWxs
cyBpdCBFbnRlciwgc28gd2UnbGwgZG8gdGhlIHNhbWUgZm9yIHRoZSBET00KKyAgICAgICAgICAg
IHJldHVybiAiRW50ZXIiOworCisgICAgICAgIC8vICJFcmFzZUVvZiIKKworICAgICAgICAvLyAi
RXhlY3V0ZSIKKyAgICAgICAgY2FzZSBOU0V4ZWN1dGVGdW5jdGlvbktleToKKyAgICAgICAgICAg
IHJldHVybiAiRXhlY3V0ZSI7CisKKyAgICAgICAgLy8gIkV4c2VsIgorCisgICAgICAgIC8vICJG
MSIKKyAgICAgICAgY2FzZSBOU0YxRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYx
IjsKKyAgICAgICAgLy8gIkYyIgorICAgICAgICBjYXNlIE5TRjJGdW5jdGlvbktleToKKyAgICAg
ICAgICAgIHJldHVybiAiRjIiOworICAgICAgICAvLyAiRjMiCisgICAgICAgIGNhc2UgTlNGM0Z1
bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgIC8vICJGNCIKKyAg
ICAgICAgY2FzZSBOU0Y0RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkY0IjsKKyAg
ICAgICAgLy8gIkY1IgorICAgICAgICBjYXNlIE5TRjVGdW5jdGlvbktleToKKyAgICAgICAgICAg
IHJldHVybiAiRjUiOworICAgICAgICAvLyAiRjYiCisgICAgICAgIGNhc2UgTlNGNkZ1bmN0aW9u
S2V5OgorICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIC8vICJGNyIKKyAgICAgICAg
Y2FzZSBOU0Y3RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAg
Ly8gIkY4IgorICAgICAgICBjYXNlIE5TRjhGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVy
biAiRjgiOworICAgICAgICAvLyAiRjkiCisgICAgICAgIGNhc2UgTlNGOUZ1bmN0aW9uS2V5Ogor
ICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgIC8vICJGMTAiCisgICAgICAgIGNhc2Ug
TlNGMTBGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjEwIjsKKyAgICAgICAgLy8g
IkYxMSIKKyAgICAgICAgY2FzZSBOU0YxMUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJu
ICJGMTEiOworICAgICAgICAvLyAiRjEyIgorICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6
CisgICAgICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIC8vICJGMTMiCisgICAgICAgIGNh
c2UgTlNGMTNGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
Ly8gIkYxNCIKKyAgICAgICAgY2FzZSBOU0YxNEZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0
dXJuICJGMTQiOworICAgICAgICAvLyAiRjE1IgorICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25L
ZXk6CisgICAgICAgICAgICByZXR1cm4gIkYxNSI7CisgICAgICAgIC8vICJGMTYiCisgICAgICAg
IGNhc2UgTlNGMTZGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAg
ICAgLy8gIkYxNyIKKyAgICAgICAgY2FzZSBOU0YxN0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAg
cmV0dXJuICJGMTciOworICAgICAgICAvLyAiRjE4IgorICAgICAgICBjYXNlIE5TRjE4RnVuY3Rp
b25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYxOCI7CisgICAgICAgIC8vICJGMTkiCisgICAg
ICAgIGNhc2UgTlNGMTlGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAg
ICAgICAgLy8gIkYyMCIKKyAgICAgICAgY2FzZSBOU0YyMEZ1bmN0aW9uS2V5OgorICAgICAgICAg
ICAgcmV0dXJuICJGMjAiOworICAgICAgICAvLyAiRjIxIgorICAgICAgICBjYXNlIE5TRjIxRnVu
Y3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIC8vICJGMjIiCisg
ICAgICAgIGNhc2UgTlNGMjJGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjIyIjsK
KyAgICAgICAgLy8gIkYyMyIKKyAgICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OgorICAgICAg
ICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAvLyAiRjI0IgorICAgICAgICBjYXNlIE5TRjI0
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYyNCI7CisKKyAgICAgICAgLy8gIkZp
bmFsTW9kZSIKKworICAgICAgICAvLyAiRmluZCIKKyAgICAgICAgY2FzZSBOU0ZpbmRGdW5jdGlv
bktleToKKyAgICAgICAgICAgIHJldHVybiAiRmluZCI7CisKKyAgICAgICAgLy8gIkZ1bGxXaWR0
aCIKKyAgICAgICAgLy8gIkhhbGZXaWR0aCIKKyAgICAgICAgLy8gIkhhbmd1bE1vZGUiCisgICAg
ICAgIC8vICJIYW5qYU1vZGUiCisKKyAgICAgICAgLy8gIkhlbHAiCisgICAgICAgIGNhc2UgTlNI
ZWxwRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiOworCisgICAgICAgIC8v
ICJIaXJhZ2FuYSIKKworICAgICAgICAvLyAiSG9tZSIKKyAgICAgICAgY2FzZSBOU0hvbWVGdW5j
dGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgIC8vICJJbnNlcnQi
CisgICAgICAgIGNhc2UgTlNJbnNlcnRGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAi
SW5zZXJ0IjsKKworICAgICAgICAvLyAiSmFwYW5lc2VIaXJhZ2FuYSIKKyAgICAgICAgLy8gIkph
cGFuZXNlS2F0YWthbmEiCisgICAgICAgIC8vICJKYXBhbmVzZVJvbWFqaSIKKyAgICAgICAgLy8g
Ikp1bmphTW9kZSIKKyAgICAgICAgLy8gIkthbmFNb2RlIgorICAgICAgICAvLyAiS2FuamlNb2Rl
IgorICAgICAgICAvLyAiS2F0YWthbmEiCisgICAgICAgIC8vICJMYXVuY2hBcHBsaWNhdGlvbjEi
CisgICAgICAgIC8vICJMYXVuY2hBcHBsaWNhdGlvbjIiCisgICAgICAgIC8vICJMYXVuY2hNYWls
IgorCisgICAgICAgIC8vICJMZWZ0IgorICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25L
ZXk6CisgICAgICAgICAgICByZXR1cm4gIkxlZnQiOworCisgICAgICAgIC8vICJNZXRhIgorICAg
ICAgICAvLyAiTWVkaWFOZXh0VHJhY2siCisgICAgICAgIC8vICJNZWRpYVBsYXlQYXVzZSIKKyAg
ICAgICAgLy8gIk1lZGlhUHJldmlvdXNUcmFjayIKKyAgICAgICAgLy8gIk1lZGlhU3RvcCIKKwor
ICAgICAgICAvLyAiTW9kZUNoYW5nZSIKKyAgICAgICAgY2FzZSBOU01vZGVTd2l0Y2hGdW5jdGlv
bktleToKKyAgICAgICAgICAgIHJldHVybiAiTW9kZUNoYW5nZSI7CisKKyAgICAgICAgLy8gIk5v
bmNvbnZlcnQiCisgICAgICAgIC8vICJOdW1Mb2NrIgorCisgICAgICAgIC8vICJQYWdlRG93biIK
KyAgICAgICAgY2FzZSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIjsKKyAgICAgICAgLy8gIlBhZ2VVcCIKKyAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1
bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJQYWdlVXAiOworCisgICAgICAgIC8vICJQ
YXN0ZSIKKworICAgICAgICAvLyAiUGF1c2UiCisgICAgICAgIGNhc2UgTlNQYXVzZUZ1bmN0aW9u
S2V5OgorICAgICAgICAgICAgcmV0dXJuICJQYXVzZSI7CisKKyAgICAgICAgLy8gIlBsYXkiCisg
ICAgICAgIC8vICJQcmV2aW91c0NhbmRpZGF0ZSIKKworICAgICAgICAvLyAiUHJpbnRTY3JlZW4i
CisgICAgICAgIGNhc2UgTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0
dXJuICJQcmludFNjcmVlbiI7CisKKyAgICAgICAgLy8gIlByb2Nlc3MiCisgICAgICAgIC8vICJQ
cm9wcyIKKworICAgICAgICAvLyAiUmlnaHQiCisgICAgICAgIGNhc2UgTlNSaWdodEFycm93RnVu
Y3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKworICAgICAgICAvLyAiUm9t
YW5DaGFyYWN0ZXJzIgorCisgICAgICAgIC8vICJTY3JvbGwiCisgICAgICAgIGNhc2UgTlNTY3Jv
bGxMb2NrRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAg
IC8vICJTZWxlY3QiCisgICAgICAgIGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleToKKyAgICAgICAg
ICAgIHJldHVybiAiU2VsZWN0IjsKKworICAgICAgICAvLyAiU2VsZWN0TWVkaWEiCisgICAgICAg
IC8vICJTaGlmdCIKKworICAgICAgICAvLyAiU3RvcCIKKyAgICAgICAgY2FzZSBOU1N0b3BGdW5j
dGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiU3RvcCI7CisgICAgICAgIC8vICJVcCIKKyAg
ICAgICAgY2FzZSBOU1VwQXJyb3dGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiVXAi
OworICAgICAgICAvLyAiVW5kbyIKKyAgICAgICAgY2FzZSBOU1VuZG9GdW5jdGlvbktleToKKyAg
ICAgICAgICAgIHJldHVybiAiVW5kbyI7CisKKyAgICAgICAgLy8gIlZvbHVtZURvd24iCisgICAg
ICAgIC8vICJWb2x1bWVNdXRlIgorICAgICAgICAvLyAiVm9sdW1lVXAiCisgICAgICAgIC8vICJX
aW4iCisgICAgICAgIC8vICJab29tIgorCisgICAgICAgIC8vIE1vcmUgZnVuY3Rpb24ga2V5cywg
bm90IGluIHRoZSBrZXkgaWRlbnRpZmllciBzcGVjaWZpY2F0aW9uLgorICAgICAgICBjYXNlIE5T
RjI1RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYyNSI7CisgICAgICAgIGNhc2Ug
TlNGMjZGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjI2IjsKKyAgICAgICAgY2Fz
ZSBOU0YyN0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMjciOworICAgICAgICBj
YXNlIE5TRjI4RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYyOCI7CisgICAgICAg
IGNhc2UgTlNGMjlGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjI5IjsKKyAgICAg
ICAgY2FzZSBOU0YzMEZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMzAiOworICAg
ICAgICBjYXNlIE5TRjMxRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYzMSI7Cisg
ICAgICAgIGNhc2UgTlNGMzJGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjMyIjsK
KyAgICAgICAgY2FzZSBOU0YzM0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMzMi
OworICAgICAgICBjYXNlIE5TRjM0RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYz
NCI7CisgICAgICAgIGNhc2UgTlNGMzVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAi
RjM1IjsKKworICAgICAgICAvLyBUdXJuIDB4N0YgaW50byAweDA4LCBiZWNhdXNlIGJhY2tzcGFj
ZSBuZWVkcyB0byBhbHdheXMgYmUgMHgwOC4KKyAgICAgICAgY2FzZSAweDdGOgorICAgICAgICAg
ICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJl
Y29tZXMgVSswMDdGLgorICAgICAgICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6CisgICAgICAg
ICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAgICAgICAKKyAgICAgICAgLy8gQWx3YXlzIHVz
ZSAweDA5IGZvciB0YWIgaW5zdGVhZCBvZiBBcHBLaXQncyBiYWNrdGFiIGNoYXJhY3Rlci4KKyAg
ICAgICAgY2FzZSBOU0JhY2tUYWJDaGFyYWN0ZXI6CisgICAgICAgICAgICByZXR1cm4gIlUrMDAw
OSI7CisKKyAgICAgICAgY2FzZSBOU0JlZ2luRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNC
cmVha0Z1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TQ2xlYXJEaXNwbGF5RnVuY3Rpb25LZXk6
CisgICAgICAgIGNhc2UgTlNEZWxldGVDaGFyRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNE
ZWxldGVMaW5lRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNJbnNlcnRDaGFyRnVuY3Rpb25L
ZXk6CisgICAgICAgIGNhc2UgTlNJbnNlcnRMaW5lRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2Ug
TlNOZXh0RnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNQcmV2RnVuY3Rpb25LZXk6CisgICAg
ICAgIGNhc2UgTlNQcmludEZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TUmVkb0Z1bmN0aW9u
S2V5OgorICAgICAgICBjYXNlIE5TUmVzZXRGdW5jdGlvbktleToKKyAgICAgICAgY2FzZSBOU1N5
c1JlcUZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TU3lzdGVtRnVuY3Rpb25LZXk6CisgICAg
ICAgIGNhc2UgTlNVc2VyRnVuY3Rpb25LZXk6CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHVzZSBzb21ldGhpbmcgb3RoZXIgdGhhbiB0aGUgdmVuZG9yLWFyZWEgVW5pY29kZSB2YWx1
ZXMgZm9yIHRoZSBhYm92ZSBrZXlzLgorICAgICAgICAgICAgLy8gRm9yIG5vdywganVzdCBmYWxs
IHRocm91Z2ggdG8gdGhlIGRlZmF1bHQuCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlUrJTA0WCIsIHRvQVNDSUlVcHBlcihjKSk7CisgICAgfQor
fQorCitzdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIC8v
IENoZWNrIHRoYXQgdGhpcyBpcyB0aGUgdHlwZSBvZiBldmVudCB0aGF0IGhhcyBhIGtleUNvZGUu
CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0tleURvd246Cisg
ICAgICAgIGNhc2UgTlNLZXlVcDoKKyAgICAgICAgY2FzZSBOU0ZsYWdzQ2hhbmdlZDoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU051bWVyaWNQYWRL
ZXlNYXNrKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHN3aXRjaCAoW2V2ZW50IGtleUNv
ZGVdKSB7CisgICAgICAgIGNhc2UgNzE6IC8vIENsZWFyCisgICAgICAgIGNhc2UgODE6IC8vID0K
KyAgICAgICAgY2FzZSA3NTogLy8gLworICAgICAgICBjYXNlIDY3OiAvLyAqCisgICAgICAgIGNh
c2UgNzg6IC8vIC0KKyAgICAgICAgY2FzZSA2OTogLy8gKworICAgICAgICBjYXNlIDc2OiAvLyBF
bnRlcgorICAgICAgICBjYXNlIDY1OiAvLyAuCisgICAgICAgIGNhc2UgODI6IC8vIDAKKyAgICAg
ICAgY2FzZSA4MzogLy8gMQorICAgICAgICBjYXNlIDg0OiAvLyAyCisgICAgICAgIGNhc2UgODU6
IC8vIDMKKyAgICAgICAgY2FzZSA4NjogLy8gNAorICAgICAgICBjYXNlIDg3OiAvLyA1CisgICAg
ICAgIGNhc2UgODg6IC8vIDYKKyAgICAgICAgY2FzZSA4OTogLy8gNworICAgICAgICBjYXNlIDkx
OiAvLyA4CisgICAgICAgIGNhc2UgOTI6IC8vIDkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICB9CisgICAgIAorICAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbnQgd2luZG93
c0tleUNvZGVGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVu
dCBrZXlDb2RlXSkgeworICAgICAgICAvLyBWS19UQUIgKDA5KSBUQUIga2V5CisgICAgICAgIGNh
c2UgNDg6IHJldHVybiAweDA5OworCisgICAgICAgIC8vIFZLX0FQUFMgKDVEKSBSaWdodCB3aW5k
b3dzL21ldGEga2V5CisgICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKKyAgICAgICAg
ICAgIHJldHVybiAweDVEOworICAgICAgICAgICAgCisgICAgICAgIC8vIFZLX0xXSU4gKDVCKSBM
ZWZ0IHdpbmRvd3MvbWV0YSBrZXkKKyAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisg
ICAgICAgICAgICByZXR1cm4gMHg1QjsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBWS19DQVBJ
VEFMICgxNCkgY2FwcyBsb2NrcyBrZXkKKyAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAg
ICAgICAgICAgIHJldHVybiAweDE0OworICAgICAgICAgICAgCisgICAgICAgIC8vIFZLX1NISUZU
ICgxMCkgZWl0aGVyIHNoaWZ0IGtleQorICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0Cisg
ICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICByZXR1cm4gMHgxMDsK
KyAgICAgICAgICAgIAorICAgICAgICAvLyBWS19NRU5VICgxMikgZWl0aGVyIGFsdCBrZXkKKyAg
ICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKKyAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0
CisgICAgICAgICAgICByZXR1cm4gMHgxMjsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBWS19D
T05UUk9MICgxMSkgZWl0aGVyIGN0cmwga2V5CisgICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3Ry
bAorICAgICAgICBjYXNlIDYyOiAvLyBSaWdodCBDdHJsCisgICAgICAgICAgICByZXR1cm4gMHgx
MTsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBWS19DTEVBUiAoMEMpIENMRUFSIGtleQorICAg
ICAgICBjYXNlIDcxOiByZXR1cm4gMHgwQzsKKworICAgICAgICAvLyBWS19OVU1QQUQwICg2MCkg
TnVtZXJpYyBrZXlwYWQgMCBrZXkKKyAgICAgICAgY2FzZSA4MjogcmV0dXJuIDB4NjA7CisgICAg
ICAgIC8vIFZLX05VTVBBRDEgKDYxKSBOdW1lcmljIGtleXBhZCAxIGtleQorICAgICAgICBjYXNl
IDgzOiByZXR1cm4gMHg2MTsKKyAgICAgICAgLy8gVktfTlVNUEFEMiAoNjIpIE51bWVyaWMga2V5
cGFkIDIga2V5CisgICAgICAgIGNhc2UgODQ6IHJldHVybiAweDYyOworICAgICAgICAvLyBWS19O
VU1QQUQzICg2MykgTnVtZXJpYyBrZXlwYWQgMyBrZXkKKyAgICAgICAgY2FzZSA4NTogcmV0dXJu
IDB4NjM7CisgICAgICAgIC8vIFZLX05VTVBBRDQgKDY0KSBOdW1lcmljIGtleXBhZCA0IGtleQor
ICAgICAgICBjYXNlIDg2OiByZXR1cm4gMHg2NDsKKyAgICAgICAgLy8gVktfTlVNUEFENSAoNjUp
IE51bWVyaWMga2V5cGFkIDUga2V5CisgICAgICAgIGNhc2UgODc6IHJldHVybiAweDY1OworICAg
ICAgICAvLyBWS19OVU1QQUQ2ICg2NikgTnVtZXJpYyBrZXlwYWQgNiBrZXkKKyAgICAgICAgY2Fz
ZSA4ODogcmV0dXJuIDB4NjY7CisgICAgICAgIC8vIFZLX05VTVBBRDcgKDY3KSBOdW1lcmljIGtl
eXBhZCA3IGtleQorICAgICAgICBjYXNlIDg5OiByZXR1cm4gMHg2NzsKKyAgICAgICAgLy8gVktf
TlVNUEFEOCAoNjgpIE51bWVyaWMga2V5cGFkIDgga2V5CisgICAgICAgIGNhc2UgOTE6IHJldHVy
biAweDY4OworICAgICAgICAvLyBWS19OVU1QQUQ5ICg2OSkgTnVtZXJpYyBrZXlwYWQgOSBrZXkK
KyAgICAgICAgY2FzZSA5MjogcmV0dXJuIDB4Njk7CisgICAgICAgIC8vIFZLX01VTFRJUExZICg2
QSkgTXVsdGlwbHkga2V5CisgICAgICAgIGNhc2UgNjc6IHJldHVybiAweDZBOworICAgICAgICAv
LyBWS19BREQgKDZCKSBBZGQga2V5CisgICAgICAgIGNhc2UgNjk6IHJldHVybiAweDZCOworCisg
ICAgICAgIC8vIFZLX1NVQlRSQUNUICg2RCkgU3VidHJhY3Qga2V5CisgICAgICAgIGNhc2UgNzg6
IHJldHVybiAweDZEOworICAgICAgICAvLyBWS19ERUNJTUFMICg2RSkgRGVjaW1hbCBrZXkKKyAg
ICAgICAgY2FzZSA2NTogcmV0dXJuIDB4NkU7CisgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERp
dmlkZSBrZXkKKyAgICAgICAgY2FzZSA3NTogcmV0dXJuIDB4NkY7CisgICAgIH0KKworICAgIE5T
U3RyaW5nKiBzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgaWYg
KFtzIGxlbmd0aF0gIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzd2l0Y2ggKFtzIGNo
YXJhY3RlckF0SW5kZXg6MF0pIHsKKyAgICAgICAgLy8gVktfTEJVVFRPTiAoMDEpIExlZnQgbW91
c2UgYnV0dG9uCisgICAgICAgIC8vIFZLX1JCVVRUT04gKDAyKSBSaWdodCBtb3VzZSBidXR0b24K
KyAgICAgICAgLy8gVktfQ0FOQ0VMICgwMykgQ29udHJvbC1icmVhayBwcm9jZXNzaW5nCisgICAg
ICAgIC8vIFZLX01CVVRUT04gKDA0KSBNaWRkbGUgbW91c2UgYnV0dG9uICh0aHJlZS1idXR0b24g
bW91c2UpCisgICAgICAgIC8vIFZLX1hCVVRUT04xICgwNSkKKyAgICAgICAgLy8gVktfWEJVVFRP
TjIgKDA2KQorCisgICAgICAgIC8vIFZLX0JBQ0sgKDA4KSBCQUNLU1BBQ0Uga2V5CisgICAgICAg
IGNhc2UgODogY2FzZSAweDdGOiByZXR1cm4gMHgwODsKKyAgICAgICAgLy8gVktfVEFCICgwOSkg
VEFCIGtleQorICAgICAgICBjYXNlIDk6IHJldHVybiAweDA5OworCisgICAgICAgIC8vIFZLX0NM
RUFSICgwQykgQ0xFQVIga2V5CisgICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUK
KworICAgICAgICAvLyBWS19SRVRVUk4gKDBEKQorICAgICAgICBjYXNlIDB4RDogY2FzZSAzOiBy
ZXR1cm4gMHgwRDsKKworICAgICAgICAvLyBWS19TSElGVCAoMTApIFNISUZUIGtleQorICAgICAg
ICAvLyBWS19DT05UUk9MICgxMSkgQ1RSTCBrZXkKKyAgICAgICAgLy8gVktfTUVOVSAoMTIpIEFM
VCBrZXkKKworICAgICAgICAvLyBWS19QQVVTRSAoMTMpIFBBVVNFIGtleQorICAgICAgICBjYXNl
IE5TUGF1c2VGdW5jdGlvbktleTogcmV0dXJuIDB4MTM7CisKKyAgICAgICAgLy8gVktfQ0FQSVRB
TCAoMTQpIENBUFMgTE9DSyBrZXkKKyAgICAgICAgLy8gVktfS0FOQSAoMTUpIElucHV0IE1ldGhv
ZCBFZGl0b3IgKElNRSkgS2FuYSBtb2RlCisgICAgICAgIC8vIFZLX0hBTkdVRUwgKDE1KSBJTUUg
SGFuZ3VlbCBtb2RlIChtYWludGFpbmVkIGZvciBjb21wYXRpYmlsaXR5OyB1c2UgVktfSEFOR1VM
KQorICAgICAgICAvLyBWS19IQU5HVUwgKDE1KSBJTUUgSGFuZ3VsIG1vZGUKKyAgICAgICAgLy8g
VktfSlVOSkEgKDE3KSBJTUUgSnVuamEgbW9kZQorICAgICAgICAvLyBWS19GSU5BTCAoMTgpIElN
RSBmaW5hbCBtb2RlCisgICAgICAgIC8vIFZLX0hBTkpBICgxOSkgSU1FIEhhbmphIG1vZGUKKyAg
ICAgICAgLy8gVktfS0FOSkkgKDE5KSBJTUUgS2FuamkgbW9kZQorCisgICAgICAgIC8vIFZLX0VT
Q0FQRSAoMUIpIEVTQyBrZXkKKyAgICAgICAgY2FzZSAweDFCOiByZXR1cm4gMHgxQjsKKworICAg
ICAgICAvLyBWS19DT05WRVJUICgxQykgSU1FIGNvbnZlcnQKKyAgICAgICAgLy8gVktfTk9OQ09O
VkVSVCAoMUQpIElNRSBub25jb252ZXJ0CisgICAgICAgIC8vIFZLX0FDQ0VQVCAoMUUpIElNRSBh
Y2NlcHQKKyAgICAgICAgLy8gVktfTU9ERUNIQU5HRSAoMUYpIElNRSBtb2RlIGNoYW5nZSByZXF1
ZXN0CisKKyAgICAgICAgLy8gVktfU1BBQ0UgKDIwKSBTUEFDRUJBUgorICAgICAgICBjYXNlICcg
JzogcmV0dXJuIDB4MjA7CisgICAgICAgIC8vIFZLX1BSSU9SICgyMSkgUEFHRSBVUCBrZXkKKyAg
ICAgICAgY2FzZSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyMTsKKyAgICAgICAgLy8g
VktfTkVYVCAoMjIpIFBBR0UgRE9XTiBrZXkKKyAgICAgICAgY2FzZSBOU1BhZ2VEb3duRnVuY3Rp
b25LZXk6IHJldHVybiAweDIyOworICAgICAgICAvLyBWS19FTkQgKDIzKSBFTkQga2V5CisgICAg
ICAgIGNhc2UgTlNFbmRGdW5jdGlvbktleTogcmV0dXJuIDB4MjM7CisgICAgICAgIC8vIFZLX0hP
TUUgKDI0KSBIT01FIGtleQorICAgICAgICBjYXNlIE5TSG9tZUZ1bmN0aW9uS2V5OiByZXR1cm4g
MHgyNDsKKyAgICAgICAgLy8gVktfTEVGVCAoMjUpIExFRlQgQVJST1cga2V5CisgICAgICAgIGNh
c2UgTlNMZWZ0QXJyb3dGdW5jdGlvbktleTogcmV0dXJuIDB4MjU7CisgICAgICAgIC8vIFZLX1VQ
ICgyNikgVVAgQVJST1cga2V5CisgICAgICAgIGNhc2UgTlNVcEFycm93RnVuY3Rpb25LZXk6IHJl
dHVybiAweDI2OworICAgICAgICAvLyBWS19SSUdIVCAoMjcpIFJJR0hUIEFSUk9XIGtleQorICAg
ICAgICBjYXNlIE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgyNzsKKyAgICAgICAg
Ly8gVktfRE9XTiAoMjgpIERPV04gQVJST1cga2V5CisgICAgICAgIGNhc2UgTlNEb3duQXJyb3dG
dW5jdGlvbktleTogcmV0dXJuIDB4Mjg7CisgICAgICAgIC8vIFZLX1NFTEVDVCAoMjkpIFNFTEVD
VCBrZXkKKyAgICAgICAgY2FzZSBOU1NlbGVjdEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyOTsKKyAg
ICAgICAgLy8gVktfUFJJTlQgKDJBKSBQUklOVCBrZXkKKyAgICAgICAgY2FzZSBOU1ByaW50RnVu
Y3Rpb25LZXk6IHJldHVybiAweDJBOworICAgICAgICAvLyBWS19FWEVDVVRFICgyQikgRVhFQ1VU
RSBrZXkKKyAgICAgICAgY2FzZSBOU0V4ZWN1dGVGdW5jdGlvbktleTogcmV0dXJuIDB4MkI7Cisg
ICAgICAgIC8vIFZLX1NOQVBTSE9UICgyQykgUFJJTlQgU0NSRUVOIGtleQorICAgICAgICBjYXNl
IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTogcmV0dXJuIDB4MkM7CisgICAgICAgIC8vIFZLX0lO
U0VSVCAoMkQpIElOUyBrZXkKKyAgICAgICAgY2FzZSBOU0luc2VydEZ1bmN0aW9uS2V5OiBjYXNl
IE5TSGVscEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyRDsKKyAgICAgICAgLy8gVktfREVMRVRFICgy
RSkgREVMIGtleQorICAgICAgICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6IHJldHVybiAweDJF
OworCisgICAgICAgIC8vIFZLX0hFTFAgKDJGKSBIRUxQIGtleQorCisgICAgICAgIC8vICAoMzAp
IDAga2V5CisgICAgICAgIGNhc2UgJzAnOiBjYXNlICcpJzogcmV0dXJuIDB4MzA7CisgICAgICAg
IC8vICAoMzEpIDEga2V5CisgICAgICAgIGNhc2UgJzEnOiBjYXNlICchJzogcmV0dXJuIDB4MzE7
CisgICAgICAgIC8vICAoMzIpIDIga2V5CisgICAgICAgIGNhc2UgJzInOiBjYXNlICdAJzogcmV0
dXJuIDB4MzI7CisgICAgICAgIC8vICAoMzMpIDMga2V5CisgICAgICAgIGNhc2UgJzMnOiBjYXNl
ICcjJzogcmV0dXJuIDB4MzM7CisgICAgICAgIC8vICAoMzQpIDQga2V5CisgICAgICAgIGNhc2Ug
JzQnOiBjYXNlICckJzogcmV0dXJuIDB4MzQ7CisgICAgICAgIC8vICAoMzUpIDUga2V5CisgICAg
ICAgIGNhc2UgJzUnOiBjYXNlICclJzogcmV0dXJuIDB4MzU7CisgICAgICAgIC8vICAoMzYpIDYg
a2V5CisgICAgICAgIGNhc2UgJzYnOiBjYXNlICdeJzogcmV0dXJuIDB4MzY7CisgICAgICAgIC8v
ICAoMzcpIDcga2V5CisgICAgICAgIGNhc2UgJzcnOiBjYXNlICcmJzogcmV0dXJuIDB4Mzc7Cisg
ICAgICAgIC8vICAoMzgpIDgga2V5CisgICAgICAgIGNhc2UgJzgnOiBjYXNlICcqJzogcmV0dXJu
IDB4Mzg7CisgICAgICAgIC8vICAoMzkpIDkga2V5CisgICAgICAgIGNhc2UgJzknOiBjYXNlICco
JzogcmV0dXJuIDB4Mzk7CisgICAgICAgIC8vICAoNDEpIEEga2V5CisgICAgICAgIGNhc2UgJ2En
OiBjYXNlICdBJzogcmV0dXJuIDB4NDE7CisgICAgICAgIC8vICAoNDIpIEIga2V5CisgICAgICAg
IGNhc2UgJ2InOiBjYXNlICdCJzogcmV0dXJuIDB4NDI7CisgICAgICAgIC8vICAoNDMpIEMga2V5
CisgICAgICAgIGNhc2UgJ2MnOiBjYXNlICdDJzogcmV0dXJuIDB4NDM7CisgICAgICAgIC8vICAo
NDQpIEQga2V5CisgICAgICAgIGNhc2UgJ2QnOiBjYXNlICdEJzogcmV0dXJuIDB4NDQ7CisgICAg
ICAgIC8vICAoNDUpIEUga2V5CisgICAgICAgIGNhc2UgJ2UnOiBjYXNlICdFJzogcmV0dXJuIDB4
NDU7CisgICAgICAgIC8vICAoNDYpIEYga2V5CisgICAgICAgIGNhc2UgJ2YnOiBjYXNlICdGJzog
cmV0dXJuIDB4NDY7CisgICAgICAgIC8vICAoNDcpIEcga2V5CisgICAgICAgIGNhc2UgJ2cnOiBj
YXNlICdHJzogcmV0dXJuIDB4NDc7CisgICAgICAgIC8vICAoNDgpIEgga2V5CisgICAgICAgIGNh
c2UgJ2gnOiBjYXNlICdIJzogcmV0dXJuIDB4NDg7CisgICAgICAgIC8vICAoNDkpIEkga2V5Cisg
ICAgICAgIGNhc2UgJ2knOiBjYXNlICdJJzogcmV0dXJuIDB4NDk7CisgICAgICAgIC8vICAoNEEp
IEoga2V5CisgICAgICAgIGNhc2UgJ2onOiBjYXNlICdKJzogcmV0dXJuIDB4NEE7CisgICAgICAg
IC8vICAoNEIpIEsga2V5CisgICAgICAgIGNhc2UgJ2snOiBjYXNlICdLJzogcmV0dXJuIDB4NEI7
CisgICAgICAgIC8vICAoNEMpIEwga2V5CisgICAgICAgIGNhc2UgJ2wnOiBjYXNlICdMJzogcmV0
dXJuIDB4NEM7CisgICAgICAgIC8vICAoNEQpIE0ga2V5CisgICAgICAgIGNhc2UgJ20nOiBjYXNl
ICdNJzogcmV0dXJuIDB4NEQ7CisgICAgICAgIC8vICAoNEUpIE4ga2V5CisgICAgICAgIGNhc2Ug
J24nOiBjYXNlICdOJzogcmV0dXJuIDB4NEU7CisgICAgICAgIC8vICAoNEYpIE8ga2V5CisgICAg
ICAgIGNhc2UgJ28nOiBjYXNlICdPJzogcmV0dXJuIDB4NEY7CisgICAgICAgIC8vICAoNTApIFAg
a2V5CisgICAgICAgIGNhc2UgJ3AnOiBjYXNlICdQJzogcmV0dXJuIDB4NTA7CisgICAgICAgIC8v
ICAoNTEpIFEga2V5CisgICAgICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogcmV0dXJuIDB4NTE7Cisg
ICAgICAgIC8vICAoNTIpIFIga2V5CisgICAgICAgIGNhc2UgJ3InOiBjYXNlICdSJzogcmV0dXJu
IDB4NTI7CisgICAgICAgIC8vICAoNTMpIFMga2V5CisgICAgICAgIGNhc2UgJ3MnOiBjYXNlICdT
JzogcmV0dXJuIDB4NTM7CisgICAgICAgIC8vICAoNTQpIFQga2V5CisgICAgICAgIGNhc2UgJ3Qn
OiBjYXNlICdUJzogcmV0dXJuIDB4NTQ7CisgICAgICAgIC8vICAoNTUpIFUga2V5CisgICAgICAg
IGNhc2UgJ3UnOiBjYXNlICdVJzogcmV0dXJuIDB4NTU7CisgICAgICAgIC8vICAoNTYpIFYga2V5
CisgICAgICAgIGNhc2UgJ3YnOiBjYXNlICdWJzogcmV0dXJuIDB4NTY7CisgICAgICAgIC8vICAo
NTcpIFcga2V5CisgICAgICAgIGNhc2UgJ3cnOiBjYXNlICdXJzogcmV0dXJuIDB4NTc7CisgICAg
ICAgIC8vICAoNTgpIFgga2V5CisgICAgICAgIGNhc2UgJ3gnOiBjYXNlICdYJzogcmV0dXJuIDB4
NTg7CisgICAgICAgIC8vICAoNTkpIFkga2V5CisgICAgICAgIGNhc2UgJ3knOiBjYXNlICdZJzog
cmV0dXJuIDB4NTk7CisgICAgICAgIC8vICAoNUEpIFoga2V5CisgICAgICAgIGNhc2UgJ3onOiBj
YXNlICdaJzogcmV0dXJuIDB4NUE7CisKKyAgICAgICAgLy8gVktfTFdJTiAoNUIpIExlZnQgV2lu
ZG93cyBrZXkgKE1pY3Jvc29mdCBOYXR1cmFsIGtleWJvYXJkKQorICAgICAgICAvLyBWS19SV0lO
ICg1QykgUmlnaHQgV2luZG93cyBrZXkgKE5hdHVyYWwga2V5Ym9hcmQpCisgICAgICAgIC8vIFZL
X0FQUFMgKDVEKSBBcHBsaWNhdGlvbnMga2V5IChOYXR1cmFsIGtleWJvYXJkKQorICAgICAgICAv
LyBWS19TTEVFUCAoNUYpIENvbXB1dGVyIFNsZWVwIGtleQorCisgICAgICAgIC8vIFZLX05VTVBB
RDAgKDYwKSBOdW1lcmljIGtleXBhZCAwIGtleQorICAgICAgICAvLyBWS19OVU1QQUQxICg2MSkg
TnVtZXJpYyBrZXlwYWQgMSBrZXkKKyAgICAgICAgLy8gVktfTlVNUEFEMiAoNjIpIE51bWVyaWMg
a2V5cGFkIDIga2V5CisgICAgICAgIC8vIFZLX05VTVBBRDMgKDYzKSBOdW1lcmljIGtleXBhZCAz
IGtleQorICAgICAgICAvLyBWS19OVU1QQUQ0ICg2NCkgTnVtZXJpYyBrZXlwYWQgNCBrZXkKKyAg
ICAgICAgLy8gVktfTlVNUEFENSAoNjUpIE51bWVyaWMga2V5cGFkIDUga2V5CisgICAgICAgIC8v
IFZLX05VTVBBRDYgKDY2KSBOdW1lcmljIGtleXBhZCA2IGtleQorICAgICAgICAvLyBWS19OVU1Q
QUQ3ICg2NykgTnVtZXJpYyBrZXlwYWQgNyBrZXkKKyAgICAgICAgLy8gVktfTlVNUEFEOCAoNjgp
IE51bWVyaWMga2V5cGFkIDgga2V5CisgICAgICAgIC8vIFZLX05VTVBBRDkgKDY5KSBOdW1lcmlj
IGtleXBhZCA5IGtleQorICAgICAgICAvLyBWS19NVUxUSVBMWSAoNkEpIE11bHRpcGx5IGtleQor
ICAgICAgICAvLyBWS19BREQgKDZCKSBBZGQga2V5CisgICAgICAgIC8vIGhhbmRsZWQgYnkga2V5
IGNvZGUgYWJvdmUKKworICAgICAgICAvLyBWS19TRVBBUkFUT1IgKDZDKSBTZXBhcmF0b3Iga2V5
CisKKyAgICAgICAgLy8gVktfU1VCVFJBQ1QgKDZEKSBTdWJ0cmFjdCBrZXkKKyAgICAgICAgLy8g
VktfREVDSU1BTCAoNkUpIERlY2ltYWwga2V5CisgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERp
dmlkZSBrZXkKKyAgICAgICAgLy8gaGFuZGxlZCBieSBrZXkgY29kZSBhYm92ZQorCisgICAgICAg
IC8vIFZLX0YxICg3MCkgRjEga2V5CisgICAgICAgIGNhc2UgTlNGMUZ1bmN0aW9uS2V5OiByZXR1
cm4gMHg3MDsKKyAgICAgICAgLy8gVktfRjIgKDcxKSBGMiBrZXkKKyAgICAgICAgY2FzZSBOU0Yy
RnVuY3Rpb25LZXk6IHJldHVybiAweDcxOworICAgICAgICAvLyBWS19GMyAoNzIpIEYzIGtleQor
ICAgICAgICBjYXNlIE5TRjNGdW5jdGlvbktleTogcmV0dXJuIDB4NzI7CisgICAgICAgIC8vIFZL
X0Y0ICg3MykgRjQga2V5CisgICAgICAgIGNhc2UgTlNGNEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3
MzsKKyAgICAgICAgLy8gVktfRjUgKDc0KSBGNSBrZXkKKyAgICAgICAgY2FzZSBOU0Y1RnVuY3Rp
b25LZXk6IHJldHVybiAweDc0OworICAgICAgICAvLyBWS19GNiAoNzUpIEY2IGtleQorICAgICAg
ICBjYXNlIE5TRjZGdW5jdGlvbktleTogcmV0dXJuIDB4NzU7CisgICAgICAgIC8vIFZLX0Y3ICg3
NikgRjcga2V5CisgICAgICAgIGNhc2UgTlNGN0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg3NjsKKyAg
ICAgICAgLy8gVktfRjggKDc3KSBGOCBrZXkKKyAgICAgICAgY2FzZSBOU0Y4RnVuY3Rpb25LZXk6
IHJldHVybiAweDc3OworICAgICAgICAvLyBWS19GOSAoNzgpIEY5IGtleQorICAgICAgICBjYXNl
IE5TRjlGdW5jdGlvbktleTogcmV0dXJuIDB4Nzg7CisgICAgICAgIC8vIFZLX0YxMCAoNzkpIEYx
MCBrZXkKKyAgICAgICAgY2FzZSBOU0YxMEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3OTsKKyAgICAg
ICAgLy8gVktfRjExICg3QSkgRjExIGtleQorICAgICAgICBjYXNlIE5TRjExRnVuY3Rpb25LZXk6
IHJldHVybiAweDdBOworICAgICAgICAvLyBWS19GMTIgKDdCKSBGMTIga2V5CisgICAgICAgIGNh
c2UgTlNGMTJGdW5jdGlvbktleTogcmV0dXJuIDB4N0I7CisgICAgICAgIC8vIFZLX0YxMyAoN0Mp
IEYxMyBrZXkKKyAgICAgICAgY2FzZSBOU0YxM0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg3QzsKKyAg
ICAgICAgLy8gVktfRjE0ICg3RCkgRjE0IGtleQorICAgICAgICBjYXNlIE5TRjE0RnVuY3Rpb25L
ZXk6IHJldHVybiAweDdEOworICAgICAgICAvLyBWS19GMTUgKDdFKSBGMTUga2V5CisgICAgICAg
IGNhc2UgTlNGMTVGdW5jdGlvbktleTogcmV0dXJuIDB4N0U7CisgICAgICAgIC8vIFZLX0YxNiAo
N0YpIEYxNiBrZXkKKyAgICAgICAgY2FzZSBOU0YxNkZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3RjsK
KyAgICAgICAgLy8gVktfRjE3ICg4MEgpIEYxNyBrZXkKKyAgICAgICAgY2FzZSBOU0YxN0Z1bmN0
aW9uS2V5OiByZXR1cm4gMHg4MDsKKyAgICAgICAgLy8gVktfRjE4ICg4MUgpIEYxOCBrZXkKKyAg
ICAgICAgY2FzZSBOU0YxOEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4MTsKKyAgICAgICAgLy8gVktf
RjE5ICg4MkgpIEYxOSBrZXkKKyAgICAgICAgY2FzZSBOU0YxOUZ1bmN0aW9uS2V5OiByZXR1cm4g
MHg4MjsKKyAgICAgICAgLy8gVktfRjIwICg4M0gpIEYyMCBrZXkKKyAgICAgICAgY2FzZSBOU0Yy
MEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4MzsKKyAgICAgICAgLy8gVktfRjIxICg4NEgpIEYyMSBr
ZXkKKyAgICAgICAgY2FzZSBOU0YyMUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4NDsKKyAgICAgICAg
Ly8gVktfRjIyICg4NUgpIEYyMiBrZXkKKyAgICAgICAgY2FzZSBOU0YyMkZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHg4NTsKKyAgICAgICAgLy8gVktfRjIzICg4NkgpIEYyMyBrZXkKKyAgICAgICAgY2Fz
ZSBOU0YyM0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg4NjsKKyAgICAgICAgLy8gVktfRjI0ICg4N0gp
IEYyNCBrZXkKKyAgICAgICAgY2FzZSBOU0YyNEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4NzsKKwor
ICAgICAgICAvLyBWS19OVU1MT0NLICg5MCkgTlVNIExPQ0sga2V5CisKKyAgICAgICAgLy8gVktf
U0NST0xMICg5MSkgU0NST0xMIExPQ0sga2V5CisgICAgICAgIGNhc2UgTlNTY3JvbGxMb2NrRnVu
Y3Rpb25LZXk6IHJldHVybiAweDkxOworCisgICAgICAgIC8vIFZLX0xTSElGVCAoQTApIExlZnQg
U0hJRlQga2V5CisgICAgICAgIC8vIFZLX1JTSElGVCAoQTEpIFJpZ2h0IFNISUZUIGtleQorICAg
ICAgICAvLyBWS19MQ09OVFJPTCAoQTIpIExlZnQgQ09OVFJPTCBrZXkKKyAgICAgICAgLy8gVktf
UkNPTlRST0wgKEEzKSBSaWdodCBDT05UUk9MIGtleQorICAgICAgICAvLyBWS19MTUVOVSAoQTQp
IExlZnQgTUVOVSBrZXkKKyAgICAgICAgLy8gVktfUk1FTlUgKEE1KSBSaWdodCBNRU5VIGtleQor
ICAgICAgICAvLyBWS19CUk9XU0VSX0JBQ0sgKEE2KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIg
QmFjayBrZXkKKyAgICAgICAgLy8gVktfQlJPV1NFUl9GT1JXQVJEIChBNykgV2luZG93cyAyMDAw
L1hQOiBCcm93c2VyIEZvcndhcmQga2V5CisgICAgICAgIC8vIFZLX0JST1dTRVJfUkVGUkVTSCAo
QTgpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBSZWZyZXNoIGtleQorICAgICAgICAvLyBWS19C
Uk9XU0VSX1NUT1AgKEE5KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgU3RvcCBrZXkKKyAgICAg
ICAgLy8gVktfQlJPV1NFUl9TRUFSQ0ggKEFBKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgU2Vh
cmNoIGtleQorICAgICAgICAvLyBWS19CUk9XU0VSX0ZBVk9SSVRFUyAoQUIpIFdpbmRvd3MgMjAw
MC9YUDogQnJvd3NlciBGYXZvcml0ZXMga2V5CisgICAgICAgIC8vIFZLX0JST1dTRVJfSE9NRSAo
QUMpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBTdGFydCBhbmQgSG9tZSBrZXkKKyAgICAgICAg
Ly8gVktfVk9MVU1FX01VVEUgKEFEKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBNdXRlIGtleQor
ICAgICAgICAvLyBWS19WT0xVTUVfRE9XTiAoQUUpIFdpbmRvd3MgMjAwMC9YUDogVm9sdW1lIERv
d24ga2V5CisgICAgICAgIC8vIFZLX1ZPTFVNRV9VUCAoQUYpIFdpbmRvd3MgMjAwMC9YUDogVm9s
dW1lIFVwIGtleQorICAgICAgICAvLyBWS19NRURJQV9ORVhUX1RSQUNLIChCMCkgV2luZG93cyAy
MDAwL1hQOiBOZXh0IFRyYWNrIGtleQorICAgICAgICAvLyBWS19NRURJQV9QUkVWX1RSQUNLIChC
MSkgV2luZG93cyAyMDAwL1hQOiBQcmV2aW91cyBUcmFjayBrZXkKKyAgICAgICAgLy8gVktfTUVE
SUFfU1RPUCAoQjIpIFdpbmRvd3MgMjAwMC9YUDogU3RvcCBNZWRpYSBrZXkKKyAgICAgICAgLy8g
VktfTUVESUFfUExBWV9QQVVTRSAoQjMpIFdpbmRvd3MgMjAwMC9YUDogUGxheS9QYXVzZSBNZWRp
YSBrZXkKKyAgICAgICAgLy8gVktfTEFVTkNIX01BSUwgKEI0KSBXaW5kb3dzIDIwMDAvWFA6IFN0
YXJ0IE1haWwga2V5CisgICAgICAgIC8vIFZLX0xBVU5DSF9NRURJQV9TRUxFQ1QgKEI1KSBXaW5k
b3dzIDIwMDAvWFA6IFNlbGVjdCBNZWRpYSBrZXkKKyAgICAgICAgLy8gVktfTEFVTkNIX0FQUDEg
KEI2KSBXaW5kb3dzIDIwMDAvWFA6IFN0YXJ0IEFwcGxpY2F0aW9uIDEga2V5CisgICAgICAgIC8v
IFZLX0xBVU5DSF9BUFAyIChCNykgV2luZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAy
IGtleQorCisgICAgICAgIC8vIFZLX09FTV8xIChCQSkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBj
aGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3Ig
dGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJzs6JyBrZXkKKyAgICAgICAgY2FzZSAnOyc6
IGNhc2UgJzonOiByZXR1cm4gMHhCQTsKKyAgICAgICAgLy8gVktfT0VNX1BMVVMgKEJCKSBXaW5k
b3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnKycga2V5CisgICAgICAg
IGNhc2UgJz0nOiBjYXNlICcrJzogcmV0dXJuIDB4QkI7CisgICAgICAgIC8vIFZLX09FTV9DT01N
QSAoQkMpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcsJyBr
ZXkKKyAgICAgICAgY2FzZSAnLCc6IGNhc2UgJzwnOiByZXR1cm4gMHhCQzsKKyAgICAgICAgLy8g
VktfT0VNX01JTlVTIChCRCkgV2luZG93cyAyMDAwL1hQOiBGb3IgYW55IGNvdW50cnkvcmVnaW9u
LCB0aGUgJy0nIGtleQorICAgICAgICBjYXNlICctJzogY2FzZSAnXyc6IHJldHVybiAweEJEOwor
ICAgICAgICAvLyBWS19PRU1fUEVSSU9EIChCRSkgV2luZG93cyAyMDAwL1hQOiBGb3IgYW55IGNv
dW50cnkvcmVnaW9uLCB0aGUgJy4nIGtleQorICAgICAgICBjYXNlICcuJzogY2FzZSAnPic6IHJl
dHVybiAweEJFOworICAgICAgICAvLyBWS19PRU1fMiAoQkYpIFVzZWQgZm9yIG1pc2NlbGxhbmVv
dXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDog
Rm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICcvPycga2V5CisgICAgICAgIGNhc2Ug
Jy8nOiBjYXNlICc/JzogcmV0dXJuIDB4QkY7CisgICAgICAgIC8vIFZLX09FTV8zIChDMCkgVXNl
ZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4g
V2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ2B+JyBr
ZXkKKyAgICAgICAgY2FzZSAnYCc6IGNhc2UgJ34nOiByZXR1cm4gMHhDMDsKKyAgICAgICAgLy8g
VktfT0VNXzQgKERCKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2
YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5
Ym9hcmQsIHRoZSAnW3snIGtleQorICAgICAgICBjYXNlICdbJzogY2FzZSAneyc6IHJldHVybiAw
eERCOworICAgICAgICAvLyBWS19PRU1fNSAoREMpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hh
cmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRo
ZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdcfCcga2V5CisgICAgICAgIGNhc2UgJ1xcJzog
Y2FzZSAnfCc6IHJldHVybiAweERDOworICAgICAgICAvLyBWS19PRU1fNiAoREQpIFVzZWQgZm9y
IG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRv
d3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICddfScga2V5Cisg
ICAgICAgIGNhc2UgJ10nOiBjYXNlICd9JzogcmV0dXJuIDB4REQ7CisgICAgICAgIC8vIFZLX09F
TV83IChERSkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBi
eSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJk
LCB0aGUgJ3NpbmdsZS1xdW90ZS9kb3VibGUtcXVvdGUnIGtleQorICAgICAgICBjYXNlICdcJyc6
IGNhc2UgJyInOiByZXR1cm4gMHhERTsKKworICAgICAgICAvLyBWS19PRU1fOCAoREYpIFVzZWQg
Zm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuCisg
ICAgICAgIC8vIFZLX09FTV8xMDIgKEUyKSBXaW5kb3dzIDIwMDAvWFA6IEVpdGhlciB0aGUgYW5n
bGUgYnJhY2tldCBrZXkgb3IgdGhlIGJhY2tzbGFzaCBrZXkgb24gdGhlIFJUIDEwMi1rZXkga2V5
Ym9hcmQKKyAgICAgICAgLy8gVktfUFJPQ0VTU0tFWSAoRTUpIFdpbmRvd3MgOTUvOTgvTWUsIFdp
bmRvd3MgTlQgNC4wLCBXaW5kb3dzIDIwMDAvWFA6IElNRSBQUk9DRVNTIGtleQorICAgICAgICAv
LyBWS19QQUNLRVQgKEU3KSBXaW5kb3dzIDIwMDAvWFA6IFVzZWQgdG8gcGFzcyBVbmljb2RlIGNo
YXJhY3RlcnMgYXMgaWYgdGhleSB3ZXJlIGtleXN0cm9rZXMuIFRoZSBWS19QQUNLRVQga2V5IGlz
IHRoZSBsb3cgd29yZCBvZiBhIDMyLWJpdCBWaXJ0dWFsIEtleSB2YWx1ZSB1c2VkIGZvciBub24t
a2V5Ym9hcmQgaW5wdXQgbWV0aG9kcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBSZW1hcmsg
aW4gS0VZQkRJTlBVVCxTZW5kSW5wdXQsIFdNX0tFWURPV04sIGFuZCBXTV9LRVlVUAorICAgICAg
ICAvLyBWS19BVFROIChGNikgQXR0biBrZXkKKyAgICAgICAgLy8gVktfQ1JTRUwgKEY3KSBDclNl
bCBrZXkKKyAgICAgICAgLy8gVktfRVhTRUwgKEY4KSBFeFNlbCBrZXkKKyAgICAgICAgLy8gVktf
RVJFT0YgKEY5KSBFcmFzZSBFT0Yga2V5CisgICAgICAgIC8vIFZLX1BMQVkgKEZBKSBQbGF5IGtl
eQorICAgICAgICAvLyBWS19aT09NIChGQikgWm9vbSBrZXkKKyAgICAgICAgLy8gVktfTk9OQU1F
IChGQykgUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UKKyAgICAgICAgLy8gVktfUEExIChGRCkgUEEx
IGtleQorICAgICAgICAvLyBWS19PRU1fQ0xFQVIgKEZFKSBDbGVhciBrZXkKKyAgICB9CisKKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzS2V5VXBFdmVudChOU0V2ZW50
ICpldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5cGVdICE9IE5TRmxhZ3NDaGFuZ2VkKQorICAg
ICAgICByZXR1cm4gW2V2ZW50IHR5cGVdID09IE5TS2V5VXA7CisgICAgLy8gRklYTUU6IFRoaXMg
bG9naWMgZmFpbHMgaWYgdGhlIHVzZXIgcHJlc3NlcyBib3RoIFNoaWZ0IGtleXMgYXQgb25jZSwg
Zm9yIGV4YW1wbGU6CisgICAgLy8gd2UgdHJlYXQgcmVsZWFzaW5nIG9uZSBvZiB0aGVtIGFzIGtl
eURvd24uCisgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKKyAgICAgICAgY2FzZSA1NDog
Ly8gUmlnaHQgQ29tbWFuZAorICAgICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKKyAgICAg
ICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykg
PT0gMDsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jaworICAgICAg
ICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FscGhhU2hpZnRLZXlNYXNr
KSA9PSAwOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKKyAg
ICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spID09IDA7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKKyAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0
CisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRl
S2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0
cmwKKyAgICAgICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAorICAgICAgICAgICAgcmV0dXJuIChb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKSA9PSAwOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgNjM6IC8vIEZ1bmN0aW9uCisgICAgICAgICAgICByZXR1cm4gKFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TRnVuY3Rpb25LZXlNYXNrKSA9PSAwOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHRleHRGcm9tRXZlbnQo
TlNFdmVudCogZXZlbnQpCit7CisgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdl
ZCkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBbZXZlbnQgY2hhcmFjdGVyc107Cit9
CisgICAgCisgICAgCitzdGF0aWMgaW5saW5lIFN0cmluZyB1bm1vZGlmaWVkVGV4dEZyb21FdmVu
dChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFu
Z2VkKQorICAgICAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFtldmVudCBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnNdOworfQorCitQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudChOU0V2ZW50ICpldmVudCkKKyAgICA6IG1fdHlwZShpc0tleVVwRXZlbnQoZXZl
bnQpID8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6S2V5RG93bikKKyAgICAsIG1fdGV4dCh0ZXh0RnJvbUV2ZW50KGV2ZW50KSkKKyAgICAsIG1f
dW5tb2RpZmllZFRleHQodW5tb2RpZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpKQorICAgICwgbV9r
ZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCkpCisgICAgLCBtX2F1
dG9SZXBlYXQoKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkgJiYgW2V2ZW50IGlzQVJl
cGVhdF0pCisgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KGV2ZW50KSkKKyAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoW2V2ZW50IGtleUNv
ZGVdKQorICAgICwgbV9pc0tleXBhZChpc0tleXBhZEV2ZW50KGV2ZW50KSkKKyAgICAsIG1fc2hp
ZnRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCisgICAgLCBtX2N0
cmxLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKKyAgICAsIG1f
YWx0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKKyAgICAs
IG1fbWV0YUtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQorICAg
ICwgbV9tYWNFdmVudChldmVudCkKK3sKKyAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9S
ZXR1cm4gLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3Rl
ciBmb3IgRW50ZXIuCisgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09ICdccicpIHsK
KyAgICAgICAgbV90ZXh0ID0gIlxyIjsKKyAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJcciI7
CisgICAgfQorCisgICAgLy8gVGhlIGFkanVzdG1lbnRzIGJlbG93IGFyZSBvbmx5IG5lZWRlZCBp
biBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUsIGJ1dCB3ZSBjYW5ub3QgdGVsbCB3aGF0IG1v
ZGUgd2UgYXJlIGluIGZyb20gaGVyZS4KKworICAgIC8vIFR1cm4gMHg3RiBpbnRvIDgsIGJlY2F1
c2UgYmFja3NwYWNlIG5lZWRzIHRvIGFsd2F5cyBiZSA4LgorICAgIGlmIChtX3RleHQgPT0gIlx4
N0YiKQorICAgICAgICBtX3RleHQgPSAiXHg4IjsKKyAgICBpZiAobV91bm1vZGlmaWVkVGV4dCA9
PSAiXHg3RiIpCisgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg4IjsKKyAgICAvLyBBbHdh
eXMgdXNlIDkgZm9yIHRhYiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJl
bnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIuCisgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlD
b2RlID09IDkpIHsKKyAgICAgICAgbV90ZXh0ID0gIlx4OSI7CisgICAgICAgIG1fdW5tb2RpZmll
ZFRleHQgPSAiXHg5IjsKKyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojpk
aXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoVHlwZSB0eXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJp
bGl0eU1vZGUpCit7CisgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRv
IFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29u
dmVyc2lvbnMuCisgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlEb3duKTsKKyAgICBBU1NFUlQodHlw
ZSA9PSBSYXdLZXlEb3duIHx8IHR5cGUgPT0gQ2hhcik7CisgICAgbV90eXBlID0gdHlwZTsKKyAg
ICBpZiAoYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKKyAg
ICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fa2V5SWRlbnRpZmllciA9IFN0cmluZygpOworICAgICAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5
Q29kZSA9IDA7CisgICAgICAgIGlmIChtX3RleHQubGVuZ3RoKCkgPT0gMSAmJiAobV90ZXh0WzBV
XSA+PSAweEY3MDAgJiYgbV90ZXh0WzBVXSA8PSAweEY3RkYpKSB7CisgICAgICAgICAgICAvLyBB
Y2NvcmRpbmcgdG8gTlNFdmVudHMuaCwgT3BlblN0ZXAgcmVzZXJ2ZXMgdGhlIHJhbmdlIDB4Rjcw
MC0weEY4RkYgZm9yIGZ1bmN0aW9uIGtleXMuIEhvd2V2ZXIsIHNvbWUgYWN0dWFsIHByaXZhdGUg
dXNlIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIC8vIGhhcHBlbiB0byBiZSBpbiB0aGlzIHJhbmdl
LCBlLmcuIHRoZSBBcHBsZSBsb2dvIChPcHRpb24rU2hpZnQrSykuCisgICAgICAgICAgICAvLyAw
eEY3RkYgaXMgYW4gYXJiaXRyYXJ5IGN1dC1vZmYuCisgICAgICAgICAgICBtX3RleHQgPSBTdHJp
bmcoKTsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworYm9vbCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRDYXBzTG9j
a1N0YXRlKCkKK3sKKyAgICByZXR1cm4gR2V0Q3VycmVudEtleU1vZGlmaWVycygpICYgYWxwaGFM
b2NrOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1t
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQs
MjgyICsyNCw2MjEgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oIgorI2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5oIgogCi0jaW1wb3J0
ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+Ci0jaW1wb3J0IDx3dGYvQVND
SUlDVHlwZS5oPgorI2lmIFBMQVRGT1JNKENPQ09BKQogCi11c2luZyBuYW1lc3BhY2UgV1RGOwor
I2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChO
U0V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2Vk
KSAKLSAgICAgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgICAgIGNhc2Ug
NTQ6IC8vIFJpZ2h0IENvbW1hbmQKLSAgICAgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFu
ZAotICAgICAgICAgICAgICAgIHJldHVybiAiTWV0YSI7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jawotICAgICAgICAgICAgICAgIHJldHVybiAiQ2Fw
c0xvY2siOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBT
aGlmdAotICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKLSAgICAgICAgICAgICAg
ICByZXR1cm4gIlNoaWZ0IjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgNTg6
IC8vIExlZnQgQWx0Ci0gICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKLSAgICAgICAg
ICAgICAgICByZXR1cm4gIkFsdCI7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNl
IDU5OiAvLyBMZWZ0IEN0cmwKLSAgICAgICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAg
ICAgICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICAgIH0KK2ludCB3aW5kb3dzS2V5Q29kZUZv
cktleUV2ZW50KHVpbnQxNl90IGtleUNvZGUsIE5TU3RyaW5nKiBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMpIHsKKyAgICBzd2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgICAgIC8vIFZLX1RB
QiAoMDkpIFRBQiBrZXkKKyAgICAgICAgY2FzZSA0ODogcmV0dXJuIDB4MDk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIFZLX0FQUFMgKDVEKSBSaWdodCB3aW5kb3dzL21ldGEga2V5Cisg
ICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKKyAgICAgICAgICAgIHJldHVybiAweDVE
OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19MV0lOICg1QikgTGVmdCB3aW5kb3dz
L21ldGEga2V5CisgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAorICAgICAgICAgICAg
cmV0dXJuIDB4NUI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX0NBUElUQUwgKDE0
KSBjYXBzIGxvY2tzIGtleQorICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jaworICAgICAgICAg
ICAgcmV0dXJuIDB4MTQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX1NISUZUICgx
MCkgZWl0aGVyIHNoaWZ0IGtleQorICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0CisgICAg
ICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICByZXR1cm4gMHgxMDsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktfTUVOVSAoMTIpIGVpdGhlciBhbHQga2V5Cisg
ICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0CisgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFs
dAorICAgICAgICAgICAgcmV0dXJuIDB4MTI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFZLX0NPTlRST0wgKDExKSBlaXRoZXIgY3RybCBrZXkKKyAgICAgICAgY2FzZSA1OTogLy8gTGVm
dCBDdHJsCisgICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKKyAgICAgICAgICAgIHJldHVy
biAweDExOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19DTEVBUiAoMEMpIENMRUFS
IGtleQorICAgICAgICBjYXNlIDcxOiByZXR1cm4gMHgwQzsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gVktfTlVNUEFEMCAoNjApIE51bWVyaWMga2V5cGFkIDAga2V5CisgICAgICAgIGNh
c2UgODI6IHJldHVybiAweDYwOworICAgICAgICAgICAgLy8gVktfTlVNUEFEMSAoNjEpIE51bWVy
aWMga2V5cGFkIDEga2V5CisgICAgICAgIGNhc2UgODM6IHJldHVybiAweDYxOworICAgICAgICAg
ICAgLy8gVktfTlVNUEFEMiAoNjIpIE51bWVyaWMga2V5cGFkIDIga2V5CisgICAgICAgIGNhc2Ug
ODQ6IHJldHVybiAweDYyOworICAgICAgICAgICAgLy8gVktfTlVNUEFEMyAoNjMpIE51bWVyaWMg
a2V5cGFkIDMga2V5CisgICAgICAgIGNhc2UgODU6IHJldHVybiAweDYzOworICAgICAgICAgICAg
Ly8gVktfTlVNUEFENCAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5CisgICAgICAgIGNhc2UgODY6
IHJldHVybiAweDY0OworICAgICAgICAgICAgLy8gVktfTlVNUEFENSAoNjUpIE51bWVyaWMga2V5
cGFkIDUga2V5CisgICAgICAgIGNhc2UgODc6IHJldHVybiAweDY1OworICAgICAgICAgICAgLy8g
VktfTlVNUEFENiAoNjYpIE51bWVyaWMga2V5cGFkIDYga2V5CisgICAgICAgIGNhc2UgODg6IHJl
dHVybiAweDY2OworICAgICAgICAgICAgLy8gVktfTlVNUEFENyAoNjcpIE51bWVyaWMga2V5cGFk
IDcga2V5CisgICAgICAgIGNhc2UgODk6IHJldHVybiAweDY3OworICAgICAgICAgICAgLy8gVktf
TlVNUEFEOCAoNjgpIE51bWVyaWMga2V5cGFkIDgga2V5CisgICAgICAgIGNhc2UgOTE6IHJldHVy
biAweDY4OworICAgICAgICAgICAgLy8gVktfTlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkg
a2V5CisgICAgICAgIGNhc2UgOTI6IHJldHVybiAweDY5OworICAgICAgICAgICAgLy8gVktfTVVM
VElQTFkgKDZBKSBNdWx0aXBseSBrZXkKKyAgICAgICAgY2FzZSA2NzogcmV0dXJuIDB4NkE7Cisg
ICAgICAgICAgICAvLyBWS19BREQgKDZCKSBBZGQga2V5CisgICAgICAgIGNhc2UgNjk6IHJldHVy
biAweDZCOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19TVUJUUkFDVCAoNkQpIFN1
YnRyYWN0IGtleQorICAgICAgICBjYXNlIDc4OiByZXR1cm4gMHg2RDsKKyAgICAgICAgICAgIC8v
IFZLX0RFQ0lNQUwgKDZFKSBEZWNpbWFsIGtleQorICAgICAgICBjYXNlIDY1OiByZXR1cm4gMHg2
RTsKKyAgICAgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERpdmlkZSBrZXkKKyAgICAgICAgY2Fz
ZSA3NTogcmV0dXJuIDB4NkY7CisgICAgfQogICAgIAotICAgIE5TU3RyaW5nICpzID0gW2V2ZW50
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkg
ewotICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2Yg
Y2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3RoXSk7Ci0gICAgICAgIHJldHVy
biAiVW5pZGVudGlmaWVkIjsKKyAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBs
ZW5ndGhdICE9IDEpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHN3aXRjaCAoW2NoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyBjaGFyYWN0ZXJBdEluZGV4OjBdKSB7CisgICAgICAgICAg
ICAvLyBWS19MQlVUVE9OICgwMSkgTGVmdCBtb3VzZSBidXR0b24KKyAgICAgICAgICAgIC8vIFZL
X1JCVVRUT04gKDAyKSBSaWdodCBtb3VzZSBidXR0b24KKyAgICAgICAgICAgIC8vIFZLX0NBTkNF
TCAoMDMpIENvbnRyb2wtYnJlYWsgcHJvY2Vzc2luZworICAgICAgICAgICAgLy8gVktfTUJVVFRP
TiAoMDQpIE1pZGRsZSBtb3VzZSBidXR0b24gKHRocmVlLWJ1dHRvbiBtb3VzZSkKKyAgICAgICAg
ICAgIC8vIFZLX1hCVVRUT04xICgwNSkKKyAgICAgICAgICAgIC8vIFZLX1hCVVRUT04yICgwNikK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktfQkFDSyAoMDgpIEJBQ0tTUEFDRSBrZXkK
KyAgICAgICAgY2FzZSA4OiBjYXNlIDB4N0Y6IHJldHVybiAweDA4OworICAgICAgICAgICAgLy8g
VktfVEFCICgwOSkgVEFCIGtleQorICAgICAgICBjYXNlIDk6IHJldHVybiAweDA5OworICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBWS19DTEVBUiAoMEMpIENMRUFSIGtleQorICAgICAgICAg
ICAgLy8gaGFuZGxlZCBieSBrZXkgY29kZSBhYm92ZQorICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBWS19SRVRVUk4gKDBEKQorICAgICAgICAgICAgLy8gPHJkYXI6Ly83NzA5NDA4PjogV2Ug
Z2V0IDEwICgnXG4nKSBmcm9tIFVJS2l0IHdoZW4gdXNpbmcgdGhlIHNvZnR3YXJlIGtleWJvYXJk
CisgICAgICAgIGNhc2UgMHhEOiBjYXNlIDM6IGNhc2UgMTA6IHJldHVybiAweDBEOworICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBWS19TSElGVCAoMTApIFNISUZUIGtleQorICAgICAgICAg
ICAgLy8gVktfQ09OVFJPTCAoMTEpIENUUkwga2V5CisgICAgICAgICAgICAvLyBWS19NRU5VICgx
MikgQUxUIGtleQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19QQVVTRSAoMTMpIFBB
VVNFIGtleQorICAgICAgICBjYXNlIE5TUGF1c2VGdW5jdGlvbktleTogcmV0dXJuIDB4MTM7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX0NBUElUQUwgKDE0KSBDQVBTIExPQ0sga2V5
CisgICAgICAgICAgICAvLyBWS19LQU5BICgxNSkgSW5wdXQgTWV0aG9kIEVkaXRvciAoSU1FKSBL
YW5hIG1vZGUKKyAgICAgICAgICAgIC8vIFZLX0hBTkdVRUwgKDE1KSBJTUUgSGFuZ3VlbCBtb2Rl
IChtYWludGFpbmVkIGZvciBjb21wYXRpYmlsaXR5OyB1c2UgVktfSEFOR1VMKQorICAgICAgICAg
ICAgLy8gVktfSEFOR1VMICgxNSkgSU1FIEhhbmd1bCBtb2RlCisgICAgICAgICAgICAvLyBWS19K
VU5KQSAoMTcpIElNRSBKdW5qYSBtb2RlCisgICAgICAgICAgICAvLyBWS19GSU5BTCAoMTgpIElN
RSBmaW5hbCBtb2RlCisgICAgICAgICAgICAvLyBWS19IQU5KQSAoMTkpIElNRSBIYW5qYSBtb2Rl
CisgICAgICAgICAgICAvLyBWS19LQU5KSSAoMTkpIElNRSBLYW5qaSBtb2RlCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIFZLX0VTQ0FQRSAoMUIpIEVTQyBrZXkKKyAgICAgICAgY2FzZSAw
eDFCOiByZXR1cm4gMHgxQjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktfQ09OVkVS
VCAoMUMpIElNRSBjb252ZXJ0CisgICAgICAgICAgICAvLyBWS19OT05DT05WRVJUICgxRCkgSU1F
IG5vbmNvbnZlcnQKKyAgICAgICAgICAgIC8vIFZLX0FDQ0VQVCAoMUUpIElNRSBhY2NlcHQKKyAg
ICAgICAgICAgIC8vIFZLX01PREVDSEFOR0UgKDFGKSBJTUUgbW9kZSBjaGFuZ2UgcmVxdWVzdAor
ICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19TUEFDRSAoMjApIFNQQUNFQkFSCisgICAg
ICAgIGNhc2UgJyAnOiByZXR1cm4gMHgyMDsKKyAgICAgICAgICAgIC8vIFZLX1BSSU9SICgyMSkg
UEFHRSBVUCBrZXkKKyAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgy
MTsKKyAgICAgICAgICAgIC8vIFZLX05FWFQgKDIyKSBQQUdFIERPV04ga2V5CisgICAgICAgIGNh
c2UgTlNQYWdlRG93bkZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyMjsKKyAgICAgICAgICAgIC8vIFZL
X0VORCAoMjMpIEVORCBrZXkKKyAgICAgICAgY2FzZSBOU0VuZEZ1bmN0aW9uS2V5OiByZXR1cm4g
MHgyMzsKKyAgICAgICAgICAgIC8vIFZLX0hPTUUgKDI0KSBIT01FIGtleQorICAgICAgICBjYXNl
IE5TSG9tZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyNDsKKyAgICAgICAgICAgIC8vIFZLX0xFRlQg
KDI1KSBMRUZUIEFSUk9XIGtleQorICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6
IHJldHVybiAweDI1OworICAgICAgICAgICAgLy8gVktfVVAgKDI2KSBVUCBBUlJPVyBrZXkKKyAg
ICAgICAgY2FzZSBOU1VwQXJyb3dGdW5jdGlvbktleTogcmV0dXJuIDB4MjY7CisgICAgICAgICAg
ICAvLyBWS19SSUdIVCAoMjcpIFJJR0hUIEFSUk9XIGtleQorICAgICAgICBjYXNlIE5TUmlnaHRB
cnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgyNzsKKyAgICAgICAgICAgIC8vIFZLX0RPV04gKDI4
KSBET1dOIEFSUk9XIGtleQorICAgICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6IHJl
dHVybiAweDI4OworICAgICAgICAgICAgLy8gVktfU0VMRUNUICgyOSkgU0VMRUNUIGtleQorICAg
ICAgICBjYXNlIE5TU2VsZWN0RnVuY3Rpb25LZXk6IHJldHVybiAweDI5OworICAgICAgICAgICAg
Ly8gVktfUFJJTlQgKDJBKSBQUklOVCBrZXkKKyAgICAgICAgY2FzZSBOU1ByaW50RnVuY3Rpb25L
ZXk6IHJldHVybiAweDJBOworICAgICAgICAgICAgLy8gVktfRVhFQ1VURSAoMkIpIEVYRUNVVEUg
a2V5CisgICAgICAgIGNhc2UgTlNFeGVjdXRlRnVuY3Rpb25LZXk6IHJldHVybiAweDJCOworICAg
ICAgICAgICAgLy8gVktfU05BUFNIT1QgKDJDKSBQUklOVCBTQ1JFRU4ga2V5CisgICAgICAgIGNh
c2UgTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyQzsKKyAgICAgICAgICAgIC8v
IFZLX0lOU0VSVCAoMkQpIElOUyBrZXkKKyAgICAgICAgY2FzZSBOU0luc2VydEZ1bmN0aW9uS2V5
OgorICAgICAgICBjYXNlIE5TSGVscEZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyRDsKKyAgICAgICAg
ICAgIC8vIFZLX0RFTEVURSAoMkUpIERFTCBrZXkKKyAgICAgICAgY2FzZSBOU0RlbGV0ZUZ1bmN0
aW9uS2V5OiByZXR1cm4gMHgyRTsgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX0hFTFAg
KDJGKSBIRUxQIGtleQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAgKDMwKSAwIGtleQor
ICAgICAgICBjYXNlICcwJzogY2FzZSAnKSc6IHJldHVybiAweDMwOworICAgICAgICAgICAgLy8g
ICgzMSkgMSBrZXkKKyAgICAgICAgY2FzZSAnMSc6IGNhc2UgJyEnOiByZXR1cm4gMHgzMTsKKyAg
ICAgICAgICAgIC8vICAoMzIpIDIga2V5CisgICAgICAgIGNhc2UgJzInOiBjYXNlICdAJzogcmV0
dXJuIDB4MzI7CisgICAgICAgICAgICAvLyAgKDMzKSAzIGtleQorICAgICAgICBjYXNlICczJzog
Y2FzZSAnIyc6IHJldHVybiAweDMzOworICAgICAgICAgICAgLy8gICgzNCkgNCBrZXkKKyAgICAg
ICAgY2FzZSAnNCc6IGNhc2UgJyQnOiByZXR1cm4gMHgzNDsKKyAgICAgICAgICAgIC8vICAoMzUp
IDUga2V5CisgICAgICAgIGNhc2UgJzUnOiBjYXNlICclJzogcmV0dXJuIDB4MzU7CisgICAgICAg
ICAgICAvLyAgKDM2KSA2IGtleQorICAgICAgICBjYXNlICc2JzogY2FzZSAnXic6IHJldHVybiAw
eDM2OworICAgICAgICAgICAgLy8gICgzNykgNyBrZXkKKyAgICAgICAgY2FzZSAnNyc6IGNhc2Ug
JyYnOiByZXR1cm4gMHgzNzsKKyAgICAgICAgICAgIC8vICAoMzgpIDgga2V5CisgICAgICAgIGNh
c2UgJzgnOiBjYXNlICcqJzogcmV0dXJuIDB4Mzg7CisgICAgICAgICAgICAvLyAgKDM5KSA5IGtl
eQorICAgICAgICBjYXNlICc5JzogY2FzZSAnKCc6IHJldHVybiAweDM5OworICAgICAgICAgICAg
Ly8gICg0MSkgQSBrZXkKKyAgICAgICAgY2FzZSAnYSc6IGNhc2UgJ0EnOiByZXR1cm4gMHg0MTsK
KyAgICAgICAgICAgIC8vICAoNDIpIEIga2V5CisgICAgICAgIGNhc2UgJ2InOiBjYXNlICdCJzog
cmV0dXJuIDB4NDI7CisgICAgICAgICAgICAvLyAgKDQzKSBDIGtleQorICAgICAgICBjYXNlICdj
JzogY2FzZSAnQyc6IHJldHVybiAweDQzOworICAgICAgICAgICAgLy8gICg0NCkgRCBrZXkKKyAg
ICAgICAgY2FzZSAnZCc6IGNhc2UgJ0QnOiByZXR1cm4gMHg0NDsKKyAgICAgICAgICAgIC8vICAo
NDUpIEUga2V5CisgICAgICAgIGNhc2UgJ2UnOiBjYXNlICdFJzogcmV0dXJuIDB4NDU7CisgICAg
ICAgICAgICAvLyAgKDQ2KSBGIGtleQorICAgICAgICBjYXNlICdmJzogY2FzZSAnRic6IHJldHVy
biAweDQ2OworICAgICAgICAgICAgLy8gICg0NykgRyBrZXkKKyAgICAgICAgY2FzZSAnZyc6IGNh
c2UgJ0cnOiByZXR1cm4gMHg0NzsKKyAgICAgICAgICAgIC8vICAoNDgpIEgga2V5CisgICAgICAg
IGNhc2UgJ2gnOiBjYXNlICdIJzogcmV0dXJuIDB4NDg7CisgICAgICAgICAgICAvLyAgKDQ5KSBJ
IGtleQorICAgICAgICBjYXNlICdpJzogY2FzZSAnSSc6IHJldHVybiAweDQ5OworICAgICAgICAg
ICAgLy8gICg0QSkgSiBrZXkKKyAgICAgICAgY2FzZSAnaic6IGNhc2UgJ0onOiByZXR1cm4gMHg0
QTsKKyAgICAgICAgICAgIC8vICAoNEIpIEsga2V5CisgICAgICAgIGNhc2UgJ2snOiBjYXNlICdL
JzogcmV0dXJuIDB4NEI7CisgICAgICAgICAgICAvLyAgKDRDKSBMIGtleQorICAgICAgICBjYXNl
ICdsJzogY2FzZSAnTCc6IHJldHVybiAweDRDOworICAgICAgICAgICAgLy8gICg0RCkgTSBrZXkK
KyAgICAgICAgY2FzZSAnbSc6IGNhc2UgJ00nOiByZXR1cm4gMHg0RDsKKyAgICAgICAgICAgIC8v
ICAoNEUpIE4ga2V5CisgICAgICAgIGNhc2UgJ24nOiBjYXNlICdOJzogcmV0dXJuIDB4NEU7Cisg
ICAgICAgICAgICAvLyAgKDRGKSBPIGtleQorICAgICAgICBjYXNlICdvJzogY2FzZSAnTyc6IHJl
dHVybiAweDRGOworICAgICAgICAgICAgLy8gICg1MCkgUCBrZXkKKyAgICAgICAgY2FzZSAncCc6
IGNhc2UgJ1AnOiByZXR1cm4gMHg1MDsKKyAgICAgICAgICAgIC8vICAoNTEpIFEga2V5CisgICAg
ICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogcmV0dXJuIDB4NTE7CisgICAgICAgICAgICAvLyAgKDUy
KSBSIGtleQorICAgICAgICBjYXNlICdyJzogY2FzZSAnUic6IHJldHVybiAweDUyOworICAgICAg
ICAgICAgLy8gICg1MykgUyBrZXkKKyAgICAgICAgY2FzZSAncyc6IGNhc2UgJ1MnOiByZXR1cm4g
MHg1MzsKKyAgICAgICAgICAgIC8vICAoNTQpIFQga2V5CisgICAgICAgIGNhc2UgJ3QnOiBjYXNl
ICdUJzogcmV0dXJuIDB4NTQ7CisgICAgICAgICAgICAvLyAgKDU1KSBVIGtleQorICAgICAgICBj
YXNlICd1JzogY2FzZSAnVSc6IHJldHVybiAweDU1OworICAgICAgICAgICAgLy8gICg1NikgViBr
ZXkKKyAgICAgICAgY2FzZSAndic6IGNhc2UgJ1YnOiByZXR1cm4gMHg1NjsKKyAgICAgICAgICAg
IC8vICAoNTcpIFcga2V5CisgICAgICAgIGNhc2UgJ3cnOiBjYXNlICdXJzogcmV0dXJuIDB4NTc7
CisgICAgICAgICAgICAvLyAgKDU4KSBYIGtleQorICAgICAgICBjYXNlICd4JzogY2FzZSAnWCc6
IHJldHVybiAweDU4OworICAgICAgICAgICAgLy8gICg1OSkgWSBrZXkKKyAgICAgICAgY2FzZSAn
eSc6IGNhc2UgJ1knOiByZXR1cm4gMHg1OTsKKyAgICAgICAgICAgIC8vICAoNUEpIFoga2V5Cisg
ICAgICAgIGNhc2UgJ3onOiBjYXNlICdaJzogcmV0dXJuIDB4NUE7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIFZLX0xXSU4gKDVCKSBMZWZ0IFdpbmRvd3Mga2V5IChNaWNyb3NvZnQgTmF0
dXJhbCBrZXlib2FyZCkKKyAgICAgICAgICAgIC8vIFZLX1JXSU4gKDVDKSBSaWdodCBXaW5kb3dz
IGtleSAoTmF0dXJhbCBrZXlib2FyZCkKKyAgICAgICAgICAgIC8vIFZLX0FQUFMgKDVEKSBBcHBs
aWNhdGlvbnMga2V5IChOYXR1cmFsIGtleWJvYXJkKQorICAgICAgICAgICAgLy8gVktfU0xFRVAg
KDVGKSBDb21wdXRlciBTbGVlcCBrZXkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVktf
TlVNUEFEMCAoNjApIE51bWVyaWMga2V5cGFkIDAga2V5CisgICAgICAgICAgICAvLyBWS19OVU1Q
QUQxICg2MSkgTnVtZXJpYyBrZXlwYWQgMSBrZXkKKyAgICAgICAgICAgIC8vIFZLX05VTVBBRDIg
KDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQorICAgICAgICAgICAgLy8gVktfTlVNUEFEMyAoNjMp
IE51bWVyaWMga2V5cGFkIDMga2V5CisgICAgICAgICAgICAvLyBWS19OVU1QQUQ0ICg2NCkgTnVt
ZXJpYyBrZXlwYWQgNCBrZXkKKyAgICAgICAgICAgIC8vIFZLX05VTVBBRDUgKDY1KSBOdW1lcmlj
IGtleXBhZCA1IGtleQorICAgICAgICAgICAgLy8gVktfTlVNUEFENiAoNjYpIE51bWVyaWMga2V5
cGFkIDYga2V5CisgICAgICAgICAgICAvLyBWS19OVU1QQUQ3ICg2NykgTnVtZXJpYyBrZXlwYWQg
NyBrZXkKKyAgICAgICAgICAgIC8vIFZLX05VTVBBRDggKDY4KSBOdW1lcmljIGtleXBhZCA4IGtl
eQorICAgICAgICAgICAgLy8gVktfTlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5Cisg
ICAgICAgICAgICAvLyBWS19NVUxUSVBMWSAoNkEpIE11bHRpcGx5IGtleQorICAgICAgICAgICAg
Ly8gVktfQUREICg2QikgQWRkIGtleQorICAgICAgICAgICAgLy8gaGFuZGxlZCBieSBrZXkgY29k
ZSBhYm92ZQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19TRVBBUkFUT1IgKDZDKSBT
ZXBhcmF0b3Iga2V5CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZLX1NVQlRSQUNUICg2
RCkgU3VidHJhY3Qga2V5CisgICAgICAgICAgICAvLyBWS19ERUNJTUFMICg2RSkgRGVjaW1hbCBr
ZXkKKyAgICAgICAgICAgIC8vIFZLX0RJVklERSAoNkYpIERpdmlkZSBrZXkKKyAgICAgICAgICAg
IC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gVktfRjEgKDcwKSBGMSBrZXkKKyAgICAgICAgY2FzZSBOU0YxRnVuY3Rpb25LZXk6IHJldHVy
biAweDcwOworICAgICAgICAgICAgLy8gVktfRjIgKDcxKSBGMiBrZXkKKyAgICAgICAgY2FzZSBO
U0YyRnVuY3Rpb25LZXk6IHJldHVybiAweDcxOworICAgICAgICAgICAgLy8gVktfRjMgKDcyKSBG
MyBrZXkKKyAgICAgICAgY2FzZSBOU0YzRnVuY3Rpb25LZXk6IHJldHVybiAweDcyOworICAgICAg
ICAgICAgLy8gVktfRjQgKDczKSBGNCBrZXkKKyAgICAgICAgY2FzZSBOU0Y0RnVuY3Rpb25LZXk6
IHJldHVybiAweDczOworICAgICAgICAgICAgLy8gVktfRjUgKDc0KSBGNSBrZXkKKyAgICAgICAg
Y2FzZSBOU0Y1RnVuY3Rpb25LZXk6IHJldHVybiAweDc0OworICAgICAgICAgICAgLy8gVktfRjYg
KDc1KSBGNiBrZXkKKyAgICAgICAgY2FzZSBOU0Y2RnVuY3Rpb25LZXk6IHJldHVybiAweDc1Owor
ICAgICAgICAgICAgLy8gVktfRjcgKDc2KSBGNyBrZXkKKyAgICAgICAgY2FzZSBOU0Y3RnVuY3Rp
b25LZXk6IHJldHVybiAweDc2OworICAgICAgICAgICAgLy8gVktfRjggKDc3KSBGOCBrZXkKKyAg
ICAgICAgY2FzZSBOU0Y4RnVuY3Rpb25LZXk6IHJldHVybiAweDc3OworICAgICAgICAgICAgLy8g
VktfRjkgKDc4KSBGOSBrZXkKKyAgICAgICAgY2FzZSBOU0Y5RnVuY3Rpb25LZXk6IHJldHVybiAw
eDc4OworICAgICAgICAgICAgLy8gVktfRjEwICg3OSkgRjEwIGtleQorICAgICAgICBjYXNlIE5T
RjEwRnVuY3Rpb25LZXk6IHJldHVybiAweDc5OworICAgICAgICAgICAgLy8gVktfRjExICg3QSkg
RjExIGtleQorICAgICAgICBjYXNlIE5TRjExRnVuY3Rpb25LZXk6IHJldHVybiAweDdBOworICAg
ICAgICAgICAgLy8gVktfRjEyICg3QikgRjEyIGtleQorICAgICAgICBjYXNlIE5TRjEyRnVuY3Rp
b25LZXk6IHJldHVybiAweDdCOworICAgICAgICAgICAgLy8gVktfRjEzICg3QykgRjEzIGtleQor
ICAgICAgICBjYXNlIE5TRjEzRnVuY3Rpb25LZXk6IHJldHVybiAweDdDOworICAgICAgICAgICAg
Ly8gVktfRjE0ICg3RCkgRjE0IGtleQorICAgICAgICBjYXNlIE5TRjE0RnVuY3Rpb25LZXk6IHJl
dHVybiAweDdEOworICAgICAgICAgICAgLy8gVktfRjE1ICg3RSkgRjE1IGtleQorICAgICAgICBj
YXNlIE5TRjE1RnVuY3Rpb25LZXk6IHJldHVybiAweDdFOworICAgICAgICAgICAgLy8gVktfRjE2
ICg3RikgRjE2IGtleQorICAgICAgICBjYXNlIE5TRjE2RnVuY3Rpb25LZXk6IHJldHVybiAweDdG
OworICAgICAgICAgICAgLy8gVktfRjE3ICg4MEgpIEYxNyBrZXkKKyAgICAgICAgY2FzZSBOU0Yx
N0Z1bmN0aW9uS2V5OiByZXR1cm4gMHg4MDsKKyAgICAgICAgICAgIC8vIFZLX0YxOCAoODFIKSBG
MTgga2V5CisgICAgICAgIGNhc2UgTlNGMThGdW5jdGlvbktleTogcmV0dXJuIDB4ODE7CisgICAg
ICAgICAgICAvLyBWS19GMTkgKDgySCkgRjE5IGtleQorICAgICAgICBjYXNlIE5TRjE5RnVuY3Rp
b25LZXk6IHJldHVybiAweDgyOworICAgICAgICAgICAgLy8gVktfRjIwICg4M0gpIEYyMCBrZXkK
KyAgICAgICAgY2FzZSBOU0YyMEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg4MzsKKyAgICAgICAgICAg
IC8vIFZLX0YyMSAoODRIKSBGMjEga2V5CisgICAgICAgIGNhc2UgTlNGMjFGdW5jdGlvbktleTog
cmV0dXJuIDB4ODQ7CisgICAgICAgICAgICAvLyBWS19GMjIgKDg1SCkgRjIyIGtleQorICAgICAg
ICBjYXNlIE5TRjIyRnVuY3Rpb25LZXk6IHJldHVybiAweDg1OworICAgICAgICAgICAgLy8gVktf
RjIzICg4NkgpIEYyMyBrZXkKKyAgICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OiByZXR1cm4g
MHg4NjsKKyAgICAgICAgICAgIC8vIFZLX0YyNCAoODdIKSBGMjQga2V5CisgICAgICAgIGNhc2Ug
TlNGMjRGdW5jdGlvbktleTogcmV0dXJuIDB4ODc7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIFZLX05VTUxPQ0sgKDkwKSBOVU0gTE9DSyBrZXkKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gVktfU0NST0xMICg5MSkgU0NST0xMIExPQ0sga2V5CisgICAgICAgIGNhc2UgTlNTY3Jv
bGxMb2NrRnVuY3Rpb25LZXk6IHJldHVybiAweDkxOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBWS19MU0hJRlQgKEEwKSBMZWZ0IFNISUZUIGtleQorICAgICAgICAgICAgLy8gVktfUlNI
SUZUIChBMSkgUmlnaHQgU0hJRlQga2V5CisgICAgICAgICAgICAvLyBWS19MQ09OVFJPTCAoQTIp
IExlZnQgQ09OVFJPTCBrZXkKKyAgICAgICAgICAgIC8vIFZLX1JDT05UUk9MIChBMykgUmlnaHQg
Q09OVFJPTCBrZXkKKyAgICAgICAgICAgIC8vIFZLX0xNRU5VIChBNCkgTGVmdCBNRU5VIGtleQor
ICAgICAgICAgICAgLy8gVktfUk1FTlUgKEE1KSBSaWdodCBNRU5VIGtleQorICAgICAgICAgICAg
Ly8gVktfQlJPV1NFUl9CQUNLIChBNikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEJhY2sga2V5
CisgICAgICAgICAgICAvLyBWS19CUk9XU0VSX0ZPUldBUkQgKEE3KSBXaW5kb3dzIDIwMDAvWFA6
IEJyb3dzZXIgRm9yd2FyZCBrZXkKKyAgICAgICAgICAgIC8vIFZLX0JST1dTRVJfUkVGUkVTSCAo
QTgpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBSZWZyZXNoIGtleQorICAgICAgICAgICAgLy8g
VktfQlJPV1NFUl9TVE9QIChBOSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0b3Aga2V5Cisg
ICAgICAgICAgICAvLyBWS19CUk9XU0VSX1NFQVJDSCAoQUEpIFdpbmRvd3MgMjAwMC9YUDogQnJv
d3NlciBTZWFyY2gga2V5CisgICAgICAgICAgICAvLyBWS19CUk9XU0VSX0ZBVk9SSVRFUyAoQUIp
IFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBGYXZvcml0ZXMga2V5CisgICAgICAgICAgICAvLyBW
S19CUk9XU0VSX0hPTUUgKEFDKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgU3RhcnQgYW5kIEhv
bWUga2V5CisgICAgICAgICAgICAvLyBWS19WT0xVTUVfTVVURSAoQUQpIFdpbmRvd3MgMjAwMC9Y
UDogVm9sdW1lIE11dGUga2V5CisgICAgICAgICAgICAvLyBWS19WT0xVTUVfRE9XTiAoQUUpIFdp
bmRvd3MgMjAwMC9YUDogVm9sdW1lIERvd24ga2V5CisgICAgICAgICAgICAvLyBWS19WT0xVTUVf
VVAgKEFGKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBVcCBrZXkKKyAgICAgICAgICAgIC8vIFZL
X01FRElBX05FWFRfVFJBQ0sgKEIwKSBXaW5kb3dzIDIwMDAvWFA6IE5leHQgVHJhY2sga2V5Cisg
ICAgICAgICAgICAvLyBWS19NRURJQV9QUkVWX1RSQUNLIChCMSkgV2luZG93cyAyMDAwL1hQOiBQ
cmV2aW91cyBUcmFjayBrZXkKKyAgICAgICAgICAgIC8vIFZLX01FRElBX1NUT1AgKEIyKSBXaW5k
b3dzIDIwMDAvWFA6IFN0b3AgTWVkaWEga2V5CisgICAgICAgICAgICAvLyBWS19NRURJQV9QTEFZ
X1BBVVNFIChCMykgV2luZG93cyAyMDAwL1hQOiBQbGF5L1BhdXNlIE1lZGlhIGtleQorICAgICAg
ICAgICAgLy8gVktfTEFVTkNIX01BSUwgKEI0KSBXaW5kb3dzIDIwMDAvWFA6IFN0YXJ0IE1haWwg
a2V5CisgICAgICAgICAgICAvLyBWS19MQVVOQ0hfTUVESUFfU0VMRUNUIChCNSkgV2luZG93cyAy
MDAwL1hQOiBTZWxlY3QgTWVkaWEga2V5CisgICAgICAgICAgICAvLyBWS19MQVVOQ0hfQVBQMSAo
QjYpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMSBrZXkKKyAgICAgICAgICAg
IC8vIFZLX0xBVU5DSF9BUFAyIChCNykgV2luZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlv
biAyIGtleQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWS19PRU1fMSAoQkEpIFVzZWQg
Zm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdp
bmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICc7Oicga2V5
CisgICAgICAgIGNhc2UgJzsnOiBjYXNlICc6JzogcmV0dXJuIDB4QkE7CisgICAgICAgICAgICAv
LyBWS19PRU1fUExVUyAoQkIpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lv
biwgdGhlICcrJyBrZXkKKyAgICAgICAgY2FzZSAnPSc6IGNhc2UgJysnOiByZXR1cm4gMHhCQjsK
KyAgICAgICAgICAgIC8vIFZLX09FTV9DT01NQSAoQkMpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFu
eSBjb3VudHJ5L3JlZ2lvbiwgdGhlICcsJyBrZXkKKyAgICAgICAgY2FzZSAnLCc6IGNhc2UgJzwn
OiByZXR1cm4gMHhCQzsKKyAgICAgICAgICAgIC8vIFZLX09FTV9NSU5VUyAoQkQpIFdpbmRvd3Mg
MjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICctJyBrZXkKKyAgICAgICAgY2Fz
ZSAnLSc6IGNhc2UgJ18nOiByZXR1cm4gMHhCRDsKKyAgICAgICAgICAgIC8vIFZLX09FTV9QRVJJ
T0QgKEJFKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLicg
a2V5CisgICAgICAgIGNhc2UgJy4nOiBjYXNlICc+JzogcmV0dXJuIDB4QkU7CisgICAgICAgICAg
ICAvLyBWS19PRU1fMiAoQkYpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQg
Y2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFy
ZCBrZXlib2FyZCwgdGhlICcvPycga2V5CisgICAgICAgIGNhc2UgJy8nOiBjYXNlICc/JzogcmV0
dXJuIDB4QkY7CisgICAgICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1pc2NlbGxh
bmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9Y
UDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficga2V5CisgICAgICAgIGNh
c2UgJ2AnOiBjYXNlICd+JzogcmV0dXJuIDB4QzA7CisgICAgICAgICAgICAvLyBWS19PRU1fNCAo
REIpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5
Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhl
ICdbeycga2V5CisgICAgICAgIGNhc2UgJ1snOiBjYXNlICd7JzogcmV0dXJuIDB4REI7CisgICAg
ICAgICAgICAvLyBWS19PRU1fNSAoREMpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVy
czsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBz
dGFuZGFyZCBrZXlib2FyZCwgdGhlICdcfCcga2V5CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAn
fCc6IHJldHVybiAweERDOworICAgICAgICAgICAgLy8gVktfT0VNXzYgKEREKSBVc2VkIGZvciBt
aXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dz
IDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXX0nIGtleQorICAg
ICAgICBjYXNlICddJzogY2FzZSAnfSc6IHJldHVybiAweEREOworICAgICAgICAgICAgLy8gVktf
T0VNXzcgKERFKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5
IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9h
cmQsIHRoZSAnc2luZ2xlLXF1b3RlL2RvdWJsZS1xdW90ZScga2V5CisgICAgICAgIGNhc2UgJ1wn
JzogY2FzZSAnIic6IHJldHVybiAweERFOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBW
S19PRU1fOCAoREYpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZh
cnkgYnkga2V5Ym9hcmQuCisgICAgICAgICAgICAvLyBWS19PRU1fMTAyIChFMikgV2luZG93cyAy
MDAwL1hQOiBFaXRoZXIgdGhlIGFuZ2xlIGJyYWNrZXQga2V5IG9yIHRoZSBiYWNrc2xhc2gga2V5
IG9uIHRoZSBSVCAxMDIta2V5IGtleWJvYXJkCisgICAgICAgICAgICAvLyBWS19QUk9DRVNTS0VZ
IChFNSkgV2luZG93cyA5NS85OC9NZSwgV2luZG93cyBOVCA0LjAsIFdpbmRvd3MgMjAwMC9YUDog
SU1FIFBST0NFU1Mga2V5CisgICAgICAgICAgICAvLyBWS19QQUNLRVQgKEU3KSBXaW5kb3dzIDIw
MDAvWFA6IFVzZWQgdG8gcGFzcyBVbmljb2RlIGNoYXJhY3RlcnMgYXMgaWYgdGhleSB3ZXJlIGtl
eXN0cm9rZXMuIFRoZSBWS19QQUNLRVQga2V5IGlzIHRoZSBsb3cgd29yZCBvZiBhIDMyLWJpdCBW
aXJ0dWFsIEtleSB2YWx1ZSB1c2VkIGZvciBub24ta2V5Ym9hcmQgaW5wdXQgbWV0aG9kcy4gRm9y
IG1vcmUgaW5mb3JtYXRpb24sIHNlZSBSZW1hcmsgaW4gS0VZQkRJTlBVVCxTZW5kSW5wdXQsIFdN
X0tFWURPV04sIGFuZCBXTV9LRVlVUAorICAgICAgICAgICAgLy8gVktfQVRUTiAoRjYpIEF0dG4g
a2V5CisgICAgICAgICAgICAvLyBWS19DUlNFTCAoRjcpIENyU2VsIGtleQorICAgICAgICAgICAg
Ly8gVktfRVhTRUwgKEY4KSBFeFNlbCBrZXkKKyAgICAgICAgICAgIC8vIFZLX0VSRU9GIChGOSkg
RXJhc2UgRU9GIGtleQorICAgICAgICAgICAgLy8gVktfUExBWSAoRkEpIFBsYXkga2V5CisgICAg
ICAgICAgICAvLyBWS19aT09NIChGQikgWm9vbSBrZXkKKyAgICAgICAgICAgIC8vIFZLX05PTkFN
RSAoRkMpIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlCisgICAgICAgICAgICAvLyBWS19QQTEgKEZE
KSBQQTEga2V5CisgICAgICAgICAgICAvLyBWS19PRU1fQ0xFQVIgKEZFKSBDbGVhciBrZXkKICAg
ICB9Ci0gICAgdW5pY2hhciBjID0gW3MgY2hhcmFjdGVyQXRJbmRleDowXTsKLSAgICBzd2l0Y2gg
KGMpIHsKLSAgICAgICAgLy8gRWFjaCBpZGVudGlmaWVyIGxpc3RlZCBpbiB0aGUgRE9NIHNwZWMg
aXMgbGlzdGVkIGhlcmUuCi0gICAgICAgIC8vIE1hbnkgYXJlIHNpbXBseSBjb21tZW50ZWQgb3V0
IHNpbmNlIHRoZXkgZG8gbm90IGFwcGVhciBvbiBzdGFuZGFyZCBNYWNpbnRvc2gga2V5Ym9hcmRz
Ci0gICAgICAgIC8vIG9yIGFyZSBvbiBhIGtleSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3Bv
bmRpbmcgY2hhcmFjdGVyLgorICAgIAorICAgIHJldHVybiAwOworfQogCi0gICAgICAgIC8vICJB
Y2NlcHQiCi0gICAgICAgIC8vICJBbGxDYW5kaWRhdGVzIgorU3RyaW5nIGtleUlkZW50aWZpZXJG
b3JLZXlFdmVudENoYXJhY3RlcnMoTlNTdHJpbmcqIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cykgeworICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGxlbmd0aF0gIT0gMSkg
eworICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2Yg
Y2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyBsZW5ndGhdKTsKKyAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOworICAgIH0KIAotICAg
ICAgICAvLyAiQWx0IgorICAgIHVuaWNoYXIgYyA9IFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgY2hhcmFjdGVyQXRJbmRleDowXTsKKyAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgIC8v
IEVhY2ggaWRlbnRpZmllciBsaXN0ZWQgaW4gdGhlIERPTSBzcGVjIGlzIGxpc3RlZCBoZXJlLgor
ICAgICAgICAgICAgLy8gTWFueSBhcmUgc2ltcGx5IGNvbW1lbnRlZCBvdXQgc2luY2UgdGhleSBk
byBub3QgYXBwZWFyIG9uIHN0YW5kYXJkIE1hY2ludG9zaCBrZXlib2FyZHMKKyAgICAgICAgICAg
IC8vIG9yIGFyZSBvbiBhIGtleSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgY2hh
cmFjdGVyLgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiQWNjZXB0IgorICAgICAgICAg
ICAgLy8gIkFsbENhbmRpZGF0ZXMiCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vICJBbHQi
CiAgICAgICAgIGNhc2UgTlNNZW51RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkFs
dCI7Ci0KLSAgICAgICAgLy8gIkFwcHMiCi0gICAgICAgIC8vICJCcm93c2VyQmFjayIKLSAgICAg
ICAgLy8gIkJyb3dzZXJGb3J3YXJkIgotICAgICAgICAvLyAiQnJvd3NlckhvbWUiCi0gICAgICAg
IC8vICJCcm93c2VyUmVmcmVzaCIKLSAgICAgICAgLy8gIkJyb3dzZXJTZWFyY2giCi0gICAgICAg
IC8vICJCcm93c2VyU3RvcCIKLSAgICAgICAgLy8gIkNhcHNMb2NrIgotCi0gICAgICAgIC8vICJD
bGVhciIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIkFwcHMiCisgICAgICAgICAgICAv
LyAiQnJvd3NlckJhY2siCisgICAgICAgICAgICAvLyAiQnJvd3NlckZvcndhcmQiCisgICAgICAg
ICAgICAvLyAiQnJvd3NlckhvbWUiCisgICAgICAgICAgICAvLyAiQnJvd3NlclJlZnJlc2giCisg
ICAgICAgICAgICAvLyAiQnJvd3NlclNlYXJjaCIKKyAgICAgICAgICAgIC8vICJCcm93c2VyU3Rv
cCIKKyAgICAgICAgICAgIC8vICJDYXBzTG9jayIKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gIkNsZWFyIgogICAgICAgICBjYXNlIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXk6CiAgICAgICAg
ICAgICByZXR1cm4gIkNsZWFyIjsKLQotICAgICAgICAvLyAiQ29kZUlucHV0IgotICAgICAgICAv
LyAiQ29tcG9zZSIKLSAgICAgICAgLy8gIkNvbnRyb2wiCi0gICAgICAgIC8vICJDcnNlbCIKLSAg
ICAgICAgLy8gIkNvbnZlcnQiCi0gICAgICAgIC8vICJDb3B5IgotICAgICAgICAvLyAiQ3V0Igot
Ci0gICAgICAgIC8vICJEb3duIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiQ29kZUlu
cHV0IgorICAgICAgICAgICAgLy8gIkNvbXBvc2UiCisgICAgICAgICAgICAvLyAiQ29udHJvbCIK
KyAgICAgICAgICAgIC8vICJDcnNlbCIKKyAgICAgICAgICAgIC8vICJDb252ZXJ0IgorICAgICAg
ICAgICAgLy8gIkNvcHkiCisgICAgICAgICAgICAvLyAiQ3V0IgorICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyAiRG93biIKICAgICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5Ogog
ICAgICAgICAgICAgcmV0dXJuICJEb3duIjsKLSAgICAgICAgLy8gIkVuZCIKKyAgICAgICAgICAg
IC8vICJFbmQiCiAgICAgICAgIGNhc2UgTlNFbmRGdW5jdGlvbktleToKICAgICAgICAgICAgIHJl
dHVybiAiRW5kIjsKLSAgICAgICAgLy8gIkVudGVyIgorICAgICAgICAgICAgLy8gIkVudGVyIgog
ICAgICAgICBjYXNlIDB4MzogY2FzZSAweEE6IGNhc2UgMHhEOiAvLyBNYWNpbnRvc2ggY2FsbHMg
dGhlIG9uZSBvbiB0aGUgbWFpbiBrZXlib2FyZCBSZXR1cm4sIGJ1dCBXaW5kb3dzIGNhbGxzIGl0
IEVudGVyLCBzbyB3ZSdsbCBkbyB0aGUgc2FtZSBmb3IgdGhlIERPTQogICAgICAgICAgICAgcmV0
dXJuICJFbnRlciI7Ci0KLSAgICAgICAgLy8gIkVyYXNlRW9mIgotCi0gICAgICAgIC8vICJFeGVj
dXRlIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiRXJhc2VFb2YiCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vICJFeGVjdXRlIgogICAgICAgICBjYXNlIE5TRXhlY3V0ZUZ1bmN0
aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKLQotICAgICAgICAvLyAiRXhz
ZWwiCi0KLSAgICAgICAgLy8gIkYxIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiRXhz
ZWwiCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vICJGMSIKICAgICAgICAgY2FzZSBOU0Yx
RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxIjsKLSAgICAgICAgLy8gIkYyIgor
ICAgICAgICAgICAgLy8gIkYyIgogICAgICAgICBjYXNlIE5TRjJGdW5jdGlvbktleToKICAgICAg
ICAgICAgIHJldHVybiAiRjIiOwotICAgICAgICAvLyAiRjMiCisgICAgICAgICAgICAvLyAiRjMi
CiAgICAgICAgIGNhc2UgTlNGM0Z1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJGMyI7
Ci0gICAgICAgIC8vICJGNCIKKyAgICAgICAgICAgIC8vICJGNCIKICAgICAgICAgY2FzZSBOU0Y0
RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkY0IjsKLSAgICAgICAgLy8gIkY1Igor
ICAgICAgICAgICAgLy8gIkY1IgogICAgICAgICBjYXNlIE5TRjVGdW5jdGlvbktleToKICAgICAg
ICAgICAgIHJldHVybiAiRjUiOwotICAgICAgICAvLyAiRjYiCisgICAgICAgICAgICAvLyAiRjYi
CiAgICAgICAgIGNhc2UgTlNGNkZ1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJGNiI7
Ci0gICAgICAgIC8vICJGNyIKKyAgICAgICAgICAgIC8vICJGNyIKICAgICAgICAgY2FzZSBOU0Y3
RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkY3IjsKLSAgICAgICAgLy8gIkY4Igor
ICAgICAgICAgICAgLy8gIkY4IgogICAgICAgICBjYXNlIE5TRjhGdW5jdGlvbktleToKICAgICAg
ICAgICAgIHJldHVybiAiRjgiOwotICAgICAgICAvLyAiRjkiCisgICAgICAgICAgICAvLyAiRjki
CiAgICAgICAgIGNhc2UgTlNGOUZ1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJGOSI7
Ci0gICAgICAgIC8vICJGMTAiCisgICAgICAgICAgICAvLyAiRjEwIgogICAgICAgICBjYXNlIE5T
RjEwRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxMCI7Ci0gICAgICAgIC8vICJG
MTEiCisgICAgICAgICAgICAvLyAiRjExIgogICAgICAgICBjYXNlIE5TRjExRnVuY3Rpb25LZXk6
CiAgICAgICAgICAgICByZXR1cm4gIkYxMSI7Ci0gICAgICAgIC8vICJGMTIiCisgICAgICAgICAg
ICAvLyAiRjEyIgogICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICBy
ZXR1cm4gIkYxMiI7Ci0gICAgICAgIC8vICJGMTMiCisgICAgICAgICAgICAvLyAiRjEzIgogICAg
ICAgICBjYXNlIE5TRjEzRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxMyI7Ci0g
ICAgICAgIC8vICJGMTQiCisgICAgICAgICAgICAvLyAiRjE0IgogICAgICAgICBjYXNlIE5TRjE0
RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxNCI7Ci0gICAgICAgIC8vICJGMTUi
CisgICAgICAgICAgICAvLyAiRjE1IgogICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6CiAg
ICAgICAgICAgICByZXR1cm4gIkYxNSI7Ci0gICAgICAgIC8vICJGMTYiCisgICAgICAgICAgICAv
LyAiRjE2IgogICAgICAgICBjYXNlIE5TRjE2RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1
cm4gIkYxNiI7Ci0gICAgICAgIC8vICJGMTciCisgICAgICAgICAgICAvLyAiRjE3IgogICAgICAg
ICBjYXNlIE5TRjE3RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxNyI7Ci0gICAg
ICAgIC8vICJGMTgiCisgICAgICAgICAgICAvLyAiRjE4IgogICAgICAgICBjYXNlIE5TRjE4RnVu
Y3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYxOCI7Ci0gICAgICAgIC8vICJGMTkiCisg
ICAgICAgICAgICAvLyAiRjE5IgogICAgICAgICBjYXNlIE5TRjE5RnVuY3Rpb25LZXk6CiAgICAg
ICAgICAgICByZXR1cm4gIkYxOSI7Ci0gICAgICAgIC8vICJGMjAiCisgICAgICAgICAgICAvLyAi
RjIwIgogICAgICAgICBjYXNlIE5TRjIwRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4g
IkYyMCI7Ci0gICAgICAgIC8vICJGMjEiCisgICAgICAgICAgICAvLyAiRjIxIgogICAgICAgICBj
YXNlIE5TRjIxRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYyMSI7Ci0gICAgICAg
IC8vICJGMjIiCisgICAgICAgICAgICAvLyAiRjIyIgogICAgICAgICBjYXNlIE5TRjIyRnVuY3Rp
b25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYyMiI7Ci0gICAgICAgIC8vICJGMjMiCisgICAg
ICAgICAgICAvLyAiRjIzIgogICAgICAgICBjYXNlIE5TRjIzRnVuY3Rpb25LZXk6CiAgICAgICAg
ICAgICByZXR1cm4gIkYyMyI7Ci0gICAgICAgIC8vICJGMjQiCisgICAgICAgICAgICAvLyAiRjI0
IgogICAgICAgICBjYXNlIE5TRjI0RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYy
NCI7Ci0KLSAgICAgICAgLy8gIkZpbmFsTW9kZSIKLQotICAgICAgICAvLyAiRmluZCIKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gIkZpbmFsTW9kZSIKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gIkZpbmQiCiAgICAgICAgIGNhc2UgTlNGaW5kRnVuY3Rpb25LZXk6CiAgICAgICAg
ICAgICByZXR1cm4gIkZpbmQiOwotCi0gICAgICAgIC8vICJGdWxsV2lkdGgiCi0gICAgICAgIC8v
ICJIYWxmV2lkdGgiCi0gICAgICAgIC8vICJIYW5ndWxNb2RlIgotICAgICAgICAvLyAiSGFuamFN
b2RlIgotCi0gICAgICAgIC8vICJIZWxwIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAi
RnVsbFdpZHRoIgorICAgICAgICAgICAgLy8gIkhhbGZXaWR0aCIKKyAgICAgICAgICAgIC8vICJI
YW5ndWxNb2RlIgorICAgICAgICAgICAgLy8gIkhhbmphTW9kZSIKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgLy8gIkhlbHAiCiAgICAgICAgIGNhc2UgTlNIZWxwRnVuY3Rpb25LZXk6CiAgICAg
ICAgICAgICByZXR1cm4gIkhlbHAiOwotCi0gICAgICAgIC8vICJIaXJhZ2FuYSIKLQotICAgICAg
ICAvLyAiSG9tZSIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIkhpcmFnYW5hIgorICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyAiSG9tZSIKICAgICAgICAgY2FzZSBOU0hvbWVGdW5j
dGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiSG9tZSI7Ci0gICAgICAgIC8vICJJbnNlcnQi
CisgICAgICAgICAgICAvLyAiSW5zZXJ0IgogICAgICAgICBjYXNlIE5TSW5zZXJ0RnVuY3Rpb25L
ZXk6CiAgICAgICAgICAgICByZXR1cm4gIkluc2VydCI7Ci0KLSAgICAgICAgLy8gIkphcGFuZXNl
SGlyYWdhbmEiCi0gICAgICAgIC8vICJKYXBhbmVzZUthdGFrYW5hIgotICAgICAgICAvLyAiSmFw
YW5lc2VSb21hamkiCi0gICAgICAgIC8vICJKdW5qYU1vZGUiCi0gICAgICAgIC8vICJLYW5hTW9k
ZSIKLSAgICAgICAgLy8gIkthbmppTW9kZSIKLSAgICAgICAgLy8gIkthdGFrYW5hIgotICAgICAg
ICAvLyAiTGF1bmNoQXBwbGljYXRpb24xIgotICAgICAgICAvLyAiTGF1bmNoQXBwbGljYXRpb24y
IgotICAgICAgICAvLyAiTGF1bmNoTWFpbCIKLQotICAgICAgICAvLyAiTGVmdCIKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gIkphcGFuZXNlSGlyYWdhbmEiCisgICAgICAgICAgICAvLyAi
SmFwYW5lc2VLYXRha2FuYSIKKyAgICAgICAgICAgIC8vICJKYXBhbmVzZVJvbWFqaSIKKyAgICAg
ICAgICAgIC8vICJKdW5qYU1vZGUiCisgICAgICAgICAgICAvLyAiS2FuYU1vZGUiCisgICAgICAg
ICAgICAvLyAiS2FuamlNb2RlIgorICAgICAgICAgICAgLy8gIkthdGFrYW5hIgorICAgICAgICAg
ICAgLy8gIkxhdW5jaEFwcGxpY2F0aW9uMSIKKyAgICAgICAgICAgIC8vICJMYXVuY2hBcHBsaWNh
dGlvbjIiCisgICAgICAgICAgICAvLyAiTGF1bmNoTWFpbCIKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gIkxlZnQiCiAgICAgICAgIGNhc2UgTlNMZWZ0QXJyb3dGdW5jdGlvbktleToKICAg
ICAgICAgICAgIHJldHVybiAiTGVmdCI7Ci0KLSAgICAgICAgLy8gIk1ldGEiCi0gICAgICAgIC8v
ICJNZWRpYU5leHRUcmFjayIKLSAgICAgICAgLy8gIk1lZGlhUGxheVBhdXNlIgotICAgICAgICAv
LyAiTWVkaWFQcmV2aW91c1RyYWNrIgotICAgICAgICAvLyAiTWVkaWFTdG9wIgotCi0gICAgICAg
IC8vICJNb2RlQ2hhbmdlIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiTWV0YSIKKyAg
ICAgICAgICAgIC8vICJNZWRpYU5leHRUcmFjayIKKyAgICAgICAgICAgIC8vICJNZWRpYVBsYXlQ
YXVzZSIKKyAgICAgICAgICAgIC8vICJNZWRpYVByZXZpb3VzVHJhY2siCisgICAgICAgICAgICAv
LyAiTWVkaWFTdG9wIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiTW9kZUNoYW5nZSIK
ICAgICAgICAgY2FzZSBOU01vZGVTd2l0Y2hGdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVy
biAiTW9kZUNoYW5nZSI7Ci0KLSAgICAgICAgLy8gIk5vbmNvbnZlcnQiCi0gICAgICAgIC8vICJO
dW1Mb2NrIgotCi0gICAgICAgIC8vICJQYWdlRG93biIKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gIk5vbmNvbnZlcnQiCisgICAgICAgICAgICAvLyAiTnVtTG9jayIKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gIlBhZ2VEb3duIgogICAgICAgICBjYXNlIE5TUGFnZURvd25GdW5j
dGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iOwotICAgICAgICAvLyAiUGFn
ZVVwIgorICAgICAgICAgICAgLy8gIlBhZ2VVcCIKICAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1bmN0
aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJQYWdlVXAiOwotCi0gICAgICAgIC8vICJQYXN0
ZSIKLQotICAgICAgICAvLyAiUGF1c2UiCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vICJQ
YXN0ZSIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIlBhdXNlIgogICAgICAgICBjYXNl
IE5TUGF1c2VGdW5jdGlvbktleToKICAgICAgICAgICAgIHJldHVybiAiUGF1c2UiOwotCi0gICAg
ICAgIC8vICJQbGF5IgotICAgICAgICAvLyAiUHJldmlvdXNDYW5kaWRhdGUiCi0KLSAgICAgICAg
Ly8gIlByaW50U2NyZWVuIgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAiUGxheSIKKyAg
ICAgICAgICAgIC8vICJQcmV2aW91c0NhbmRpZGF0ZSIKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gIlByaW50U2NyZWVuIgogICAgICAgICBjYXNlIE5TUHJpbnRTY3JlZW5GdW5jdGlvbktl
eToKICAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOwotCi0gICAgICAgIC8vICJQcm9j
ZXNzIgotICAgICAgICAvLyAiUHJvcHMiCi0KLSAgICAgICAgLy8gIlJpZ2h0IgorICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyAiUHJvY2VzcyIKKyAgICAgICAgICAgIC8vICJQcm9wcyIKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gIlJpZ2h0IgogICAgICAgICBjYXNlIE5TUmlnaHRB
cnJvd0Z1bmN0aW9uS2V5OgogICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7Ci0KLSAgICAgICAg
Ly8gIlJvbWFuQ2hhcmFjdGVycyIKLQotICAgICAgICAvLyAiU2Nyb2xsIgorICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyAiUm9tYW5DaGFyYWN0ZXJzIgorICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyAiU2Nyb2xsIgogICAgICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1bmN0aW9uS2V5Ogog
ICAgICAgICAgICAgcmV0dXJuICJTY3JvbGwiOwotICAgICAgICAvLyAiU2VsZWN0IgorICAgICAg
ICAgICAgLy8gIlNlbGVjdCIKICAgICAgICAgY2FzZSBOU1NlbGVjdEZ1bmN0aW9uS2V5OgogICAg
ICAgICAgICAgcmV0dXJuICJTZWxlY3QiOwotCi0gICAgICAgIC8vICJTZWxlY3RNZWRpYSIKLSAg
ICAgICAgLy8gIlNoaWZ0IgotCi0gICAgICAgIC8vICJTdG9wIgorICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyAiU2VsZWN0TWVkaWEiCisgICAgICAgICAgICAvLyAiU2hpZnQiCisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vICJTdG9wIgogICAgICAgICBjYXNlIE5TU3RvcEZ1bmN0aW9u
S2V5OgogICAgICAgICAgICAgcmV0dXJuICJTdG9wIjsKLSAgICAgICAgLy8gIlVwIgorICAgICAg
ICAgICAgLy8gIlVwIgogICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OgogICAgICAg
ICAgICAgcmV0dXJuICJVcCI7Ci0gICAgICAgIC8vICJVbmRvIgorICAgICAgICAgICAgLy8gIlVu
ZG8iCiAgICAgICAgIGNhc2UgTlNVbmRvRnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4g
IlVuZG8iOwotCi0gICAgICAgIC8vICJWb2x1bWVEb3duIgotICAgICAgICAvLyAiVm9sdW1lTXV0
ZSIKLSAgICAgICAgLy8gIlZvbHVtZVVwIgotICAgICAgICAvLyAiV2luIgotICAgICAgICAvLyAi
Wm9vbSIKLQotICAgICAgICAvLyBNb3JlIGZ1bmN0aW9uIGtleXMsIG5vdCBpbiB0aGUga2V5IGlk
ZW50aWZpZXIgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gIlZv
bHVtZURvd24iCisgICAgICAgICAgICAvLyAiVm9sdW1lTXV0ZSIKKyAgICAgICAgICAgIC8vICJW
b2x1bWVVcCIKKyAgICAgICAgICAgIC8vICJXaW4iCisgICAgICAgICAgICAvLyAiWm9vbSIKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gTW9yZSBmdW5jdGlvbiBrZXlzLCBub3QgaW4gdGhl
IGtleSBpZGVudGlmaWVyIHNwZWNpZmljYXRpb24uCiAgICAgICAgIGNhc2UgTlNGMjVGdW5jdGlv
bktleToKICAgICAgICAgICAgIHJldHVybiAiRjI1IjsKICAgICAgICAgY2FzZSBOU0YyNkZ1bmN0
aW9uS2V5OgpAQCAtMzIyLDE4ICs2NjEsMTggQEAgc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVy
Rm9yS2V5RXZlbnQoTgogICAgICAgICAgICAgcmV0dXJuICJGMzQiOwogICAgICAgICBjYXNlIE5T
RjM1RnVuY3Rpb25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIkYzNSI7Ci0KLSAgICAgICAgLy8g
VHVybiAweDdGIGludG8gMHgwOCwgYmVjYXVzZSBiYWNrc3BhY2UgbmVlZHMgdG8gYWx3YXlzIGJl
IDB4MDguCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFR1cm4gMHg3RiBpbnRvIDB4MDgs
IGJlY2F1c2UgYmFja3NwYWNlIG5lZWRzIHRvIGFsd2F5cyBiZSAweDA4LgogICAgICAgICBjYXNl
IDB4N0Y6CiAgICAgICAgICAgICByZXR1cm4gIlUrMDAwOCI7Ci0gICAgICAgIC8vIFN0YW5kYXJk
IHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCisgICAgICAgICAgICAvLyBTdGFuZGFyZCBz
YXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgICAgICBjYXNlIE5TRGVsZXRlRnVuY3Rp
b25LZXk6CiAgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7CiAgICAgICAgICAgICAKLSAgICAg
ICAgLy8gQWx3YXlzIHVzZSAweDA5IGZvciB0YWIgaW5zdGVhZCBvZiBBcHBLaXQncyBiYWNrdGFi
IGNoYXJhY3Rlci4KKyAgICAgICAgICAgIC8vIEFsd2F5cyB1c2UgMHgwOSBmb3IgdGFiIGluc3Rl
YWQgb2YgQXBwS2l0J3MgYmFja3RhYiBjaGFyYWN0ZXIuCiAgICAgICAgIGNhc2UgTlNCYWNrVGFi
Q2hhcmFjdGVyOgogICAgICAgICAgICAgcmV0dXJuICJVKzAwMDkiOwotCisgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBOU0JlZ2luRnVuY3Rpb25LZXk6CiAgICAgICAgIGNhc2UgTlNCcmVha0Z1
bmN0aW9uS2V5OgogICAgICAgICBjYXNlIE5TQ2xlYXJEaXNwbGF5RnVuY3Rpb25LZXk6CkBAIC0z
NTMsNTI3ICs2OTIsOSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChO
CiAgICAgICAgICAgICAvLyBGb3Igbm93LCBqdXN0IGZhbGwgdGhyb3VnaCB0byB0aGUgZGVmYXVs
dC4KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgi
VSslMDRYIiwgdG9BU0NJSVVwcGVyKGMpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBib29sIGlzS2V5
cGFkRXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0gICAgLy8gQ2hlY2sgdGhhdCB0aGlzIGlzIHRo
ZSB0eXBlIG9mIGV2ZW50IHRoYXQgaGFzIGEga2V5Q29kZS4KLSAgICBzd2l0Y2ggKFtldmVudCB0
eXBlXSkgewotICAgICAgICBjYXNlIE5TS2V5RG93bjoKLSAgICAgICAgY2FzZSBOU0tleVVwOgot
ICAgICAgICBjYXNlIE5TRmxhZ3NDaGFuZ2VkOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TTnVtZXJpY1BhZEtleU1hc2spCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgY2FzZSA3
MTogLy8gQ2xlYXIKLSAgICAgICAgY2FzZSA4MTogLy8gPQotICAgICAgICBjYXNlIDc1OiAvLyAv
Ci0gICAgICAgIGNhc2UgNjc6IC8vICoKLSAgICAgICAgY2FzZSA3ODogLy8gLQotICAgICAgICBj
YXNlIDY5OiAvLyArCi0gICAgICAgIGNhc2UgNzY6IC8vIEVudGVyCi0gICAgICAgIGNhc2UgNjU6
IC8vIC4KLSAgICAgICAgY2FzZSA4MjogLy8gMAotICAgICAgICBjYXNlIDgzOiAvLyAxCi0gICAg
ICAgIGNhc2UgODQ6IC8vIDIKLSAgICAgICAgY2FzZSA4NTogLy8gMwotICAgICAgICBjYXNlIDg2
OiAvLyA0Ci0gICAgICAgIGNhc2UgODc6IC8vIDUKLSAgICAgICAgY2FzZSA4ODogLy8gNgotICAg
ICAgICBjYXNlIDg5OiAvLyA3Ci0gICAgICAgIGNhc2UgOTE6IC8vIDgKLSAgICAgICAgY2FzZSA5
MjogLy8gOQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0KLSAgICAgCi0gICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5T
RXZlbnQqIGV2ZW50KQotewotICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAg
IC8vIFZLX1RBQiAoMDkpIFRBQiBrZXkKLSAgICAgICAgY2FzZSA0ODogcmV0dXJuIDB4MDk7Ci0K
LSAgICAgICAgLy8gVktfQVBQUyAoNUQpIFJpZ2h0IHdpbmRvd3MvbWV0YSBrZXkKLSAgICAgICAg
Y2FzZSA1NDogLy8gUmlnaHQgQ29tbWFuZAotICAgICAgICAgICAgcmV0dXJuIDB4NUQ7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgLy8gVktfTFdJTiAoNUIpIExlZnQgd2luZG93cy9tZXRhIGtleQot
ICAgICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKLSAgICAgICAgICAgIHJldHVybiAweDVC
OwotICAgICAgICAgICAgCi0gICAgICAgIC8vIFZLX0NBUElUQUwgKDE0KSBjYXBzIGxvY2tzIGtl
eQotICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jawotICAgICAgICAgICAgcmV0dXJuIDB4MTQ7
Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktfU0hJRlQgKDEwKSBlaXRoZXIgc2hpZnQga2V5
Ci0gICAgICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKLSAgICAgICAgY2FzZSA2MDogLy8gUmln
aHQgU2hpZnQKLSAgICAgICAgICAgIHJldHVybiAweDEwOwotICAgICAgICAgICAgCi0gICAgICAg
IC8vIFZLX01FTlUgKDEyKSBlaXRoZXIgYWx0IGtleQotICAgICAgICBjYXNlIDU4OiAvLyBMZWZ0
IEFsdAotICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKLSAgICAgICAgICAgIHJldHVybiAw
eDEyOwotICAgICAgICAgICAgCi0gICAgICAgIC8vIFZLX0NPTlRST0wgKDExKSBlaXRoZXIgY3Ry
bCBrZXkKLSAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAgIGNhc2UgNjI6IC8v
IFJpZ2h0IEN0cmwKLSAgICAgICAgICAgIHJldHVybiAweDExOwotICAgICAgICAgICAgCi0gICAg
ICAgIC8vIFZLX0NMRUFSICgwQykgQ0xFQVIga2V5Ci0gICAgICAgIGNhc2UgNzE6IHJldHVybiAw
eDBDOwotCi0gICAgICAgIC8vIFZLX05VTVBBRDAgKDYwKSBOdW1lcmljIGtleXBhZCAwIGtleQot
ICAgICAgICBjYXNlIDgyOiByZXR1cm4gMHg2MDsKLSAgICAgICAgLy8gVktfTlVNUEFEMSAoNjEp
IE51bWVyaWMga2V5cGFkIDEga2V5Ci0gICAgICAgIGNhc2UgODM6IHJldHVybiAweDYxOwotICAg
ICAgICAvLyBWS19OVU1QQUQyICg2MikgTnVtZXJpYyBrZXlwYWQgMiBrZXkKLSAgICAgICAgY2Fz
ZSA4NDogcmV0dXJuIDB4NjI7Ci0gICAgICAgIC8vIFZLX05VTVBBRDMgKDYzKSBOdW1lcmljIGtl
eXBhZCAzIGtleQotICAgICAgICBjYXNlIDg1OiByZXR1cm4gMHg2MzsKLSAgICAgICAgLy8gVktf
TlVNUEFENCAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5Ci0gICAgICAgIGNhc2UgODY6IHJldHVy
biAweDY0OwotICAgICAgICAvLyBWS19OVU1QQUQ1ICg2NSkgTnVtZXJpYyBrZXlwYWQgNSBrZXkK
LSAgICAgICAgY2FzZSA4NzogcmV0dXJuIDB4NjU7Ci0gICAgICAgIC8vIFZLX05VTVBBRDYgKDY2
KSBOdW1lcmljIGtleXBhZCA2IGtleQotICAgICAgICBjYXNlIDg4OiByZXR1cm4gMHg2NjsKLSAg
ICAgICAgLy8gVktfTlVNUEFENyAoNjcpIE51bWVyaWMga2V5cGFkIDcga2V5Ci0gICAgICAgIGNh
c2UgODk6IHJldHVybiAweDY3OwotICAgICAgICAvLyBWS19OVU1QQUQ4ICg2OCkgTnVtZXJpYyBr
ZXlwYWQgOCBrZXkKLSAgICAgICAgY2FzZSA5MTogcmV0dXJuIDB4Njg7Ci0gICAgICAgIC8vIFZL
X05VTVBBRDkgKDY5KSBOdW1lcmljIGtleXBhZCA5IGtleQotICAgICAgICBjYXNlIDkyOiByZXR1
cm4gMHg2OTsKLSAgICAgICAgLy8gVktfTVVMVElQTFkgKDZBKSBNdWx0aXBseSBrZXkKLSAgICAg
ICAgY2FzZSA2NzogcmV0dXJuIDB4NkE7Ci0gICAgICAgIC8vIFZLX0FERCAoNkIpIEFkZCBrZXkK
LSAgICAgICAgY2FzZSA2OTogcmV0dXJuIDB4NkI7Ci0KLSAgICAgICAgLy8gVktfU1VCVFJBQ1Qg
KDZEKSBTdWJ0cmFjdCBrZXkKLSAgICAgICAgY2FzZSA3ODogcmV0dXJuIDB4NkQ7Ci0gICAgICAg
IC8vIFZLX0RFQ0lNQUwgKDZFKSBEZWNpbWFsIGtleQotICAgICAgICBjYXNlIDY1OiByZXR1cm4g
MHg2RTsKLSAgICAgICAgLy8gVktfRElWSURFICg2RikgRGl2aWRlIGtleQotICAgICAgICBjYXNl
IDc1OiByZXR1cm4gMHg2RjsKLSAgICAgfQotCi0gICAgTlNTdHJpbmcqIHMgPSBbZXZlbnQgY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLSAgICBpZiAoW3MgbGVuZ3RoXSAhPSAxKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIHN3aXRjaCAoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgewot
ICAgICAgICAvLyBWS19MQlVUVE9OICgwMSkgTGVmdCBtb3VzZSBidXR0b24KLSAgICAgICAgLy8g
VktfUkJVVFRPTiAoMDIpIFJpZ2h0IG1vdXNlIGJ1dHRvbgotICAgICAgICAvLyBWS19DQU5DRUwg
KDAzKSBDb250cm9sLWJyZWFrIHByb2Nlc3NpbmcKLSAgICAgICAgLy8gVktfTUJVVFRPTiAoMDQp
IE1pZGRsZSBtb3VzZSBidXR0b24gKHRocmVlLWJ1dHRvbiBtb3VzZSkKLSAgICAgICAgLy8gVktf
WEJVVFRPTjEgKDA1KQotICAgICAgICAvLyBWS19YQlVUVE9OMiAoMDYpCi0KLSAgICAgICAgLy8g
VktfQkFDSyAoMDgpIEJBQ0tTUEFDRSBrZXkKLSAgICAgICAgY2FzZSA4OiBjYXNlIDB4N0Y6IHJl
dHVybiAweDA4OwotICAgICAgICAvLyBWS19UQUIgKDA5KSBUQUIga2V5Ci0gICAgICAgIGNhc2Ug
OTogcmV0dXJuIDB4MDk7Ci0KLSAgICAgICAgLy8gVktfQ0xFQVIgKDBDKSBDTEVBUiBrZXkKLSAg
ICAgICAgLy8gaGFuZGxlZCBieSBrZXkgY29kZSBhYm92ZQotCi0gICAgICAgIC8vIFZLX1JFVFVS
TiAoMEQpCi0gICAgICAgIGNhc2UgMHhEOiBjYXNlIDM6IHJldHVybiAweDBEOwotCi0gICAgICAg
IC8vIFZLX1NISUZUICgxMCkgU0hJRlQga2V5Ci0gICAgICAgIC8vIFZLX0NPTlRST0wgKDExKSBD
VFJMIGtleQotICAgICAgICAvLyBWS19NRU5VICgxMikgQUxUIGtleQotCi0gICAgICAgIC8vIFZL
X1BBVVNFICgxMykgUEFVU0Uga2V5Ci0gICAgICAgIGNhc2UgTlNQYXVzZUZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHgxMzsKLQotICAgICAgICAvLyBWS19DQVBJVEFMICgxNCkgQ0FQUyBMT0NLIGtleQot
ICAgICAgICAvLyBWS19LQU5BICgxNSkgSW5wdXQgTWV0aG9kIEVkaXRvciAoSU1FKSBLYW5hIG1v
ZGUKLSAgICAgICAgLy8gVktfSEFOR1VFTCAoMTUpIElNRSBIYW5ndWVsIG1vZGUgKG1haW50YWlu
ZWQgZm9yIGNvbXBhdGliaWxpdHk7IHVzZSBWS19IQU5HVUwpCi0gICAgICAgIC8vIFZLX0hBTkdV
TCAoMTUpIElNRSBIYW5ndWwgbW9kZQotICAgICAgICAvLyBWS19KVU5KQSAoMTcpIElNRSBKdW5q
YSBtb2RlCi0gICAgICAgIC8vIFZLX0ZJTkFMICgxOCkgSU1FIGZpbmFsIG1vZGUKLSAgICAgICAg
Ly8gVktfSEFOSkEgKDE5KSBJTUUgSGFuamEgbW9kZQotICAgICAgICAvLyBWS19LQU5KSSAoMTkp
IElNRSBLYW5qaSBtb2RlCi0KLSAgICAgICAgLy8gVktfRVNDQVBFICgxQikgRVNDIGtleQotICAg
ICAgICBjYXNlIDB4MUI6IHJldHVybiAweDFCOwotCi0gICAgICAgIC8vIFZLX0NPTlZFUlQgKDFD
KSBJTUUgY29udmVydAotICAgICAgICAvLyBWS19OT05DT05WRVJUICgxRCkgSU1FIG5vbmNvbnZl
cnQKLSAgICAgICAgLy8gVktfQUNDRVBUICgxRSkgSU1FIGFjY2VwdAotICAgICAgICAvLyBWS19N
T0RFQ0hBTkdFICgxRikgSU1FIG1vZGUgY2hhbmdlIHJlcXVlc3QKLQotICAgICAgICAvLyBWS19T
UEFDRSAoMjApIFNQQUNFQkFSCi0gICAgICAgIGNhc2UgJyAnOiByZXR1cm4gMHgyMDsKLSAgICAg
ICAgLy8gVktfUFJJT1IgKDIxKSBQQUdFIFVQIGtleQotICAgICAgICBjYXNlIE5TUGFnZVVwRnVu
Y3Rpb25LZXk6IHJldHVybiAweDIxOwotICAgICAgICAvLyBWS19ORVhUICgyMikgUEFHRSBET1dO
IGtleQotICAgICAgICBjYXNlIE5TUGFnZURvd25GdW5jdGlvbktleTogcmV0dXJuIDB4MjI7Ci0g
ICAgICAgIC8vIFZLX0VORCAoMjMpIEVORCBrZXkKLSAgICAgICAgY2FzZSBOU0VuZEZ1bmN0aW9u
S2V5OiByZXR1cm4gMHgyMzsKLSAgICAgICAgLy8gVktfSE9NRSAoMjQpIEhPTUUga2V5Ci0gICAg
ICAgIGNhc2UgTlNIb21lRnVuY3Rpb25LZXk6IHJldHVybiAweDI0OwotICAgICAgICAvLyBWS19M
RUZUICgyNSkgTEVGVCBBUlJPVyBrZXkKLSAgICAgICAgY2FzZSBOU0xlZnRBcnJvd0Z1bmN0aW9u
S2V5OiByZXR1cm4gMHgyNTsKLSAgICAgICAgLy8gVktfVVAgKDI2KSBVUCBBUlJPVyBrZXkKLSAg
ICAgICAgY2FzZSBOU1VwQXJyb3dGdW5jdGlvbktleTogcmV0dXJuIDB4MjY7Ci0gICAgICAgIC8v
IFZLX1JJR0hUICgyNykgUklHSFQgQVJST1cga2V5Ci0gICAgICAgIGNhc2UgTlNSaWdodEFycm93
RnVuY3Rpb25LZXk6IHJldHVybiAweDI3OwotICAgICAgICAvLyBWS19ET1dOICgyOCkgRE9XTiBB
UlJPVyBrZXkKLSAgICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgy
ODsKLSAgICAgICAgLy8gVktfU0VMRUNUICgyOSkgU0VMRUNUIGtleQotICAgICAgICBjYXNlIE5T
U2VsZWN0RnVuY3Rpb25LZXk6IHJldHVybiAweDI5OwotICAgICAgICAvLyBWS19QUklOVCAoMkEp
IFBSSU5UIGtleQotICAgICAgICBjYXNlIE5TUHJpbnRGdW5jdGlvbktleTogcmV0dXJuIDB4MkE7
Ci0gICAgICAgIC8vIFZLX0VYRUNVVEUgKDJCKSBFWEVDVVRFIGtleQotICAgICAgICBjYXNlIE5T
RXhlY3V0ZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyQjsKLSAgICAgICAgLy8gVktfU05BUFNIT1Qg
KDJDKSBQUklOVCBTQ1JFRU4ga2V5Ci0gICAgICAgIGNhc2UgTlNQcmludFNjcmVlbkZ1bmN0aW9u
S2V5OiByZXR1cm4gMHgyQzsKLSAgICAgICAgLy8gVktfSU5TRVJUICgyRCkgSU5TIGtleQotICAg
ICAgICBjYXNlIE5TSW5zZXJ0RnVuY3Rpb25LZXk6IGNhc2UgTlNIZWxwRnVuY3Rpb25LZXk6IHJl
dHVybiAweDJEOwotICAgICAgICAvLyBWS19ERUxFVEUgKDJFKSBERUwga2V5Ci0gICAgICAgIGNh
c2UgTlNEZWxldGVGdW5jdGlvbktleTogcmV0dXJuIDB4MkU7Ci0KLSAgICAgICAgLy8gVktfSEVM
UCAoMkYpIEhFTFAga2V5Ci0KLSAgICAgICAgLy8gICgzMCkgMCBrZXkKLSAgICAgICAgY2FzZSAn
MCc6IGNhc2UgJyknOiByZXR1cm4gMHgzMDsKLSAgICAgICAgLy8gICgzMSkgMSBrZXkKLSAgICAg
ICAgY2FzZSAnMSc6IGNhc2UgJyEnOiByZXR1cm4gMHgzMTsKLSAgICAgICAgLy8gICgzMikgMiBr
ZXkKLSAgICAgICAgY2FzZSAnMic6IGNhc2UgJ0AnOiByZXR1cm4gMHgzMjsKLSAgICAgICAgLy8g
ICgzMykgMyBrZXkKLSAgICAgICAgY2FzZSAnMyc6IGNhc2UgJyMnOiByZXR1cm4gMHgzMzsKLSAg
ICAgICAgLy8gICgzNCkgNCBrZXkKLSAgICAgICAgY2FzZSAnNCc6IGNhc2UgJyQnOiByZXR1cm4g
MHgzNDsKLSAgICAgICAgLy8gICgzNSkgNSBrZXkKLSAgICAgICAgY2FzZSAnNSc6IGNhc2UgJyUn
OiByZXR1cm4gMHgzNTsKLSAgICAgICAgLy8gICgzNikgNiBrZXkKLSAgICAgICAgY2FzZSAnNic6
IGNhc2UgJ14nOiByZXR1cm4gMHgzNjsKLSAgICAgICAgLy8gICgzNykgNyBrZXkKLSAgICAgICAg
Y2FzZSAnNyc6IGNhc2UgJyYnOiByZXR1cm4gMHgzNzsKLSAgICAgICAgLy8gICgzOCkgOCBrZXkK
LSAgICAgICAgY2FzZSAnOCc6IGNhc2UgJyonOiByZXR1cm4gMHgzODsKLSAgICAgICAgLy8gICgz
OSkgOSBrZXkKLSAgICAgICAgY2FzZSAnOSc6IGNhc2UgJygnOiByZXR1cm4gMHgzOTsKLSAgICAg
ICAgLy8gICg0MSkgQSBrZXkKLSAgICAgICAgY2FzZSAnYSc6IGNhc2UgJ0EnOiByZXR1cm4gMHg0
MTsKLSAgICAgICAgLy8gICg0MikgQiBrZXkKLSAgICAgICAgY2FzZSAnYic6IGNhc2UgJ0InOiBy
ZXR1cm4gMHg0MjsKLSAgICAgICAgLy8gICg0MykgQyBrZXkKLSAgICAgICAgY2FzZSAnYyc6IGNh
c2UgJ0MnOiByZXR1cm4gMHg0MzsKLSAgICAgICAgLy8gICg0NCkgRCBrZXkKLSAgICAgICAgY2Fz
ZSAnZCc6IGNhc2UgJ0QnOiByZXR1cm4gMHg0NDsKLSAgICAgICAgLy8gICg0NSkgRSBrZXkKLSAg
ICAgICAgY2FzZSAnZSc6IGNhc2UgJ0UnOiByZXR1cm4gMHg0NTsKLSAgICAgICAgLy8gICg0Nikg
RiBrZXkKLSAgICAgICAgY2FzZSAnZic6IGNhc2UgJ0YnOiByZXR1cm4gMHg0NjsKLSAgICAgICAg
Ly8gICg0NykgRyBrZXkKLSAgICAgICAgY2FzZSAnZyc6IGNhc2UgJ0cnOiByZXR1cm4gMHg0NzsK
LSAgICAgICAgLy8gICg0OCkgSCBrZXkKLSAgICAgICAgY2FzZSAnaCc6IGNhc2UgJ0gnOiByZXR1
cm4gMHg0ODsKLSAgICAgICAgLy8gICg0OSkgSSBrZXkKLSAgICAgICAgY2FzZSAnaSc6IGNhc2Ug
J0knOiByZXR1cm4gMHg0OTsKLSAgICAgICAgLy8gICg0QSkgSiBrZXkKLSAgICAgICAgY2FzZSAn
aic6IGNhc2UgJ0onOiByZXR1cm4gMHg0QTsKLSAgICAgICAgLy8gICg0QikgSyBrZXkKLSAgICAg
ICAgY2FzZSAnayc6IGNhc2UgJ0snOiByZXR1cm4gMHg0QjsKLSAgICAgICAgLy8gICg0QykgTCBr
ZXkKLSAgICAgICAgY2FzZSAnbCc6IGNhc2UgJ0wnOiByZXR1cm4gMHg0QzsKLSAgICAgICAgLy8g
ICg0RCkgTSBrZXkKLSAgICAgICAgY2FzZSAnbSc6IGNhc2UgJ00nOiByZXR1cm4gMHg0RDsKLSAg
ICAgICAgLy8gICg0RSkgTiBrZXkKLSAgICAgICAgY2FzZSAnbic6IGNhc2UgJ04nOiByZXR1cm4g
MHg0RTsKLSAgICAgICAgLy8gICg0RikgTyBrZXkKLSAgICAgICAgY2FzZSAnbyc6IGNhc2UgJ08n
OiByZXR1cm4gMHg0RjsKLSAgICAgICAgLy8gICg1MCkgUCBrZXkKLSAgICAgICAgY2FzZSAncCc6
IGNhc2UgJ1AnOiByZXR1cm4gMHg1MDsKLSAgICAgICAgLy8gICg1MSkgUSBrZXkKLSAgICAgICAg
Y2FzZSAncSc6IGNhc2UgJ1EnOiByZXR1cm4gMHg1MTsKLSAgICAgICAgLy8gICg1MikgUiBrZXkK
LSAgICAgICAgY2FzZSAncic6IGNhc2UgJ1InOiByZXR1cm4gMHg1MjsKLSAgICAgICAgLy8gICg1
MykgUyBrZXkKLSAgICAgICAgY2FzZSAncyc6IGNhc2UgJ1MnOiByZXR1cm4gMHg1MzsKLSAgICAg
ICAgLy8gICg1NCkgVCBrZXkKLSAgICAgICAgY2FzZSAndCc6IGNhc2UgJ1QnOiByZXR1cm4gMHg1
NDsKLSAgICAgICAgLy8gICg1NSkgVSBrZXkKLSAgICAgICAgY2FzZSAndSc6IGNhc2UgJ1UnOiBy
ZXR1cm4gMHg1NTsKLSAgICAgICAgLy8gICg1NikgViBrZXkKLSAgICAgICAgY2FzZSAndic6IGNh
c2UgJ1YnOiByZXR1cm4gMHg1NjsKLSAgICAgICAgLy8gICg1NykgVyBrZXkKLSAgICAgICAgY2Fz
ZSAndyc6IGNhc2UgJ1cnOiByZXR1cm4gMHg1NzsKLSAgICAgICAgLy8gICg1OCkgWCBrZXkKLSAg
ICAgICAgY2FzZSAneCc6IGNhc2UgJ1gnOiByZXR1cm4gMHg1ODsKLSAgICAgICAgLy8gICg1OSkg
WSBrZXkKLSAgICAgICAgY2FzZSAneSc6IGNhc2UgJ1knOiByZXR1cm4gMHg1OTsKLSAgICAgICAg
Ly8gICg1QSkgWiBrZXkKLSAgICAgICAgY2FzZSAneic6IGNhc2UgJ1onOiByZXR1cm4gMHg1QTsK
LQotICAgICAgICAvLyBWS19MV0lOICg1QikgTGVmdCBXaW5kb3dzIGtleSAoTWljcm9zb2Z0IE5h
dHVyYWwga2V5Ym9hcmQpCi0gICAgICAgIC8vIFZLX1JXSU4gKDVDKSBSaWdodCBXaW5kb3dzIGtl
eSAoTmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgLy8gVktfQVBQUyAoNUQpIEFwcGxpY2F0aW9u
cyBrZXkgKE5hdHVyYWwga2V5Ym9hcmQpCi0gICAgICAgIC8vIFZLX1NMRUVQICg1RikgQ29tcHV0
ZXIgU2xlZXAga2V5Ci0KLSAgICAgICAgLy8gVktfTlVNUEFEMCAoNjApIE51bWVyaWMga2V5cGFk
IDAga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDEgKDYxKSBOdW1lcmljIGtleXBhZCAxIGtleQot
ICAgICAgICAvLyBWS19OVU1QQUQyICg2MikgTnVtZXJpYyBrZXlwYWQgMiBrZXkKLSAgICAgICAg
Ly8gVktfTlVNUEFEMyAoNjMpIE51bWVyaWMga2V5cGFkIDMga2V5Ci0gICAgICAgIC8vIFZLX05V
TVBBRDQgKDY0KSBOdW1lcmljIGtleXBhZCA0IGtleQotICAgICAgICAvLyBWS19OVU1QQUQ1ICg2
NSkgTnVtZXJpYyBrZXlwYWQgNSBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFENiAoNjYpIE51bWVy
aWMga2V5cGFkIDYga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDcgKDY3KSBOdW1lcmljIGtleXBh
ZCA3IGtleQotICAgICAgICAvLyBWS19OVU1QQUQ4ICg2OCkgTnVtZXJpYyBrZXlwYWQgOCBrZXkK
LSAgICAgICAgLy8gVktfTlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5Ci0gICAgICAg
IC8vIFZLX01VTFRJUExZICg2QSkgTXVsdGlwbHkga2V5Ci0gICAgICAgIC8vIFZLX0FERCAoNkIp
IEFkZCBrZXkKLSAgICAgICAgLy8gaGFuZGxlZCBieSBrZXkgY29kZSBhYm92ZQotCi0gICAgICAg
IC8vIFZLX1NFUEFSQVRPUiAoNkMpIFNlcGFyYXRvciBrZXkKLQotICAgICAgICAvLyBWS19TVUJU
UkFDVCAoNkQpIFN1YnRyYWN0IGtleQotICAgICAgICAvLyBWS19ERUNJTUFMICg2RSkgRGVjaW1h
bCBrZXkKLSAgICAgICAgLy8gVktfRElWSURFICg2RikgRGl2aWRlIGtleQotICAgICAgICAvLyBo
YW5kbGVkIGJ5IGtleSBjb2RlIGFib3ZlCi0KLSAgICAgICAgLy8gVktfRjEgKDcwKSBGMSBrZXkK
LSAgICAgICAgY2FzZSBOU0YxRnVuY3Rpb25LZXk6IHJldHVybiAweDcwOwotICAgICAgICAvLyBW
S19GMiAoNzEpIEYyIGtleQotICAgICAgICBjYXNlIE5TRjJGdW5jdGlvbktleTogcmV0dXJuIDB4
NzE7Ci0gICAgICAgIC8vIFZLX0YzICg3MikgRjMga2V5Ci0gICAgICAgIGNhc2UgTlNGM0Z1bmN0
aW9uS2V5OiByZXR1cm4gMHg3MjsKLSAgICAgICAgLy8gVktfRjQgKDczKSBGNCBrZXkKLSAgICAg
ICAgY2FzZSBOU0Y0RnVuY3Rpb25LZXk6IHJldHVybiAweDczOwotICAgICAgICAvLyBWS19GNSAo
NzQpIEY1IGtleQotICAgICAgICBjYXNlIE5TRjVGdW5jdGlvbktleTogcmV0dXJuIDB4NzQ7Ci0g
ICAgICAgIC8vIFZLX0Y2ICg3NSkgRjYga2V5Ci0gICAgICAgIGNhc2UgTlNGNkZ1bmN0aW9uS2V5
OiByZXR1cm4gMHg3NTsKLSAgICAgICAgLy8gVktfRjcgKDc2KSBGNyBrZXkKLSAgICAgICAgY2Fz
ZSBOU0Y3RnVuY3Rpb25LZXk6IHJldHVybiAweDc2OwotICAgICAgICAvLyBWS19GOCAoNzcpIEY4
IGtleQotICAgICAgICBjYXNlIE5TRjhGdW5jdGlvbktleTogcmV0dXJuIDB4Nzc7Ci0gICAgICAg
IC8vIFZLX0Y5ICg3OCkgRjkga2V5Ci0gICAgICAgIGNhc2UgTlNGOUZ1bmN0aW9uS2V5OiByZXR1
cm4gMHg3ODsKLSAgICAgICAgLy8gVktfRjEwICg3OSkgRjEwIGtleQotICAgICAgICBjYXNlIE5T
RjEwRnVuY3Rpb25LZXk6IHJldHVybiAweDc5OwotICAgICAgICAvLyBWS19GMTEgKDdBKSBGMTEg
a2V5Ci0gICAgICAgIGNhc2UgTlNGMTFGdW5jdGlvbktleTogcmV0dXJuIDB4N0E7Ci0gICAgICAg
IC8vIFZLX0YxMiAoN0IpIEYxMiBrZXkKLSAgICAgICAgY2FzZSBOU0YxMkZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHg3QjsKLSAgICAgICAgLy8gVktfRjEzICg3QykgRjEzIGtleQotICAgICAgICBjYXNl
IE5TRjEzRnVuY3Rpb25LZXk6IHJldHVybiAweDdDOwotICAgICAgICAvLyBWS19GMTQgKDdEKSBG
MTQga2V5Ci0gICAgICAgIGNhc2UgTlNGMTRGdW5jdGlvbktleTogcmV0dXJuIDB4N0Q7Ci0gICAg
ICAgIC8vIFZLX0YxNSAoN0UpIEYxNSBrZXkKLSAgICAgICAgY2FzZSBOU0YxNUZ1bmN0aW9uS2V5
OiByZXR1cm4gMHg3RTsKLSAgICAgICAgLy8gVktfRjE2ICg3RikgRjE2IGtleQotICAgICAgICBj
YXNlIE5TRjE2RnVuY3Rpb25LZXk6IHJldHVybiAweDdGOwotICAgICAgICAvLyBWS19GMTcgKDgw
SCkgRjE3IGtleQotICAgICAgICBjYXNlIE5TRjE3RnVuY3Rpb25LZXk6IHJldHVybiAweDgwOwot
ICAgICAgICAvLyBWS19GMTggKDgxSCkgRjE4IGtleQotICAgICAgICBjYXNlIE5TRjE4RnVuY3Rp
b25LZXk6IHJldHVybiAweDgxOwotICAgICAgICAvLyBWS19GMTkgKDgySCkgRjE5IGtleQotICAg
ICAgICBjYXNlIE5TRjE5RnVuY3Rpb25LZXk6IHJldHVybiAweDgyOwotICAgICAgICAvLyBWS19G
MjAgKDgzSCkgRjIwIGtleQotICAgICAgICBjYXNlIE5TRjIwRnVuY3Rpb25LZXk6IHJldHVybiAw
eDgzOwotICAgICAgICAvLyBWS19GMjEgKDg0SCkgRjIxIGtleQotICAgICAgICBjYXNlIE5TRjIx
RnVuY3Rpb25LZXk6IHJldHVybiAweDg0OwotICAgICAgICAvLyBWS19GMjIgKDg1SCkgRjIyIGtl
eQotICAgICAgICBjYXNlIE5TRjIyRnVuY3Rpb25LZXk6IHJldHVybiAweDg1OwotICAgICAgICAv
LyBWS19GMjMgKDg2SCkgRjIzIGtleQotICAgICAgICBjYXNlIE5TRjIzRnVuY3Rpb25LZXk6IHJl
dHVybiAweDg2OwotICAgICAgICAvLyBWS19GMjQgKDg3SCkgRjI0IGtleQotICAgICAgICBjYXNl
IE5TRjI0RnVuY3Rpb25LZXk6IHJldHVybiAweDg3OwotCi0gICAgICAgIC8vIFZLX05VTUxPQ0sg
KDkwKSBOVU0gTE9DSyBrZXkKLQotICAgICAgICAvLyBWS19TQ1JPTEwgKDkxKSBTQ1JPTEwgTE9D
SyBrZXkKLSAgICAgICAgY2FzZSBOU1Njcm9sbExvY2tGdW5jdGlvbktleTogcmV0dXJuIDB4OTE7
Ci0KLSAgICAgICAgLy8gVktfTFNISUZUIChBMCkgTGVmdCBTSElGVCBrZXkKLSAgICAgICAgLy8g
VktfUlNISUZUIChBMSkgUmlnaHQgU0hJRlQga2V5Ci0gICAgICAgIC8vIFZLX0xDT05UUk9MIChB
MikgTGVmdCBDT05UUk9MIGtleQotICAgICAgICAvLyBWS19SQ09OVFJPTCAoQTMpIFJpZ2h0IENP
TlRST0wga2V5Ci0gICAgICAgIC8vIFZLX0xNRU5VIChBNCkgTGVmdCBNRU5VIGtleQotICAgICAg
ICAvLyBWS19STUVOVSAoQTUpIFJpZ2h0IE1FTlUga2V5Ci0gICAgICAgIC8vIFZLX0JST1dTRVJf
QkFDSyAoQTYpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBCYWNrIGtleQotICAgICAgICAvLyBW
S19CUk9XU0VSX0ZPUldBUkQgKEE3KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgRm9yd2FyZCBr
ZXkKLSAgICAgICAgLy8gVktfQlJPV1NFUl9SRUZSRVNIIChBOCkgV2luZG93cyAyMDAwL1hQOiBC
cm93c2VyIFJlZnJlc2gga2V5Ci0gICAgICAgIC8vIFZLX0JST1dTRVJfU1RPUCAoQTkpIFdpbmRv
d3MgMjAwMC9YUDogQnJvd3NlciBTdG9wIGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX1NFQVJD
SCAoQUEpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBTZWFyY2gga2V5Ci0gICAgICAgIC8vIFZL
X0JST1dTRVJfRkFWT1JJVEVTIChBQikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEZhdm9yaXRl
cyBrZXkKLSAgICAgICAgLy8gVktfQlJPV1NFUl9IT01FIChBQykgV2luZG93cyAyMDAwL1hQOiBC
cm93c2VyIFN0YXJ0IGFuZCBIb21lIGtleQotICAgICAgICAvLyBWS19WT0xVTUVfTVVURSAoQUQp
IFdpbmRvd3MgMjAwMC9YUDogVm9sdW1lIE11dGUga2V5Ci0gICAgICAgIC8vIFZLX1ZPTFVNRV9E
T1dOIChBRSkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgRG93biBrZXkKLSAgICAgICAgLy8gVktf
Vk9MVU1FX1VQIChBRikgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgVXAga2V5Ci0gICAgICAgIC8v
IFZLX01FRElBX05FWFRfVFJBQ0sgKEIwKSBXaW5kb3dzIDIwMDAvWFA6IE5leHQgVHJhY2sga2V5
Ci0gICAgICAgIC8vIFZLX01FRElBX1BSRVZfVFJBQ0sgKEIxKSBXaW5kb3dzIDIwMDAvWFA6IFBy
ZXZpb3VzIFRyYWNrIGtleQotICAgICAgICAvLyBWS19NRURJQV9TVE9QIChCMikgV2luZG93cyAy
MDAwL1hQOiBTdG9wIE1lZGlhIGtleQotICAgICAgICAvLyBWS19NRURJQV9QTEFZX1BBVVNFIChC
MykgV2luZG93cyAyMDAwL1hQOiBQbGF5L1BhdXNlIE1lZGlhIGtleQotICAgICAgICAvLyBWS19M
QVVOQ0hfTUFJTCAoQjQpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgTWFpbCBrZXkKLSAgICAgICAg
Ly8gVktfTEFVTkNIX01FRElBX1NFTEVDVCAoQjUpIFdpbmRvd3MgMjAwMC9YUDogU2VsZWN0IE1l
ZGlhIGtleQotICAgICAgICAvLyBWS19MQVVOQ0hfQVBQMSAoQjYpIFdpbmRvd3MgMjAwMC9YUDog
U3RhcnQgQXBwbGljYXRpb24gMSBrZXkKLSAgICAgICAgLy8gVktfTEFVTkNIX0FQUDIgKEI3KSBX
aW5kb3dzIDIwMDAvWFA6IFN0YXJ0IEFwcGxpY2F0aW9uIDIga2V5Ci0KLSAgICAgICAgLy8gVktf
T0VNXzEgKEJBKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5
IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9h
cmQsIHRoZSAnOzonIGtleQotICAgICAgICBjYXNlICc7JzogY2FzZSAnOic6IHJldHVybiAweEJB
OwotICAgICAgICAvLyBWS19PRU1fUExVUyAoQkIpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBj
b3VudHJ5L3JlZ2lvbiwgdGhlICcrJyBrZXkKLSAgICAgICAgY2FzZSAnPSc6IGNhc2UgJysnOiBy
ZXR1cm4gMHhCQjsKLSAgICAgICAgLy8gVktfT0VNX0NPTU1BIChCQykgV2luZG93cyAyMDAwL1hQ
OiBGb3IgYW55IGNvdW50cnkvcmVnaW9uLCB0aGUgJywnIGtleQotICAgICAgICBjYXNlICcsJzog
Y2FzZSAnPCc6IHJldHVybiAweEJDOwotICAgICAgICAvLyBWS19PRU1fTUlOVVMgKEJEKSBXaW5k
b3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLScga2V5Ci0gICAgICAg
IGNhc2UgJy0nOiBjYXNlICdfJzogcmV0dXJuIDB4QkQ7Ci0gICAgICAgIC8vIFZLX09FTV9QRVJJ
T0QgKEJFKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLicg
a2V5Ci0gICAgICAgIGNhc2UgJy4nOiBjYXNlICc+JzogcmV0dXJuIDB4QkU7Ci0gICAgICAgIC8v
IFZLX09FTV8yIChCRikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4g
dmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtl
eWJvYXJkLCB0aGUgJy8/JyBrZXkKLSAgICAgICAgY2FzZSAnLyc6IGNhc2UgJz8nOiByZXR1cm4g
MHhCRjsKLSAgICAgICAgLy8gVktfT0VNXzMgKEMwKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNo
YXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0
aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnYH4nIGtleQotICAgICAgICBjYXNlICdgJzog
Y2FzZSAnfic6IHJldHVybiAweEMwOwotICAgICAgICAvLyBWS19PRU1fNCAoREIpIFVzZWQgZm9y
IG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRv
d3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdbeycga2V5Ci0g
ICAgICAgIGNhc2UgJ1snOiBjYXNlICd7JzogcmV0dXJuIDB4REI7Ci0gICAgICAgIC8vIFZLX09F
TV81IChEQykgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBi
eSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJk
LCB0aGUgJ1x8JyBrZXkKLSAgICAgICAgY2FzZSAnXFwnOiBjYXNlICd8JzogcmV0dXJuIDB4REM7
Ci0gICAgICAgIC8vIFZLX09FTV82IChERCkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0
ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVT
IHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ119JyBrZXkKLSAgICAgICAgY2FzZSAnXSc6IGNhc2Ug
J30nOiByZXR1cm4gMHhERDsKLSAgICAgICAgLy8gVktfT0VNXzcgKERFKSBVc2VkIGZvciBtaXNj
ZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIw
MDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnc2luZ2xlLXF1b3RlL2Rv
dWJsZS1xdW90ZScga2V5Ci0gICAgICAgIGNhc2UgJ1wnJzogY2FzZSAnIic6IHJldHVybiAweERF
OwotCi0gICAgICAgIC8vIFZLX09FTV84IChERikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFy
YWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4KLSAgICAgICAgLy8gVktfT0VNXzEwMiAo
RTIpIFdpbmRvd3MgMjAwMC9YUDogRWl0aGVyIHRoZSBhbmdsZSBicmFja2V0IGtleSBvciB0aGUg
YmFja3NsYXNoIGtleSBvbiB0aGUgUlQgMTAyLWtleSBrZXlib2FyZAotICAgICAgICAvLyBWS19Q
Uk9DRVNTS0VZIChFNSkgV2luZG93cyA5NS85OC9NZSwgV2luZG93cyBOVCA0LjAsIFdpbmRvd3Mg
MjAwMC9YUDogSU1FIFBST0NFU1Mga2V5Ci0gICAgICAgIC8vIFZLX1BBQ0tFVCAoRTcpIFdpbmRv
d3MgMjAwMC9YUDogVXNlZCB0byBwYXNzIFVuaWNvZGUgY2hhcmFjdGVycyBhcyBpZiB0aGV5IHdl
cmUga2V5c3Ryb2tlcy4gVGhlIFZLX1BBQ0tFVCBrZXkgaXMgdGhlIGxvdyB3b3JkIG9mIGEgMzIt
Yml0IFZpcnR1YWwgS2V5IHZhbHVlIHVzZWQgZm9yIG5vbi1rZXlib2FyZCBpbnB1dCBtZXRob2Rz
LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFJlbWFyayBpbiBLRVlCRElOUFVULFNlbmRJbnB1
dCwgV01fS0VZRE9XTiwgYW5kIFdNX0tFWVVQCi0gICAgICAgIC8vIFZLX0FUVE4gKEY2KSBBdHRu
IGtleQotICAgICAgICAvLyBWS19DUlNFTCAoRjcpIENyU2VsIGtleQotICAgICAgICAvLyBWS19F
WFNFTCAoRjgpIEV4U2VsIGtleQotICAgICAgICAvLyBWS19FUkVPRiAoRjkpIEVyYXNlIEVPRiBr
ZXkKLSAgICAgICAgLy8gVktfUExBWSAoRkEpIFBsYXkga2V5Ci0gICAgICAgIC8vIFZLX1pPT00g
KEZCKSBab29tIGtleQotICAgICAgICAvLyBWS19OT05BTUUgKEZDKSBSZXNlcnZlZCBmb3IgZnV0
dXJlIHVzZQotICAgICAgICAvLyBWS19QQTEgKEZEKSBQQTEga2V5Ci0gICAgICAgIC8vIFZLX09F
TV9DTEVBUiAoRkUpIENsZWFyIGtleQotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIH0gICAg
CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17
Ci0gICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJu
IFtldmVudCB0eXBlXSA9PSBOU0tleVVwOwotICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGZhaWxz
IGlmIHRoZSB1c2VyIHByZXNzZXMgYm90aCBTaGlmdCBrZXlzIGF0IG9uY2UsIGZvciBleGFtcGxl
OgotICAgIC8vIHdlIHRyZWF0IHJlbGVhc2luZyBvbmUgb2YgdGhlbSBhcyBrZXlEb3duLgotICAg
IHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENv
bW1hbmQKLSAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCi0gICAgICAgICAgICByZXR1
cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spID09IDA7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAgIHJldHVy
biAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHBoYVNoaWZ0S2V5TWFzaykgPT0gMDsKLSAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0Ci0gICAgICAgIGNhc2Ug
NjA6IC8vIFJpZ2h0IFNoaWZ0Ci0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZs
YWdzXSAmIE5TU2hpZnRLZXlNYXNrKSA9PSAwOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
NTg6IC8vIExlZnQgQWx0Ci0gICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAg
ICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spID09
IDA7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAg
IGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykgPT0gMDsKLSAgICAgICAgICAgIAotICAgICAg
ICBjYXNlIDYzOiAvLyBGdW5jdGlvbgotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU0Z1bmN0aW9uS2V5TWFzaykgPT0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1zdGF0aWMgaW5saW5lIFN0cmluZyB0ZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2
ZW50KQotewotICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpCi0gICAgICAg
IHJldHVybiAiIjsKLSAgICByZXR1cm4gW2V2ZW50IGNoYXJhY3RlcnNdOwotfQotICAgIAotICAg
IAotc3RhdGljIGlubGluZSBTdHJpbmcgdW5tb2RpZmllZFRleHRGcm9tRXZlbnQoTlNFdmVudCog
ZXZlbnQpCi17Ci0gICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKLSAgICAg
ICAgcmV0dXJuICIiOwotICAgIHJldHVybiBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzXTsKIH0KIAotUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
TlNFdmVudCAqZXZlbnQpCi0gICAgOiBtX3R5cGUoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24p
Ci0gICAgLCBtX3RleHQodGV4dEZyb21FdmVudChldmVudCkpCi0gICAgLCBtX3VubW9kaWZpZWRU
ZXh0KHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50KSkKLSAgICAsIG1fa2V5SWRlbnRpZmll
cihrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQpKQotICAgICwgbV9hdXRvUmVwZWF0KChb
ZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpICYmIFtldmVudCBpc0FSZXBlYXRdKQotICAg
ICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVu
dCkpCi0gICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKFtldmVudCBrZXlDb2RlXSkKLSAgICAs
IG1faXNLZXlwYWQoaXNLZXlwYWRFdmVudChldmVudCkpCi0gICAgLCBtX3NoaWZ0S2V5KFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQotICAgICwgbV9jdHJsS2V5KFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spCi0gICAgLCBtX2FsdEtleShbZXZl
bnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spCi0gICAgLCBtX21ldGFLZXko
W2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKLSAgICAsIG1fbWFjRXZl
bnQoZXZlbnQpCi17Ci0gICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdl
IGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVy
LgotICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSAnXHInKSB7Ci0gICAgICAgIG1f
dGV4dCA9ICJcciI7Ci0gICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHIiOwotICAgIH0KLQot
ICAgIC8vIFRoZSBhZGp1c3RtZW50cyBiZWxvdyBhcmUgb25seSBuZWVkZWQgaW4gYmFja3dhcmQg
Y29tcGF0aWJpbGl0eSBtb2RlLCBidXQgd2UgY2Fubm90IHRlbGwgd2hhdCBtb2RlIHdlIGFyZSBp
biBmcm9tIGhlcmUuCi0KLSAgICAvLyBUdXJuIDB4N0YgaW50byA4LCBiZWNhdXNlIGJhY2tzcGFj
ZSBuZWVkcyB0byBhbHdheXMgYmUgOC4KLSAgICBpZiAobV90ZXh0ID09ICJceDdGIikKLSAgICAg
ICAgbV90ZXh0ID0gIlx4OCI7Ci0gICAgaWYgKG1fdW5tb2RpZmllZFRleHQgPT0gIlx4N0YiKQot
ICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7Ci0gICAgLy8gQWx3YXlzIHVzZSA5IGZv
ciB0YWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3Rl
ciBmb3Igc2hpZnQtdGFiLgotICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSA5KSB7
Ci0gICAgICAgIG1fdGV4dCA9ICJceDkiOwotICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4
OSI7Ci0gICAgfQotfQotCi12b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRl
S2V5RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQot
ewotICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3du
IG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgot
ICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7Ci0gICAgQVNTRVJUKHR5cGUgPT0gUmF3S2V5
RG93biB8fCB0eXBlID09IENoYXIpOwotICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAgaWYgKGJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh0eXBlID09
IFJhd0tleURvd24pIHsKLSAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7Ci0gICAgICAgIG1fdW5t
b2RpZmllZFRleHQgPSBTdHJpbmcoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2tleUlkZW50
aWZpZXIgPSBTdHJpbmcoKTsKLSAgICAgICAgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSAwOwot
ICAgICAgICBpZiAobV90ZXh0Lmxlbmd0aCgpID09IDEgJiYgKG1fdGV4dFswVV0gPj0gMHhGNzAw
ICYmIG1fdGV4dFswVV0gPD0gMHhGN0ZGKSkgewotICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRv
IE5TRXZlbnRzLmgsIE9wZW5TdGVwIHJlc2VydmVzIHRoZSByYW5nZSAweEY3MDAtMHhGOEZGIGZv
ciBmdW5jdGlvbiBrZXlzLiBIb3dldmVyLCBzb21lIGFjdHVhbCBwcml2YXRlIHVzZSBjaGFyYWN0
ZXJzCi0gICAgICAgICAgICAvLyBoYXBwZW4gdG8gYmUgaW4gdGhpcyByYW5nZSwgZS5nLiB0aGUg
QXBwbGUgbG9nbyAoT3B0aW9uK1NoaWZ0K0spLgotICAgICAgICAgICAgLy8gMHhGN0ZGIGlzIGFu
IGFyYml0cmFyeSBjdXQtb2ZmLgotICAgICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7Ci0gICAg
ICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLWJvb2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCi17
Ci0gICAgcmV0dXJuIEdldEN1cnJlbnRLZXlNb2RpZmllcnMoKSAmIGFscGhhTG9jazsKLX0KLQot
fQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pcGhv
bmUvS2V5RXZlbnRJUGhvbmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pcGhv
bmUvS2V5RXZlbnRJUGhvbmUubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2lw
aG9uZS9LZXlFdmVudElQaG9uZS5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorCisjaWYgUExBVEZPUk0oSVBIT05FKQorCisj
aW1wb3J0ICJLZXlFdmVudENvY29hLmgiCisjaW1wb3J0ICJXZWJFdmVudC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KFdlYkV2ZW50ICpldmVudCkKKyAgICA6IG1fdHlw
ZShldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXAgPyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Oktl
eVVwIDogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgICwgbV90ZXh0KGV2ZW50
LmNoYXJhY3RlcnMpCisgICAgLCBtX3VubW9kaWZpZWRUZXh0KGV2ZW50LmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycykKKyAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5
RXZlbnRDaGFyYWN0ZXJzKGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycykpCisgICAg
LCBtX2F1dG9SZXBlYXQoZXZlbnQuaXNLZXlSZXBlYXRpbmcpCisgICAgLCBtX3dpbmRvd3NWaXJ0
dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KGV2ZW50LmtleUNvZGUsIGV2ZW50
LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycykpCisgICAgLCBtX2lzS2V5cGFkKGZhbHNlKSAv
LyBpUGhvbmUgZG9lcyBub3QgZGlzdGluZ3Vpc2ggdGhlIG51bXBhZCA8cmRhcjovL3Byb2JsZW0v
NzE5MDgzNT4KKyAgICAsIG1fc2hpZnRLZXkoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50
RmxhZ01hc2tTaGlmdCkKKyAgICAsIG1fY3RybEtleShldmVudC5tb2RpZmllckZsYWdzICYgV2Vi
RXZlbnRGbGFnTWFza0NvbnRyb2wpCisgICAgLCBtX2FsdEtleShldmVudC5tb2RpZmllckZsYWdz
ICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSkKKyAgICAsIG1fbWV0YUtleShldmVudC5tb2Rp
ZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQpCisgICAgLCBtX0V2ZW50KGV2ZW50
KQoreworICAgIEFTU0VSVChldmVudC50eXBlID09IFdlYkV2ZW50S2V5RG93biB8fCBldmVudC50
eXBlID09IFdlYkV2ZW50S2V5VXApOworCisgICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIv
UmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0
ZXIgZm9yIEVudGVyLgorICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSAnXHInKSB7
CisgICAgICAgIG1fdGV4dCA9ICJcciI7CisgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHIi
OworICAgIH0KKworICAgIC8vIFRoZSBhZGp1c3RtZW50cyBiZWxvdyBhcmUgb25seSBuZWVkZWQg
aW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBtb2RlLCBidXQgd2UgY2Fubm90IHRlbGwgd2hhdCBt
b2RlIHdlIGFyZSBpbiBmcm9tIGhlcmUuCisKKyAgICAvLyBUdXJuIDB4N0YgaW50byA4LCBiZWNh
dXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdheXMgYmUgOC4KKyAgICBpZiAobV90ZXh0ID09ICJc
eDdGIikKKyAgICAgICAgbV90ZXh0ID0gIlx4OCI7CisgICAgaWYgKG1fdW5tb2RpZmllZFRleHQg
PT0gIlx4N0YiKQorICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7CisgICAgLy8gQWx3
YXlzIHVzZSA5IGZvciB0YWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVy
ZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgorICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5
Q29kZSA9PSA5KSB7CisgICAgICAgIG1fdGV4dCA9ICJceDkiOworICAgICAgICBtX3VubW9kaWZp
ZWRUZXh0ID0gIlx4OSI7CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGli
aWxpdHlNb2RlKQoreworICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0
byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNv
bnZlcnNpb25zLgorICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNTRVJUKHR5
cGUgPT0gUmF3S2V5RG93biB8fCB0eXBlID09IENoYXIpOworICAgIG1fdHlwZSA9IHR5cGU7Cisg
ICAgaWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7Cisg
ICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2tleUlkZW50aWZpZXIgPSBTdHJpbmcoKTsKKyAgICAgICAgbV93aW5kb3dzVmlydHVhbEtl
eUNvZGUgPSAwOworICAgICAgICBpZiAobV90ZXh0Lmxlbmd0aCgpID09IDEgJiYgKG1fdGV4dFsw
VV0gPj0gMHhGNzAwICYmIG1fdGV4dFswVV0gPD0gMHhGN0ZGKSkgeworICAgICAgICAgICAgLy8g
QWNjb3JkaW5nIHRvIE5TRXZlbnRzLmgsIE9wZW5TdGVwIHJlc2VydmVzIHRoZSByYW5nZSAweEY3
MDAtMHhGOEZGIGZvciBmdW5jdGlvbiBrZXlzLiBIb3dldmVyLCBzb21lIGFjdHVhbCBwcml2YXRl
IHVzZSBjaGFyYWN0ZXJzCisgICAgICAgICAgICAvLyBoYXBwZW4gdG8gYmUgaW4gdGhpcyByYW5n
ZSwgZS5nLiB0aGUgQXBwbGUgbG9nbyAoT3B0aW9uK1NoaWZ0K0spLgorICAgICAgICAgICAgLy8g
MHhGN0ZGIGlzIGFuIGFyYml0cmFyeSBjdXQtb2ZmLgorICAgICAgICAgICAgbV90ZXh0ID0gU3Ry
aW5nKCk7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Jvb2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xv
Y2tTdGF0ZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JN
KElQSE9ORSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCShyZXZpc2lvbiA1
NTY2NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oIgogCi0jaW1wb3J0ICJMb2dnaW5nLmgiCisjaWYgUExBVEZPUk0o
TUFDKSAmJiAhUExBVEZPUk0oSVBIT05FKSAvLyBGSVhNRTogVXBkYXRlIHdoZW4gSVBIT05FIGFu
ZCBNQUMgYXJlIHNlcGVyYXRlZAorCisjaW1wb3J0ICJLZXlFdmVudENvY29hLmgiCiAjaW1wb3J0
IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5oPgogCkBAIC02MSwy
OTkgKzYzLDggQEAgc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTgogICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIHJldHVy
biAiIjsKICAgICAgICAgfQotICAgIAotICAgIE5TU3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkgewotICAgICAg
ICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVy
cyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3RoXSk7Ci0gICAgICAgIHJldHVybiAiVW5pZGVu
dGlmaWVkIjsKLSAgICB9Ci0gICAgdW5pY2hhciBjID0gW3MgY2hhcmFjdGVyQXRJbmRleDowXTsK
LSAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgLy8gRWFjaCBpZGVudGlmaWVyIGxpc3RlZCBpbiB0
aGUgRE9NIHNwZWMgaXMgbGlzdGVkIGhlcmUuCi0gICAgICAgIC8vIE1hbnkgYXJlIHNpbXBseSBj
b21tZW50ZWQgb3V0IHNpbmNlIHRoZXkgZG8gbm90IGFwcGVhciBvbiBzdGFuZGFyZCBNYWNpbnRv
c2gga2V5Ym9hcmRzCi0gICAgICAgIC8vIG9yIGFyZSBvbiBhIGtleSB0aGF0IGRvZXNuJ3QgaGF2
ZSBhIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLgotCi0gICAgICAgIC8vICJBY2NlcHQiCi0gICAg
ICAgIC8vICJBbGxDYW5kaWRhdGVzIgotCi0gICAgICAgIC8vICJBbHQiCi0gICAgICAgIGNhc2Ug
TlNNZW51RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7Ci0KLSAgICAgICAg
Ly8gIkFwcHMiCi0gICAgICAgIC8vICJCcm93c2VyQmFjayIKLSAgICAgICAgLy8gIkJyb3dzZXJG
b3J3YXJkIgotICAgICAgICAvLyAiQnJvd3NlckhvbWUiCi0gICAgICAgIC8vICJCcm93c2VyUmVm
cmVzaCIKLSAgICAgICAgLy8gIkJyb3dzZXJTZWFyY2giCi0gICAgICAgIC8vICJCcm93c2VyU3Rv
cCIKLSAgICAgICAgLy8gIkNhcHNMb2NrIgotCi0gICAgICAgIC8vICJDbGVhciIKLSAgICAgICAg
Y2FzZSBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7
Ci0KLSAgICAgICAgLy8gIkNvZGVJbnB1dCIKLSAgICAgICAgLy8gIkNvbXBvc2UiCi0gICAgICAg
IC8vICJDb250cm9sIgotICAgICAgICAvLyAiQ3JzZWwiCi0gICAgICAgIC8vICJDb252ZXJ0Igot
ICAgICAgICAvLyAiQ29weSIKLSAgICAgICAgLy8gIkN1dCIKLQotICAgICAgICAvLyAiRG93biIK
LSAgICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJu
ICJEb3duIjsKLSAgICAgICAgLy8gIkVuZCIKLSAgICAgICAgY2FzZSBOU0VuZEZ1bmN0aW9uS2V5
OgotICAgICAgICAgICAgcmV0dXJuICJFbmQiOwotICAgICAgICAvLyAiRW50ZXIiCi0gICAgICAg
IGNhc2UgMHgzOiBjYXNlIDB4QTogY2FzZSAweEQ6IC8vIE1hY2ludG9zaCBjYWxscyB0aGUgb25l
IG9uIHRoZSBtYWluIGtleWJvYXJkIFJldHVybiwgYnV0IFdpbmRvd3MgY2FsbHMgaXQgRW50ZXIs
IHNvIHdlJ2xsIGRvIHRoZSBzYW1lIGZvciB0aGUgRE9NCi0gICAgICAgICAgICByZXR1cm4gIkVu
dGVyIjsKLQotICAgICAgICAvLyAiRXJhc2VFb2YiCi0KLSAgICAgICAgLy8gIkV4ZWN1dGUiCi0g
ICAgICAgIGNhc2UgTlNFeGVjdXRlRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkV4
ZWN1dGUiOwotCi0gICAgICAgIC8vICJFeHNlbCIKLQotICAgICAgICAvLyAiRjEiCi0gICAgICAg
IGNhc2UgTlNGMUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMSI7Ci0gICAgICAg
IC8vICJGMiIKLSAgICAgICAgY2FzZSBOU0YyRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1
cm4gIkYyIjsKLSAgICAgICAgLy8gIkYzIgotICAgICAgICBjYXNlIE5TRjNGdW5jdGlvbktleToK
LSAgICAgICAgICAgIHJldHVybiAiRjMiOwotICAgICAgICAvLyAiRjQiCi0gICAgICAgIGNhc2Ug
TlNGNEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7Ci0gICAgICAgIC8vICJG
NSIKLSAgICAgICAgY2FzZSBOU0Y1RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkY1
IjsKLSAgICAgICAgLy8gIkY2IgotICAgICAgICBjYXNlIE5TRjZGdW5jdGlvbktleToKLSAgICAg
ICAgICAgIHJldHVybiAiRjYiOwotICAgICAgICAvLyAiRjciCi0gICAgICAgIGNhc2UgTlNGN0Z1
bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGNyI7Ci0gICAgICAgIC8vICJGOCIKLSAg
ICAgICAgY2FzZSBOU0Y4RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKLSAg
ICAgICAgLy8gIkY5IgotICAgICAgICBjYXNlIE5TRjlGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiRjkiOwotICAgICAgICAvLyAiRjEwIgotICAgICAgICBjYXNlIE5TRjEwRnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYxMCI7Ci0gICAgICAgIC8vICJGMTEiCi0gICAg
ICAgIGNhc2UgTlNGMTFGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKLSAg
ICAgICAgLy8gIkYxMiIKLSAgICAgICAgY2FzZSBOU0YxMkZ1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJGMTIiOwotICAgICAgICAvLyAiRjEzIgotICAgICAgICBjYXNlIE5TRjEzRnVu
Y3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYxMyI7Ci0gICAgICAgIC8vICJGMTQiCi0g
ICAgICAgIGNhc2UgTlNGMTRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjE0IjsK
LSAgICAgICAgLy8gIkYxNSIKLSAgICAgICAgY2FzZSBOU0YxNUZ1bmN0aW9uS2V5OgotICAgICAg
ICAgICAgcmV0dXJuICJGMTUiOwotICAgICAgICAvLyAiRjE2IgotICAgICAgICBjYXNlIE5TRjE2
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNiI7Ci0gICAgICAgIC8vICJGMTci
Ci0gICAgICAgIGNhc2UgTlNGMTdGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjE3
IjsKLSAgICAgICAgLy8gIkYxOCIKLSAgICAgICAgY2FzZSBOU0YxOEZ1bmN0aW9uS2V5OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTgiOwotICAgICAgICAvLyAiRjE5IgotICAgICAgICBjYXNlIE5T
RjE5RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYxOSI7Ci0gICAgICAgIC8vICJG
MjAiCi0gICAgICAgIGNhc2UgTlNGMjBGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAi
RjIwIjsKLSAgICAgICAgLy8gIkYyMSIKLSAgICAgICAgY2FzZSBOU0YyMUZ1bmN0aW9uS2V5Ogot
ICAgICAgICAgICAgcmV0dXJuICJGMjEiOwotICAgICAgICAvLyAiRjIyIgotICAgICAgICBjYXNl
IE5TRjIyRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMiI7Ci0gICAgICAgIC8v
ICJGMjMiCi0gICAgICAgIGNhc2UgTlNGMjNGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVy
biAiRjIzIjsKLSAgICAgICAgLy8gIkYyNCIKLSAgICAgICAgY2FzZSBOU0YyNEZ1bmN0aW9uS2V5
OgotICAgICAgICAgICAgcmV0dXJuICJGMjQiOwotCi0gICAgICAgIC8vICJGaW5hbE1vZGUiCi0K
LSAgICAgICAgLy8gIkZpbmQiCi0gICAgICAgIGNhc2UgTlNGaW5kRnVuY3Rpb25LZXk6Ci0gICAg
ICAgICAgICByZXR1cm4gIkZpbmQiOwotCi0gICAgICAgIC8vICJGdWxsV2lkdGgiCi0gICAgICAg
IC8vICJIYWxmV2lkdGgiCi0gICAgICAgIC8vICJIYW5ndWxNb2RlIgotICAgICAgICAvLyAiSGFu
amFNb2RlIgotCi0gICAgICAgIC8vICJIZWxwIgotICAgICAgICBjYXNlIE5TSGVscEZ1bmN0aW9u
S2V5OgotICAgICAgICAgICAgcmV0dXJuICJIZWxwIjsKLQotICAgICAgICAvLyAiSGlyYWdhbmEi
Ci0KLSAgICAgICAgLy8gIkhvbWUiCi0gICAgICAgIGNhc2UgTlNIb21lRnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIkhvbWUiOwotICAgICAgICAvLyAiSW5zZXJ0IgotICAgICAgICBj
YXNlIE5TSW5zZXJ0RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc2VydCI7Ci0K
LSAgICAgICAgLy8gIkphcGFuZXNlSGlyYWdhbmEiCi0gICAgICAgIC8vICJKYXBhbmVzZUthdGFr
YW5hIgotICAgICAgICAvLyAiSmFwYW5lc2VSb21hamkiCi0gICAgICAgIC8vICJKdW5qYU1vZGUi
Ci0gICAgICAgIC8vICJLYW5hTW9kZSIKLSAgICAgICAgLy8gIkthbmppTW9kZSIKLSAgICAgICAg
Ly8gIkthdGFrYW5hIgotICAgICAgICAvLyAiTGF1bmNoQXBwbGljYXRpb24xIgotICAgICAgICAv
LyAiTGF1bmNoQXBwbGljYXRpb24yIgotICAgICAgICAvLyAiTGF1bmNoTWFpbCIKLQotICAgICAg
ICAvLyAiTGVmdCIKLSAgICAgICAgY2FzZSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OgotICAgICAg
ICAgICAgcmV0dXJuICJMZWZ0IjsKLQotICAgICAgICAvLyAiTWV0YSIKLSAgICAgICAgLy8gIk1l
ZGlhTmV4dFRyYWNrIgotICAgICAgICAvLyAiTWVkaWFQbGF5UGF1c2UiCi0gICAgICAgIC8vICJN
ZWRpYVByZXZpb3VzVHJhY2siCi0gICAgICAgIC8vICJNZWRpYVN0b3AiCi0KLSAgICAgICAgLy8g
Ik1vZGVDaGFuZ2UiCi0gICAgICAgIGNhc2UgTlNNb2RlU3dpdGNoRnVuY3Rpb25LZXk6Ci0gICAg
ICAgICAgICByZXR1cm4gIk1vZGVDaGFuZ2UiOwotCi0gICAgICAgIC8vICJOb25jb252ZXJ0Igot
ICAgICAgICAvLyAiTnVtTG9jayIKLQotICAgICAgICAvLyAiUGFnZURvd24iCi0gICAgICAgIGNh
c2UgTlNQYWdlRG93bkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biI7
Ci0gICAgICAgIC8vICJQYWdlVXAiCi0gICAgICAgIGNhc2UgTlNQYWdlVXBGdW5jdGlvbktleToK
LSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKLQotICAgICAgICAvLyAiUGFzdGUiCi0KLSAg
ICAgICAgLy8gIlBhdXNlIgotICAgICAgICBjYXNlIE5TUGF1c2VGdW5jdGlvbktleToKLSAgICAg
ICAgICAgIHJldHVybiAiUGF1c2UiOwotCi0gICAgICAgIC8vICJQbGF5IgotICAgICAgICAvLyAi
UHJldmlvdXNDYW5kaWRhdGUiCi0KLSAgICAgICAgLy8gIlByaW50U2NyZWVuIgotICAgICAgICBj
YXNlIE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRT
Y3JlZW4iOwotCi0gICAgICAgIC8vICJQcm9jZXNzIgotICAgICAgICAvLyAiUHJvcHMiCi0KLSAg
ICAgICAgLy8gIlJpZ2h0IgotICAgICAgICBjYXNlIE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5Ogot
ICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7Ci0KLSAgICAgICAgLy8gIlJvbWFuQ2hhcmFjdGVy
cyIKLQotICAgICAgICAvLyAiU2Nyb2xsIgotICAgICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1bmN0
aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJTY3JvbGwiOwotICAgICAgICAvLyAiU2VsZWN0
IgotICAgICAgICBjYXNlIE5TU2VsZWN0RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4g
IlNlbGVjdCI7Ci0KLSAgICAgICAgLy8gIlNlbGVjdE1lZGlhIgotICAgICAgICAvLyAiU2hpZnQi
Ci0KLSAgICAgICAgLy8gIlN0b3AiCi0gICAgICAgIGNhc2UgTlNTdG9wRnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIlN0b3AiOwotICAgICAgICAvLyAiVXAiCi0gICAgICAgIGNhc2Ug
TlNVcEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlVwIjsKLSAgICAgICAg
Ly8gIlVuZG8iCi0gICAgICAgIGNhc2UgTlNVbmRvRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlVuZG8iOwotCi0gICAgICAgIC8vICJWb2x1bWVEb3duIgotICAgICAgICAvLyAiVm9s
dW1lTXV0ZSIKLSAgICAgICAgLy8gIlZvbHVtZVVwIgotICAgICAgICAvLyAiV2luIgotICAgICAg
ICAvLyAiWm9vbSIKLQotICAgICAgICAvLyBNb3JlIGZ1bmN0aW9uIGtleXMsIG5vdCBpbiB0aGUg
a2V5IGlkZW50aWZpZXIgc3BlY2lmaWNhdGlvbi4KLSAgICAgICAgY2FzZSBOU0YyNUZ1bmN0aW9u
S2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjUiOwotICAgICAgICBjYXNlIE5TRjI2RnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyNiI7Ci0gICAgICAgIGNhc2UgTlNGMjdGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjI3IjsKLSAgICAgICAgY2FzZSBOU0YyOEZ1
bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjgiOwotICAgICAgICBjYXNlIE5TRjI5
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyOSI7Ci0gICAgICAgIGNhc2UgTlNG
MzBGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjMwIjsKLSAgICAgICAgY2FzZSBO
U0YzMUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzEiOwotICAgICAgICBjYXNl
IE5TRjMyRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzMiI7Ci0gICAgICAgIGNh
c2UgTlNGMzNGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjMzIjsKLSAgICAgICAg
Y2FzZSBOU0YzNEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzQiOwotICAgICAg
ICBjYXNlIE5TRjM1RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzNSI7Ci0KLSAg
ICAgICAgLy8gVHVybiAweDdGIGludG8gMHgwOCwgYmVjYXVzZSBiYWNrc3BhY2UgbmVlZHMgdG8g
YWx3YXlzIGJlIDB4MDguCi0gICAgICAgIGNhc2UgMHg3RjoKLSAgICAgICAgICAgIHJldHVybiAi
VSswMDA4IjsKLSAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3
Ri4KLSAgICAgICAgY2FzZSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJu
ICJVKzAwN0YiOwotICAgICAgICAgICAgCi0gICAgICAgIC8vIEFsd2F5cyB1c2UgMHgwOSBmb3Ig
dGFiIGluc3RlYWQgb2YgQXBwS2l0J3MgYmFja3RhYiBjaGFyYWN0ZXIuCi0gICAgICAgIGNhc2Ug
TlNCYWNrVGFiQ2hhcmFjdGVyOgotICAgICAgICAgICAgcmV0dXJuICJVKzAwMDkiOwotCi0gICAg
ICAgIGNhc2UgTlNCZWdpbkZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TQnJlYWtGdW5jdGlv
bktleToKLSAgICAgICAgY2FzZSBOU0NsZWFyRGlzcGxheUZ1bmN0aW9uS2V5OgotICAgICAgICBj
YXNlIE5TRGVsZXRlQ2hhckZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TRGVsZXRlTGluZUZ1
bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TSW5zZXJ0Q2hhckZ1bmN0aW9uS2V5OgotICAgICAg
ICBjYXNlIE5TSW5zZXJ0TGluZUZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TTmV4dEZ1bmN0
aW9uS2V5OgotICAgICAgICBjYXNlIE5TUHJldkZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5T
UHJpbnRGdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU1JlZG9GdW5jdGlvbktleToKLSAgICAg
ICAgY2FzZSBOU1Jlc2V0RnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNTeXNSZXFGdW5jdGlv
bktleToKLSAgICAgICAgY2FzZSBOU1N5c3RlbUZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5T
VXNlckZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2Ugc29t
ZXRoaW5nIG90aGVyIHRoYW4gdGhlIHZlbmRvci1hcmVhIFVuaWNvZGUgdmFsdWVzIGZvciB0aGUg
YWJvdmUga2V5cy4KLSAgICAgICAgICAgIC8vIEZvciBub3csIGp1c3QgZmFsbCB0aHJvdWdoIHRv
IHRoZSBkZWZhdWx0LgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCJVKyUwNFgiLCB0b0FTQ0lJVXBwZXIoYykpOwotICAgIH0KKworICAgIHJldHVy
biBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnRDaGFyYWN0ZXJzKFtldmVudCBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnNdKTsKIH0KIAogc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChOU0V2ZW50
KiBldmVudCkKQEAgLTM5NiwzNzQgKzEwNyw2IEBAIHN0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQo
TlNFdmVudCogZXZlbnQKICAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW50IHdpbmRv
d3NLZXlDb2RlRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0gICAgc3dpdGNoIChbZXZl
bnQga2V5Q29kZV0pIHsKLSAgICAgICAgLy8gVktfVEFCICgwOSkgVEFCIGtleQotICAgICAgICBj
YXNlIDQ4OiByZXR1cm4gMHgwOTsKLQotICAgICAgICAvLyBWS19BUFBTICg1RCkgUmlnaHQgd2lu
ZG93cy9tZXRhIGtleQotICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAgICAg
ICAgICByZXR1cm4gMHg1RDsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBWS19MV0lOICg1Qikg
TGVmdCB3aW5kb3dzL21ldGEga2V5Ci0gICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAot
ICAgICAgICAgICAgcmV0dXJuIDB4NUI7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktfQ0FQ
SVRBTCAoMTQpIGNhcHMgbG9ja3Mga2V5Ci0gICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCi0g
ICAgICAgICAgICByZXR1cm4gMHgxNDsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBWS19TSElG
VCAoMTApIGVpdGhlciBzaGlmdCBrZXkKLSAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAot
ICAgICAgICBjYXNlIDYwOiAvLyBSaWdodCBTaGlmdAotICAgICAgICAgICAgcmV0dXJuIDB4MTA7
Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktfTUVOVSAoMTIpIGVpdGhlciBhbHQga2V5Ci0g
ICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0Ci0gICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFs
dAotICAgICAgICAgICAgcmV0dXJuIDB4MTI7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktf
Q09OVFJPTCAoMTEpIGVpdGhlciBjdHJsIGtleQotICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0
cmwKLSAgICAgICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAotICAgICAgICAgICAgcmV0dXJuIDB4
MTE7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktfQ0xFQVIgKDBDKSBDTEVBUiBrZXkKLSAg
ICAgICAgY2FzZSA3MTogcmV0dXJuIDB4MEM7Ci0KLSAgICAgICAgLy8gVktfTlVNUEFEMCAoNjAp
IE51bWVyaWMga2V5cGFkIDAga2V5Ci0gICAgICAgIGNhc2UgODI6IHJldHVybiAweDYwOwotICAg
ICAgICAvLyBWS19OVU1QQUQxICg2MSkgTnVtZXJpYyBrZXlwYWQgMSBrZXkKLSAgICAgICAgY2Fz
ZSA4MzogcmV0dXJuIDB4NjE7Ci0gICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmljIGtl
eXBhZCAyIGtleQotICAgICAgICBjYXNlIDg0OiByZXR1cm4gMHg2MjsKLSAgICAgICAgLy8gVktf
TlVNUEFEMyAoNjMpIE51bWVyaWMga2V5cGFkIDMga2V5Ci0gICAgICAgIGNhc2UgODU6IHJldHVy
biAweDYzOwotICAgICAgICAvLyBWS19OVU1QQUQ0ICg2NCkgTnVtZXJpYyBrZXlwYWQgNCBrZXkK
LSAgICAgICAgY2FzZSA4NjogcmV0dXJuIDB4NjQ7Ci0gICAgICAgIC8vIFZLX05VTVBBRDUgKDY1
KSBOdW1lcmljIGtleXBhZCA1IGtleQotICAgICAgICBjYXNlIDg3OiByZXR1cm4gMHg2NTsKLSAg
ICAgICAgLy8gVktfTlVNUEFENiAoNjYpIE51bWVyaWMga2V5cGFkIDYga2V5Ci0gICAgICAgIGNh
c2UgODg6IHJldHVybiAweDY2OwotICAgICAgICAvLyBWS19OVU1QQUQ3ICg2NykgTnVtZXJpYyBr
ZXlwYWQgNyBrZXkKLSAgICAgICAgY2FzZSA4OTogcmV0dXJuIDB4Njc7Ci0gICAgICAgIC8vIFZL
X05VTVBBRDggKDY4KSBOdW1lcmljIGtleXBhZCA4IGtleQotICAgICAgICBjYXNlIDkxOiByZXR1
cm4gMHg2ODsKLSAgICAgICAgLy8gVktfTlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5
Ci0gICAgICAgIGNhc2UgOTI6IHJldHVybiAweDY5OwotICAgICAgICAvLyBWS19NVUxUSVBMWSAo
NkEpIE11bHRpcGx5IGtleQotICAgICAgICBjYXNlIDY3OiByZXR1cm4gMHg2QTsKLSAgICAgICAg
Ly8gVktfQUREICg2QikgQWRkIGtleQotICAgICAgICBjYXNlIDY5OiByZXR1cm4gMHg2QjsKLQot
ICAgICAgICAvLyBWS19TVUJUUkFDVCAoNkQpIFN1YnRyYWN0IGtleQotICAgICAgICBjYXNlIDc4
OiByZXR1cm4gMHg2RDsKLSAgICAgICAgLy8gVktfREVDSU1BTCAoNkUpIERlY2ltYWwga2V5Ci0g
ICAgICAgIGNhc2UgNjU6IHJldHVybiAweDZFOwotICAgICAgICAvLyBWS19ESVZJREUgKDZGKSBE
aXZpZGUga2V5Ci0gICAgICAgIGNhc2UgNzU6IHJldHVybiAweDZGOwotICAgICB9Ci0KLSAgICBO
U1N0cmluZyogcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlm
IChbcyBsZW5ndGhdICE9IDEpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgc3dpdGNoIChbcyBj
aGFyYWN0ZXJBdEluZGV4OjBdKSB7Ci0gICAgICAgIC8vIFZLX0xCVVRUT04gKDAxKSBMZWZ0IG1v
dXNlIGJ1dHRvbgotICAgICAgICAvLyBWS19SQlVUVE9OICgwMikgUmlnaHQgbW91c2UgYnV0dG9u
Ci0gICAgICAgIC8vIFZLX0NBTkNFTCAoMDMpIENvbnRyb2wtYnJlYWsgcHJvY2Vzc2luZwotICAg
ICAgICAvLyBWS19NQlVUVE9OICgwNCkgTWlkZGxlIG1vdXNlIGJ1dHRvbiAodGhyZWUtYnV0dG9u
IG1vdXNlKQotICAgICAgICAvLyBWS19YQlVUVE9OMSAoMDUpCi0gICAgICAgIC8vIFZLX1hCVVRU
T04yICgwNikKLQotICAgICAgICAvLyBWS19CQUNLICgwOCkgQkFDS1NQQUNFIGtleQotICAgICAg
ICBjYXNlIDg6IGNhc2UgMHg3RjogcmV0dXJuIDB4MDg7Ci0gICAgICAgIC8vIFZLX1RBQiAoMDkp
IFRBQiBrZXkKLSAgICAgICAgY2FzZSA5OiByZXR1cm4gMHgwOTsKLQotICAgICAgICAvLyBWS19D
TEVBUiAoMEMpIENMRUFSIGtleQotICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFib3Zl
Ci0KLSAgICAgICAgLy8gVktfUkVUVVJOICgwRCkKLSAgICAgICAgY2FzZSAweEQ6IGNhc2UgMzog
cmV0dXJuIDB4MEQ7Ci0KLSAgICAgICAgLy8gVktfU0hJRlQgKDEwKSBTSElGVCBrZXkKLSAgICAg
ICAgLy8gVktfQ09OVFJPTCAoMTEpIENUUkwga2V5Ci0gICAgICAgIC8vIFZLX01FTlUgKDEyKSBB
TFQga2V5Ci0KLSAgICAgICAgLy8gVktfUEFVU0UgKDEzKSBQQVVTRSBrZXkKLSAgICAgICAgY2Fz
ZSBOU1BhdXNlRnVuY3Rpb25LZXk6IHJldHVybiAweDEzOwotCi0gICAgICAgIC8vIFZLX0NBUElU
QUwgKDE0KSBDQVBTIExPQ0sga2V5Ci0gICAgICAgIC8vIFZLX0tBTkEgKDE1KSBJbnB1dCBNZXRo
b2QgRWRpdG9yIChJTUUpIEthbmEgbW9kZQotICAgICAgICAvLyBWS19IQU5HVUVMICgxNSkgSU1F
IEhhbmd1ZWwgbW9kZSAobWFpbnRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eTsgdXNlIFZLX0hBTkdV
TCkKLSAgICAgICAgLy8gVktfSEFOR1VMICgxNSkgSU1FIEhhbmd1bCBtb2RlCi0gICAgICAgIC8v
IFZLX0pVTkpBICgxNykgSU1FIEp1bmphIG1vZGUKLSAgICAgICAgLy8gVktfRklOQUwgKDE4KSBJ
TUUgZmluYWwgbW9kZQotICAgICAgICAvLyBWS19IQU5KQSAoMTkpIElNRSBIYW5qYSBtb2RlCi0g
ICAgICAgIC8vIFZLX0tBTkpJICgxOSkgSU1FIEthbmppIG1vZGUKLQotICAgICAgICAvLyBWS19F
U0NBUEUgKDFCKSBFU0Mga2V5Ci0gICAgICAgIGNhc2UgMHgxQjogcmV0dXJuIDB4MUI7Ci0KLSAg
ICAgICAgLy8gVktfQ09OVkVSVCAoMUMpIElNRSBjb252ZXJ0Ci0gICAgICAgIC8vIFZLX05PTkNP
TlZFUlQgKDFEKSBJTUUgbm9uY29udmVydAotICAgICAgICAvLyBWS19BQ0NFUFQgKDFFKSBJTUUg
YWNjZXB0Ci0gICAgICAgIC8vIFZLX01PREVDSEFOR0UgKDFGKSBJTUUgbW9kZSBjaGFuZ2UgcmVx
dWVzdAotCi0gICAgICAgIC8vIFZLX1NQQUNFICgyMCkgU1BBQ0VCQVIKLSAgICAgICAgY2FzZSAn
ICc6IHJldHVybiAweDIwOwotICAgICAgICAvLyBWS19QUklPUiAoMjEpIFBBR0UgVVAga2V5Ci0g
ICAgICAgIGNhc2UgTlNQYWdlVXBGdW5jdGlvbktleTogcmV0dXJuIDB4MjE7Ci0gICAgICAgIC8v
IFZLX05FWFQgKDIyKSBQQUdFIERPV04ga2V5Ci0gICAgICAgIGNhc2UgTlNQYWdlRG93bkZ1bmN0
aW9uS2V5OiByZXR1cm4gMHgyMjsKLSAgICAgICAgLy8gVktfRU5EICgyMykgRU5EIGtleQotICAg
ICAgICBjYXNlIE5TRW5kRnVuY3Rpb25LZXk6IHJldHVybiAweDIzOwotICAgICAgICAvLyBWS19I
T01FICgyNCkgSE9NRSBrZXkKLSAgICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleTogcmV0dXJu
IDB4MjQ7Ci0gICAgICAgIC8vIFZLX0xFRlQgKDI1KSBMRUZUIEFSUk9XIGtleQotICAgICAgICBj
YXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6IHJldHVybiAweDI1OwotICAgICAgICAvLyBWS19V
UCAoMjYpIFVQIEFSUk9XIGtleQotICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OiBy
ZXR1cm4gMHgyNjsKLSAgICAgICAgLy8gVktfUklHSFQgKDI3KSBSSUdIVCBBUlJPVyBrZXkKLSAg
ICAgICAgY2FzZSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTogcmV0dXJuIDB4Mjc7Ci0gICAgICAg
IC8vIFZLX0RPV04gKDI4KSBET1dOIEFSUk9XIGtleQotICAgICAgICBjYXNlIE5TRG93bkFycm93
RnVuY3Rpb25LZXk6IHJldHVybiAweDI4OwotICAgICAgICAvLyBWS19TRUxFQ1QgKDI5KSBTRUxF
Q1Qga2V5Ci0gICAgICAgIGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleTogcmV0dXJuIDB4Mjk7Ci0g
ICAgICAgIC8vIFZLX1BSSU5UICgyQSkgUFJJTlQga2V5Ci0gICAgICAgIGNhc2UgTlNQcmludEZ1
bmN0aW9uS2V5OiByZXR1cm4gMHgyQTsKLSAgICAgICAgLy8gVktfRVhFQ1VURSAoMkIpIEVYRUNV
VEUga2V5Ci0gICAgICAgIGNhc2UgTlNFeGVjdXRlRnVuY3Rpb25LZXk6IHJldHVybiAweDJCOwot
ICAgICAgICAvLyBWS19TTkFQU0hPVCAoMkMpIFBSSU5UIFNDUkVFTiBrZXkKLSAgICAgICAgY2Fz
ZSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk6IHJldHVybiAweDJDOwotICAgICAgICAvLyBWS19J
TlNFUlQgKDJEKSBJTlMga2V5Ci0gICAgICAgIGNhc2UgTlNJbnNlcnRGdW5jdGlvbktleTogY2Fz
ZSBOU0hlbHBGdW5jdGlvbktleTogcmV0dXJuIDB4MkQ7Ci0gICAgICAgIC8vIFZLX0RFTEVURSAo
MkUpIERFTCBrZXkKLSAgICAgICAgY2FzZSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgy
RTsKLQotICAgICAgICAvLyBWS19IRUxQICgyRikgSEVMUCBrZXkKLQotICAgICAgICAvLyAgKDMw
KSAwIGtleQotICAgICAgICBjYXNlICcwJzogY2FzZSAnKSc6IHJldHVybiAweDMwOwotICAgICAg
ICAvLyAgKDMxKSAxIGtleQotICAgICAgICBjYXNlICcxJzogY2FzZSAnISc6IHJldHVybiAweDMx
OwotICAgICAgICAvLyAgKDMyKSAyIGtleQotICAgICAgICBjYXNlICcyJzogY2FzZSAnQCc6IHJl
dHVybiAweDMyOwotICAgICAgICAvLyAgKDMzKSAzIGtleQotICAgICAgICBjYXNlICczJzogY2Fz
ZSAnIyc6IHJldHVybiAweDMzOwotICAgICAgICAvLyAgKDM0KSA0IGtleQotICAgICAgICBjYXNl
ICc0JzogY2FzZSAnJCc6IHJldHVybiAweDM0OwotICAgICAgICAvLyAgKDM1KSA1IGtleQotICAg
ICAgICBjYXNlICc1JzogY2FzZSAnJSc6IHJldHVybiAweDM1OwotICAgICAgICAvLyAgKDM2KSA2
IGtleQotICAgICAgICBjYXNlICc2JzogY2FzZSAnXic6IHJldHVybiAweDM2OwotICAgICAgICAv
LyAgKDM3KSA3IGtleQotICAgICAgICBjYXNlICc3JzogY2FzZSAnJic6IHJldHVybiAweDM3Owot
ICAgICAgICAvLyAgKDM4KSA4IGtleQotICAgICAgICBjYXNlICc4JzogY2FzZSAnKic6IHJldHVy
biAweDM4OwotICAgICAgICAvLyAgKDM5KSA5IGtleQotICAgICAgICBjYXNlICc5JzogY2FzZSAn
KCc6IHJldHVybiAweDM5OwotICAgICAgICAvLyAgKDQxKSBBIGtleQotICAgICAgICBjYXNlICdh
JzogY2FzZSAnQSc6IHJldHVybiAweDQxOwotICAgICAgICAvLyAgKDQyKSBCIGtleQotICAgICAg
ICBjYXNlICdiJzogY2FzZSAnQic6IHJldHVybiAweDQyOwotICAgICAgICAvLyAgKDQzKSBDIGtl
eQotICAgICAgICBjYXNlICdjJzogY2FzZSAnQyc6IHJldHVybiAweDQzOwotICAgICAgICAvLyAg
KDQ0KSBEIGtleQotICAgICAgICBjYXNlICdkJzogY2FzZSAnRCc6IHJldHVybiAweDQ0OwotICAg
ICAgICAvLyAgKDQ1KSBFIGtleQotICAgICAgICBjYXNlICdlJzogY2FzZSAnRSc6IHJldHVybiAw
eDQ1OwotICAgICAgICAvLyAgKDQ2KSBGIGtleQotICAgICAgICBjYXNlICdmJzogY2FzZSAnRic6
IHJldHVybiAweDQ2OwotICAgICAgICAvLyAgKDQ3KSBHIGtleQotICAgICAgICBjYXNlICdnJzog
Y2FzZSAnRyc6IHJldHVybiAweDQ3OwotICAgICAgICAvLyAgKDQ4KSBIIGtleQotICAgICAgICBj
YXNlICdoJzogY2FzZSAnSCc6IHJldHVybiAweDQ4OwotICAgICAgICAvLyAgKDQ5KSBJIGtleQot
ICAgICAgICBjYXNlICdpJzogY2FzZSAnSSc6IHJldHVybiAweDQ5OwotICAgICAgICAvLyAgKDRB
KSBKIGtleQotICAgICAgICBjYXNlICdqJzogY2FzZSAnSic6IHJldHVybiAweDRBOwotICAgICAg
ICAvLyAgKDRCKSBLIGtleQotICAgICAgICBjYXNlICdrJzogY2FzZSAnSyc6IHJldHVybiAweDRC
OwotICAgICAgICAvLyAgKDRDKSBMIGtleQotICAgICAgICBjYXNlICdsJzogY2FzZSAnTCc6IHJl
dHVybiAweDRDOwotICAgICAgICAvLyAgKDREKSBNIGtleQotICAgICAgICBjYXNlICdtJzogY2Fz
ZSAnTSc6IHJldHVybiAweDREOwotICAgICAgICAvLyAgKDRFKSBOIGtleQotICAgICAgICBjYXNl
ICduJzogY2FzZSAnTic6IHJldHVybiAweDRFOwotICAgICAgICAvLyAgKDRGKSBPIGtleQotICAg
ICAgICBjYXNlICdvJzogY2FzZSAnTyc6IHJldHVybiAweDRGOwotICAgICAgICAvLyAgKDUwKSBQ
IGtleQotICAgICAgICBjYXNlICdwJzogY2FzZSAnUCc6IHJldHVybiAweDUwOwotICAgICAgICAv
LyAgKDUxKSBRIGtleQotICAgICAgICBjYXNlICdxJzogY2FzZSAnUSc6IHJldHVybiAweDUxOwot
ICAgICAgICAvLyAgKDUyKSBSIGtleQotICAgICAgICBjYXNlICdyJzogY2FzZSAnUic6IHJldHVy
biAweDUyOwotICAgICAgICAvLyAgKDUzKSBTIGtleQotICAgICAgICBjYXNlICdzJzogY2FzZSAn
Uyc6IHJldHVybiAweDUzOwotICAgICAgICAvLyAgKDU0KSBUIGtleQotICAgICAgICBjYXNlICd0
JzogY2FzZSAnVCc6IHJldHVybiAweDU0OwotICAgICAgICAvLyAgKDU1KSBVIGtleQotICAgICAg
ICBjYXNlICd1JzogY2FzZSAnVSc6IHJldHVybiAweDU1OwotICAgICAgICAvLyAgKDU2KSBWIGtl
eQotICAgICAgICBjYXNlICd2JzogY2FzZSAnVic6IHJldHVybiAweDU2OwotICAgICAgICAvLyAg
KDU3KSBXIGtleQotICAgICAgICBjYXNlICd3JzogY2FzZSAnVyc6IHJldHVybiAweDU3OwotICAg
ICAgICAvLyAgKDU4KSBYIGtleQotICAgICAgICBjYXNlICd4JzogY2FzZSAnWCc6IHJldHVybiAw
eDU4OwotICAgICAgICAvLyAgKDU5KSBZIGtleQotICAgICAgICBjYXNlICd5JzogY2FzZSAnWSc6
IHJldHVybiAweDU5OwotICAgICAgICAvLyAgKDVBKSBaIGtleQotICAgICAgICBjYXNlICd6Jzog
Y2FzZSAnWic6IHJldHVybiAweDVBOwotCi0gICAgICAgIC8vIFZLX0xXSU4gKDVCKSBMZWZ0IFdp
bmRvd3Mga2V5IChNaWNyb3NvZnQgTmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgLy8gVktfUldJ
TiAoNUMpIFJpZ2h0IFdpbmRvd3Mga2V5IChOYXR1cmFsIGtleWJvYXJkKQotICAgICAgICAvLyBW
S19BUFBTICg1RCkgQXBwbGljYXRpb25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAg
Ly8gVktfU0xFRVAgKDVGKSBDb21wdXRlciBTbGVlcCBrZXkKLQotICAgICAgICAvLyBWS19OVU1Q
QUQwICg2MCkgTnVtZXJpYyBrZXlwYWQgMCBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFEMSAoNjEp
IE51bWVyaWMga2V5cGFkIDEga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmlj
IGtleXBhZCAyIGtleQotICAgICAgICAvLyBWS19OVU1QQUQzICg2MykgTnVtZXJpYyBrZXlwYWQg
MyBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFENCAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5Ci0g
ICAgICAgIC8vIFZLX05VTVBBRDUgKDY1KSBOdW1lcmljIGtleXBhZCA1IGtleQotICAgICAgICAv
LyBWS19OVU1QQUQ2ICg2NikgTnVtZXJpYyBrZXlwYWQgNiBrZXkKLSAgICAgICAgLy8gVktfTlVN
UEFENyAoNjcpIE51bWVyaWMga2V5cGFkIDcga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDggKDY4
KSBOdW1lcmljIGtleXBhZCA4IGtleQotICAgICAgICAvLyBWS19OVU1QQUQ5ICg2OSkgTnVtZXJp
YyBrZXlwYWQgOSBrZXkKLSAgICAgICAgLy8gVktfTVVMVElQTFkgKDZBKSBNdWx0aXBseSBrZXkK
LSAgICAgICAgLy8gVktfQUREICg2QikgQWRkIGtleQotICAgICAgICAvLyBoYW5kbGVkIGJ5IGtl
eSBjb2RlIGFib3ZlCi0KLSAgICAgICAgLy8gVktfU0VQQVJBVE9SICg2QykgU2VwYXJhdG9yIGtl
eQotCi0gICAgICAgIC8vIFZLX1NVQlRSQUNUICg2RCkgU3VidHJhY3Qga2V5Ci0gICAgICAgIC8v
IFZLX0RFQ0lNQUwgKDZFKSBEZWNpbWFsIGtleQotICAgICAgICAvLyBWS19ESVZJREUgKDZGKSBE
aXZpZGUga2V5Ci0gICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKLQotICAgICAg
ICAvLyBWS19GMSAoNzApIEYxIGtleQotICAgICAgICBjYXNlIE5TRjFGdW5jdGlvbktleTogcmV0
dXJuIDB4NzA7Ci0gICAgICAgIC8vIFZLX0YyICg3MSkgRjIga2V5Ci0gICAgICAgIGNhc2UgTlNG
MkZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3MTsKLSAgICAgICAgLy8gVktfRjMgKDcyKSBGMyBrZXkK
LSAgICAgICAgY2FzZSBOU0YzRnVuY3Rpb25LZXk6IHJldHVybiAweDcyOwotICAgICAgICAvLyBW
S19GNCAoNzMpIEY0IGtleQotICAgICAgICBjYXNlIE5TRjRGdW5jdGlvbktleTogcmV0dXJuIDB4
NzM7Ci0gICAgICAgIC8vIFZLX0Y1ICg3NCkgRjUga2V5Ci0gICAgICAgIGNhc2UgTlNGNUZ1bmN0
aW9uS2V5OiByZXR1cm4gMHg3NDsKLSAgICAgICAgLy8gVktfRjYgKDc1KSBGNiBrZXkKLSAgICAg
ICAgY2FzZSBOU0Y2RnVuY3Rpb25LZXk6IHJldHVybiAweDc1OwotICAgICAgICAvLyBWS19GNyAo
NzYpIEY3IGtleQotICAgICAgICBjYXNlIE5TRjdGdW5jdGlvbktleTogcmV0dXJuIDB4NzY7Ci0g
ICAgICAgIC8vIFZLX0Y4ICg3NykgRjgga2V5Ci0gICAgICAgIGNhc2UgTlNGOEZ1bmN0aW9uS2V5
OiByZXR1cm4gMHg3NzsKLSAgICAgICAgLy8gVktfRjkgKDc4KSBGOSBrZXkKLSAgICAgICAgY2Fz
ZSBOU0Y5RnVuY3Rpb25LZXk6IHJldHVybiAweDc4OwotICAgICAgICAvLyBWS19GMTAgKDc5KSBG
MTAga2V5Ci0gICAgICAgIGNhc2UgTlNGMTBGdW5jdGlvbktleTogcmV0dXJuIDB4Nzk7Ci0gICAg
ICAgIC8vIFZLX0YxMSAoN0EpIEYxMSBrZXkKLSAgICAgICAgY2FzZSBOU0YxMUZ1bmN0aW9uS2V5
OiByZXR1cm4gMHg3QTsKLSAgICAgICAgLy8gVktfRjEyICg3QikgRjEyIGtleQotICAgICAgICBj
YXNlIE5TRjEyRnVuY3Rpb25LZXk6IHJldHVybiAweDdCOwotICAgICAgICAvLyBWS19GMTMgKDdD
KSBGMTMga2V5Ci0gICAgICAgIGNhc2UgTlNGMTNGdW5jdGlvbktleTogcmV0dXJuIDB4N0M7Ci0g
ICAgICAgIC8vIFZLX0YxNCAoN0QpIEYxNCBrZXkKLSAgICAgICAgY2FzZSBOU0YxNEZ1bmN0aW9u
S2V5OiByZXR1cm4gMHg3RDsKLSAgICAgICAgLy8gVktfRjE1ICg3RSkgRjE1IGtleQotICAgICAg
ICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6IHJldHVybiAweDdFOwotICAgICAgICAvLyBWS19GMTYg
KDdGKSBGMTYga2V5Ci0gICAgICAgIGNhc2UgTlNGMTZGdW5jdGlvbktleTogcmV0dXJuIDB4N0Y7
Ci0gICAgICAgIC8vIFZLX0YxNyAoODBIKSBGMTcga2V5Ci0gICAgICAgIGNhc2UgTlNGMTdGdW5j
dGlvbktleTogcmV0dXJuIDB4ODA7Ci0gICAgICAgIC8vIFZLX0YxOCAoODFIKSBGMTgga2V5Ci0g
ICAgICAgIGNhc2UgTlNGMThGdW5jdGlvbktleTogcmV0dXJuIDB4ODE7Ci0gICAgICAgIC8vIFZL
X0YxOSAoODJIKSBGMTkga2V5Ci0gICAgICAgIGNhc2UgTlNGMTlGdW5jdGlvbktleTogcmV0dXJu
IDB4ODI7Ci0gICAgICAgIC8vIFZLX0YyMCAoODNIKSBGMjAga2V5Ci0gICAgICAgIGNhc2UgTlNG
MjBGdW5jdGlvbktleTogcmV0dXJuIDB4ODM7Ci0gICAgICAgIC8vIFZLX0YyMSAoODRIKSBGMjEg
a2V5Ci0gICAgICAgIGNhc2UgTlNGMjFGdW5jdGlvbktleTogcmV0dXJuIDB4ODQ7Ci0gICAgICAg
IC8vIFZLX0YyMiAoODVIKSBGMjIga2V5Ci0gICAgICAgIGNhc2UgTlNGMjJGdW5jdGlvbktleTog
cmV0dXJuIDB4ODU7Ci0gICAgICAgIC8vIFZLX0YyMyAoODZIKSBGMjMga2V5Ci0gICAgICAgIGNh
c2UgTlNGMjNGdW5jdGlvbktleTogcmV0dXJuIDB4ODY7Ci0gICAgICAgIC8vIFZLX0YyNCAoODdI
KSBGMjQga2V5Ci0gICAgICAgIGNhc2UgTlNGMjRGdW5jdGlvbktleTogcmV0dXJuIDB4ODc7Ci0K
LSAgICAgICAgLy8gVktfTlVNTE9DSyAoOTApIE5VTSBMT0NLIGtleQotCi0gICAgICAgIC8vIFZL
X1NDUk9MTCAoOTEpIFNDUk9MTCBMT0NLIGtleQotICAgICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1
bmN0aW9uS2V5OiByZXR1cm4gMHg5MTsKLQotICAgICAgICAvLyBWS19MU0hJRlQgKEEwKSBMZWZ0
IFNISUZUIGtleQotICAgICAgICAvLyBWS19SU0hJRlQgKEExKSBSaWdodCBTSElGVCBrZXkKLSAg
ICAgICAgLy8gVktfTENPTlRST0wgKEEyKSBMZWZ0IENPTlRST0wga2V5Ci0gICAgICAgIC8vIFZL
X1JDT05UUk9MIChBMykgUmlnaHQgQ09OVFJPTCBrZXkKLSAgICAgICAgLy8gVktfTE1FTlUgKEE0
KSBMZWZ0IE1FTlUga2V5Ci0gICAgICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkK
LSAgICAgICAgLy8gVktfQlJPV1NFUl9CQUNLIChBNikgV2luZG93cyAyMDAwL1hQOiBCcm93c2Vy
IEJhY2sga2V5Ci0gICAgICAgIC8vIFZLX0JST1dTRVJfRk9SV0FSRCAoQTcpIFdpbmRvd3MgMjAw
MC9YUDogQnJvd3NlciBGb3J3YXJkIGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX1JFRlJFU0gg
KEE4KSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgUmVmcmVzaCBrZXkKLSAgICAgICAgLy8gVktf
QlJPV1NFUl9TVE9QIChBOSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0b3Aga2V5Ci0gICAg
ICAgIC8vIFZLX0JST1dTRVJfU0VBUkNIIChBQSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFNl
YXJjaCBrZXkKLSAgICAgICAgLy8gVktfQlJPV1NFUl9GQVZPUklURVMgKEFCKSBXaW5kb3dzIDIw
MDAvWFA6IEJyb3dzZXIgRmF2b3JpdGVzIGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX0hPTUUg
KEFDKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgU3RhcnQgYW5kIEhvbWUga2V5Ci0gICAgICAg
IC8vIFZLX1ZPTFVNRV9NVVRFIChBRCkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgTXV0ZSBrZXkK
LSAgICAgICAgLy8gVktfVk9MVU1FX0RPV04gKEFFKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBE
b3duIGtleQotICAgICAgICAvLyBWS19WT0xVTUVfVVAgKEFGKSBXaW5kb3dzIDIwMDAvWFA6IFZv
bHVtZSBVcCBrZXkKLSAgICAgICAgLy8gVktfTUVESUFfTkVYVF9UUkFDSyAoQjApIFdpbmRvd3Mg
MjAwMC9YUDogTmV4dCBUcmFjayBrZXkKLSAgICAgICAgLy8gVktfTUVESUFfUFJFVl9UUkFDSyAo
QjEpIFdpbmRvd3MgMjAwMC9YUDogUHJldmlvdXMgVHJhY2sga2V5Ci0gICAgICAgIC8vIFZLX01F
RElBX1NUT1AgKEIyKSBXaW5kb3dzIDIwMDAvWFA6IFN0b3AgTWVkaWEga2V5Ci0gICAgICAgIC8v
IFZLX01FRElBX1BMQVlfUEFVU0UgKEIzKSBXaW5kb3dzIDIwMDAvWFA6IFBsYXkvUGF1c2UgTWVk
aWEga2V5Ci0gICAgICAgIC8vIFZLX0xBVU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBT
dGFydCBNYWlsIGtleQotICAgICAgICAvLyBWS19MQVVOQ0hfTUVESUFfU0VMRUNUIChCNSkgV2lu
ZG93cyAyMDAwL1hQOiBTZWxlY3QgTWVkaWEga2V5Ci0gICAgICAgIC8vIFZLX0xBVU5DSF9BUFAx
IChCNikgV2luZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAxIGtleQotICAgICAgICAv
LyBWS19MQVVOQ0hfQVBQMiAoQjcpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24g
MiBrZXkKLQotICAgICAgICAvLyBWS19PRU1fMSAoQkEpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMg
Y2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9y
IHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICc7Oicga2V5Ci0gICAgICAgIGNhc2UgJzsn
OiBjYXNlICc6JzogcmV0dXJuIDB4QkE7Ci0gICAgICAgIC8vIFZLX09FTV9QTFVTIChCQikgV2lu
ZG93cyAyMDAwL1hQOiBGb3IgYW55IGNvdW50cnkvcmVnaW9uLCB0aGUgJysnIGtleQotICAgICAg
ICBjYXNlICc9JzogY2FzZSAnKyc6IHJldHVybiAweEJCOwotICAgICAgICAvLyBWS19PRU1fQ09N
TUEgKEJDKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLCcg
a2V5Ci0gICAgICAgIGNhc2UgJywnOiBjYXNlICc8JzogcmV0dXJuIDB4QkM7Ci0gICAgICAgIC8v
IFZLX09FTV9NSU5VUyAoQkQpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lv
biwgdGhlICctJyBrZXkKLSAgICAgICAgY2FzZSAnLSc6IGNhc2UgJ18nOiByZXR1cm4gMHhCRDsK
LSAgICAgICAgLy8gVktfT0VNX1BFUklPRCAoQkUpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBj
b3VudHJ5L3JlZ2lvbiwgdGhlICcuJyBrZXkKLSAgICAgICAgY2FzZSAnLic6IGNhc2UgJz4nOiBy
ZXR1cm4gMHhCRTsKLSAgICAgICAgLy8gVktfT0VNXzIgKEJGKSBVc2VkIGZvciBtaXNjZWxsYW5l
b3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6
IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnLz8nIGtleQotICAgICAgICBjYXNl
ICcvJzogY2FzZSAnPyc6IHJldHVybiAweEJGOwotICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVz
ZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQu
IFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficg
a2V5Ci0gICAgICAgIGNhc2UgJ2AnOiBjYXNlICd+JzogcmV0dXJuIDB4QzA7Ci0gICAgICAgIC8v
IFZLX09FTV80IChEQikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4g
dmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtl
eWJvYXJkLCB0aGUgJ1t7JyBrZXkKLSAgICAgICAgY2FzZSAnWyc6IGNhc2UgJ3snOiByZXR1cm4g
MHhEQjsKLSAgICAgICAgLy8gVktfT0VNXzUgKERDKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNo
YXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0
aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXHwnIGtleQotICAgICAgICBjYXNlICdcXCc6
IGNhc2UgJ3wnOiByZXR1cm4gMHhEQzsKLSAgICAgICAgLy8gVktfT0VNXzYgKEREKSBVc2VkIGZv
ciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5k
b3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXX0nIGtleQot
ICAgICAgICBjYXNlICddJzogY2FzZSAnfSc6IHJldHVybiAweEREOwotICAgICAgICAvLyBWS19P
RU1fNyAoREUpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkg
Ynkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2Fy
ZCwgdGhlICdzaW5nbGUtcXVvdGUvZG91YmxlLXF1b3RlJyBrZXkKLSAgICAgICAgY2FzZSAnXCcn
OiBjYXNlICciJzogcmV0dXJuIDB4REU7Ci0KLSAgICAgICAgLy8gVktfT0VNXzggKERGKSBVc2Vk
IGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLgot
ICAgICAgICAvLyBWS19PRU1fMTAyIChFMikgV2luZG93cyAyMDAwL1hQOiBFaXRoZXIgdGhlIGFu
Z2xlIGJyYWNrZXQga2V5IG9yIHRoZSBiYWNrc2xhc2gga2V5IG9uIHRoZSBSVCAxMDIta2V5IGtl
eWJvYXJkCi0gICAgICAgIC8vIFZLX1BST0NFU1NLRVkgKEU1KSBXaW5kb3dzIDk1Lzk4L01lLCBX
aW5kb3dzIE5UIDQuMCwgV2luZG93cyAyMDAwL1hQOiBJTUUgUFJPQ0VTUyBrZXkKLSAgICAgICAg
Ly8gVktfUEFDS0VUIChFNykgV2luZG93cyAyMDAwL1hQOiBVc2VkIHRvIHBhc3MgVW5pY29kZSBj
aGFyYWN0ZXJzIGFzIGlmIHRoZXkgd2VyZSBrZXlzdHJva2VzLiBUaGUgVktfUEFDS0VUIGtleSBp
cyB0aGUgbG93IHdvcmQgb2YgYSAzMi1iaXQgVmlydHVhbCBLZXkgdmFsdWUgdXNlZCBmb3Igbm9u
LWtleWJvYXJkIGlucHV0IG1ldGhvZHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgUmVtYXJr
IGluIEtFWUJESU5QVVQsU2VuZElucHV0LCBXTV9LRVlET1dOLCBhbmQgV01fS0VZVVAKLSAgICAg
ICAgLy8gVktfQVRUTiAoRjYpIEF0dG4ga2V5Ci0gICAgICAgIC8vIFZLX0NSU0VMIChGNykgQ3JT
ZWwga2V5Ci0gICAgICAgIC8vIFZLX0VYU0VMIChGOCkgRXhTZWwga2V5Ci0gICAgICAgIC8vIFZL
X0VSRU9GIChGOSkgRXJhc2UgRU9GIGtleQotICAgICAgICAvLyBWS19QTEFZIChGQSkgUGxheSBr
ZXkKLSAgICAgICAgLy8gVktfWk9PTSAoRkIpIFpvb20ga2V5Ci0gICAgICAgIC8vIFZLX05PTkFN
RSAoRkMpIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlCi0gICAgICAgIC8vIFZLX1BBMSAoRkQpIFBB
MSBrZXkKLSAgICAgICAgLy8gVktfT0VNX0NMRUFSIChGRSkgQ2xlYXIga2V5Ci0gICAgfQotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQoTlNFdmVu
dCAqZXZlbnQpCiB7CiAgICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkKQEAg
LTgxNyw3ICsxNjAsNyBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
CiAgICAgLCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50KSkK
ICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQpKQog
ICAgICwgbV9hdXRvUmVwZWF0KChbZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpICYmIFtl
dmVudCBpc0FSZXBlYXRdKQotICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tl
eUNvZGVGb3JLZXlFdmVudChldmVudCkpCisgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3
aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KFtldmVudCBrZXlDb2RlXSwgW2V2ZW50IGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyc10pKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShbZXZl
bnQga2V5Q29kZV0pCiAgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoZXZlbnQpKQogICAg
ICwgbV9zaGlmdEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKQEAg
LTg3NywzICsyMjAsNSBAQCBib29sIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVudENhcHNM
CiB9CiAKIH0KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElQSE9ORSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50449</attachid>
            <date>2010-03-10 16:02:17 -0800</date>
            <delta_ts>2010-03-22 12:13:29 -0700</delta_ts>
            <desc>[PATCH] Part 1 - Upstream iPhone Code (unused so far)</desc>
            <filename>patch-1</filename>
            <type>text/plain</type>
            <size>17556</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2FlYmY4Zi4uNzMxNTc2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMy0xMCAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwc3RyZWFtIFBhcnQgb2YgdGhlIGlQaG9uZSBQbGF0Zm9ybSBz
aGFyaW5nIGNvZGUgd2l0aCB0aGUgTWFjIFBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg3MAorCisgICAgICAgIFBhcnQgMSAtIFVwc3Ry
ZWFtZWQgdW5zaGFyZWQgaVBob25lIENvZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhvbmU6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS9LZXlFdmVudENvZGVzSVBob25lLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS9LZXlFdmVudElQaG9uZS5tbTogQWRk
ZWQuCisKIDIwMTAtMDMtMTAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AbG9pc2xvLW1hY2Jv
b2twcm8ubG9jYWw+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaXBob25lL0tleUV2ZW50Q29kZXNJUGhvbmUuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vaXBob25lL0tleUV2ZW50Q29kZXNJUGhvbmUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjhmNjI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9pcGhvbmUvS2V5RXZlbnRDb2Rlc0lQaG9uZS5oCkBAIC0wLDAgKzEsMTIxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBLZXlFdmVu
dENvZGVzSVBob25lX2gKKyNkZWZpbmUgS2V5RXZlbnRDb2Rlc0lQaG9uZV9oCisKKy8vIFVuaWNv
ZGVzIHdlIHJlc2VydmUgZm9yIGZ1bmN0aW9uIGtleXMgb24gdGhlIGtleWJvYXJkLCAKKy8vIE9w
ZW5TdGVwIHJlc2VydmVzIHRoZSByYW5nZSAweEY3MDAtMHhGOEZGIGZvciB0aGlzIHB1cnBvc2Uu
CisvLyBUaGUgYXZhaWxhYmlsaXR5IG9mIHZhcmlvdXMga2V5cyB3aWxsIGJlIHN5c3RlbSBkZXBl
bmRlbnQuCisKK2VudW0geworCU5TVXBBcnJvd0Z1bmN0aW9uS2V5CQk9IDB4RjcwMCwKKwlOU0Rv
d25BcnJvd0Z1bmN0aW9uS2V5CQk9IDB4RjcwMSwKKwlOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5CQk9
IDB4RjcwMiwKKwlOU1JpZ2h0QXJyb3dGdW5jdGlvbktleQkJPSAweEY3MDMsCisJTlNGMUZ1bmN0
aW9uS2V5CQkJPSAweEY3MDQsCisJTlNGMkZ1bmN0aW9uS2V5CQkJPSAweEY3MDUsCisJTlNGM0Z1
bmN0aW9uS2V5CQkJPSAweEY3MDYsCisJTlNGNEZ1bmN0aW9uS2V5CQkJPSAweEY3MDcsCisJTlNG
NUZ1bmN0aW9uS2V5CQkJPSAweEY3MDgsCisJTlNGNkZ1bmN0aW9uS2V5CQkJPSAweEY3MDksCisJ
TlNGN0Z1bmN0aW9uS2V5CQkJPSAweEY3MEEsCisJTlNGOEZ1bmN0aW9uS2V5CQkJPSAweEY3MEIs
CisJTlNGOUZ1bmN0aW9uS2V5CQkJPSAweEY3MEMsCisJTlNGMTBGdW5jdGlvbktleQkJPSAweEY3
MEQsCisJTlNGMTFGdW5jdGlvbktleQkJPSAweEY3MEUsCisJTlNGMTJGdW5jdGlvbktleQkJPSAw
eEY3MEYsCisJTlNGMTNGdW5jdGlvbktleQkJPSAweEY3MTAsCisJTlNGMTRGdW5jdGlvbktleQkJ
PSAweEY3MTEsCisJTlNGMTVGdW5jdGlvbktleQkJPSAweEY3MTIsCisJTlNGMTZGdW5jdGlvbktl
eQkJPSAweEY3MTMsCisJTlNGMTdGdW5jdGlvbktleQkJPSAweEY3MTQsCisJTlNGMThGdW5jdGlv
bktleQkJPSAweEY3MTUsCisJTlNGMTlGdW5jdGlvbktleQkJPSAweEY3MTYsCisJTlNGMjBGdW5j
dGlvbktleQkJPSAweEY3MTcsCisJTlNGMjFGdW5jdGlvbktleQkJPSAweEY3MTgsCisJTlNGMjJG
dW5jdGlvbktleQkJPSAweEY3MTksCisJTlNGMjNGdW5jdGlvbktleQkJPSAweEY3MUEsCisJTlNG
MjRGdW5jdGlvbktleQkJPSAweEY3MUIsCisJTlNGMjVGdW5jdGlvbktleQkJPSAweEY3MUMsCisJ
TlNGMjZGdW5jdGlvbktleQkJPSAweEY3MUQsCisJTlNGMjdGdW5jdGlvbktleQkJPSAweEY3MUUs
CisJTlNGMjhGdW5jdGlvbktleQkJPSAweEY3MUYsCisJTlNGMjlGdW5jdGlvbktleQkJPSAweEY3
MjAsCisJTlNGMzBGdW5jdGlvbktleQkJPSAweEY3MjEsCisJTlNGMzFGdW5jdGlvbktleQkJPSAw
eEY3MjIsCisJTlNGMzJGdW5jdGlvbktleQkJPSAweEY3MjMsCisJTlNGMzNGdW5jdGlvbktleQkJ
PSAweEY3MjQsCisJTlNGMzRGdW5jdGlvbktleQkJPSAweEY3MjUsCisJTlNGMzVGdW5jdGlvbktl
eQkJPSAweEY3MjYsCisJTlNJbnNlcnRGdW5jdGlvbktleQkJPSAweEY3MjcsCisJTlNEZWxldGVG
dW5jdGlvbktleQkJPSAweEY3MjgsCisJTlNIb21lRnVuY3Rpb25LZXkJCT0gMHhGNzI5LAorCU5T
QmVnaW5GdW5jdGlvbktleQkJPSAweEY3MkEsCisJTlNFbmRGdW5jdGlvbktleQkJPSAweEY3MkIs
CisJTlNQYWdlVXBGdW5jdGlvbktleQkJPSAweEY3MkMsCisJTlNQYWdlRG93bkZ1bmN0aW9uS2V5
CQk9IDB4RjcyRCwKKwlOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXkJPSAweEY3MkUsCisJTlNTY3Jv
bGxMb2NrRnVuY3Rpb25LZXkJCT0gMHhGNzJGLAorCU5TUGF1c2VGdW5jdGlvbktleQkJPSAweEY3
MzAsCisJTlNTeXNSZXFGdW5jdGlvbktleQkJPSAweEY3MzEsCisJTlNCcmVha0Z1bmN0aW9uS2V5
CQk9IDB4RjczMiwKKwlOU1Jlc2V0RnVuY3Rpb25LZXkJCT0gMHhGNzMzLAorCU5TU3RvcEZ1bmN0
aW9uS2V5CQk9IDB4RjczNCwKKwlOU01lbnVGdW5jdGlvbktleQkJPSAweEY3MzUsCisJTlNVc2Vy
RnVuY3Rpb25LZXkJCT0gMHhGNzM2LAorCU5TU3lzdGVtRnVuY3Rpb25LZXkJCT0gMHhGNzM3LAor
CU5TUHJpbnRGdW5jdGlvbktleQkJPSAweEY3MzgsCisJTlNDbGVhckxpbmVGdW5jdGlvbktleQkJ
PSAweEY3MzksCisJTlNDbGVhckRpc3BsYXlGdW5jdGlvbktleQk9IDB4RjczQSwKKwlOU0luc2Vy
dExpbmVGdW5jdGlvbktleQkJPSAweEY3M0IsCisJTlNEZWxldGVMaW5lRnVuY3Rpb25LZXkJCT0g
MHhGNzNDLAorCU5TSW5zZXJ0Q2hhckZ1bmN0aW9uS2V5CQk9IDB4RjczRCwKKwlOU0RlbGV0ZUNo
YXJGdW5jdGlvbktleQkJPSAweEY3M0UsCisJTlNQcmV2RnVuY3Rpb25LZXkJCT0gMHhGNzNGLAor
CU5TTmV4dEZ1bmN0aW9uS2V5CQk9IDB4Rjc0MCwKKwlOU1NlbGVjdEZ1bmN0aW9uS2V5CQk9IDB4
Rjc0MSwKKwlOU0V4ZWN1dGVGdW5jdGlvbktleQkJPSAweEY3NDIsCisJTlNVbmRvRnVuY3Rpb25L
ZXkJCT0gMHhGNzQzLAorCU5TUmVkb0Z1bmN0aW9uS2V5CQk9IDB4Rjc0NCwKKwlOU0ZpbmRGdW5j
dGlvbktleQkJPSAweEY3NDUsCisJTlNIZWxwRnVuY3Rpb25LZXkJCT0gMHhGNzQ2LAorCU5TTW9k
ZVN3aXRjaEZ1bmN0aW9uS2V5CQk9IDB4Rjc0NworfTsKKworZW51bSB7CisgICAgTlNQYXJhZ3Jh
cGhTZXBhcmF0b3JDaGFyYWN0ZXIgPSAweDIwMjksCisgICAgTlNMaW5lU2VwYXJhdG9yQ2hhcmFj
dGVyID0gMHgyMDI4LAorICAgIE5TVGFiQ2hhcmFjdGVyID0gMHgwMDA5LAorICAgIE5TRm9ybUZl
ZWRDaGFyYWN0ZXIgPSAweDAwMGMsCisgICAgTlNOZXdsaW5lQ2hhcmFjdGVyID0gMHgwMDBhLAor
ICAgIE5TQ2FycmlhZ2VSZXR1cm5DaGFyYWN0ZXIgPSAweDAwMGQsCisgICAgTlNFbnRlckNoYXJh
Y3RlciA9IDB4MDAwMywKKyAgICBOU0JhY2tzcGFjZUNoYXJhY3RlciA9IDB4MDAwOCwKKyAgICBO
U0JhY2tUYWJDaGFyYWN0ZXIgPSAweDAwMTksCisgICAgTlNEZWxldGVDaGFyYWN0ZXIgPSAweDAw
N2YKK307CisKKyNlbmRpZiAhS2V5RXZlbnRDb2Rlc0lQaG9uZV9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2lwaG9uZS9LZXlFdmVudElQaG9uZS5tbSBiL1dlYkNvcmUvcGxhdGZvcm0v
aXBob25lL0tleUV2ZW50SVBob25lLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg3NTgzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2lwaG9uZS9L
ZXlFdmVudElQaG9uZS5tbQpAQCAtMCwwICsxLDQwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmgiCisKKyNpbXBvcnQgIktleUV2ZW50Q29kZXNJUGhvbmUuaCIKKyNpbXBvcnQgIkxv
Z2dpbmcuaCIKKyNpbXBvcnQgIldlYkV2ZW50LmgiCisjaW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5o
PgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KFdlYkV2ZW50ICpldmVudCkKK3sKKyAg
ICBOU1N0cmluZyAqcyA9IGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKKyAgICBp
ZiAoW3MgbGVuZ3RoXSAhPSAxKSB7CisgICAgICAgIExPRyhFdmVudHMsICJyZWNlaXZlZCBhbiB1
bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUiLCBbcyBsZW5n
dGhdKTsKKyAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOworICAgIH0KKyAgICB1bmljaGFy
IGMgPSBDRlN0cmluZ0dldENoYXJhY3RlckF0SW5kZXgoKENGU3RyaW5nUmVmKXMsIDApOworICAg
IHN3aXRjaCAoYykgeworICAgICAgICAvLyBFYWNoIGlkZW50aWZpZXIgbGlzdGVkIGluIHRoZSBE
T00gc3BlYyBpcyBsaXN0ZWQgaGVyZS4KKyAgICAgICAgLy8gTWFueSBhcmUgc2ltcGx5IGNvbW1l
bnRlZCBvdXQgc2luY2UgdGhleSBkbyBub3QgYXBwZWFyIG9uIHN0YW5kYXJkIE1hY2ludG9zaCBr
ZXlib2FyZHMKKyAgICAgICAgLy8gb3IgYXJlIG9uIGEga2V5IHRoYXQgZG9lc24ndCBoYXZlIGEg
Y29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuCisKKyAgICAgICAgLy8gIkFjY2VwdCIKKyAgICAgICAg
Ly8gIkFsbENhbmRpZGF0ZXMiCisKKyAgICAgICAgLy8gIkFsdCIKKyAgICAgICAgY2FzZSBOU01l
bnVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKworICAgICAgICAvLyAi
QXBwcyIKKyAgICAgICAgLy8gIkJyb3dzZXJCYWNrIgorICAgICAgICAvLyAiQnJvd3NlckZvcndh
cmQiCisgICAgICAgIC8vICJCcm93c2VySG9tZSIKKyAgICAgICAgLy8gIkJyb3dzZXJSZWZyZXNo
IgorICAgICAgICAvLyAiQnJvd3NlclNlYXJjaCIKKyAgICAgICAgLy8gIkJyb3dzZXJTdG9wIgor
ICAgICAgICAvLyAiQ2Fwc0xvY2siCisKKyAgICAgICAgLy8gIkNsZWFyIgorICAgICAgICBjYXNl
IE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKwor
ICAgICAgICAvLyAiQ29kZUlucHV0IgorICAgICAgICAvLyAiQ29tcG9zZSIKKyAgICAgICAgLy8g
IkNvbnRyb2wiCisgICAgICAgIC8vICJDcnNlbCIKKyAgICAgICAgLy8gIkNvbnZlcnQiCisgICAg
ICAgIC8vICJDb3B5IgorICAgICAgICAvLyAiQ3V0IgorCisgICAgICAgIC8vICJEb3duIgorICAg
ICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkRv
d24iOworICAgICAgICAvLyAiRW5kIgorICAgICAgICBjYXNlIE5TRW5kRnVuY3Rpb25LZXk6Cisg
ICAgICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgIC8vICJFbnRlciIKKyAgICAgICAgY2Fz
ZSAweDM6IGNhc2UgMHhBOiBjYXNlIDB4RDogLy8gTWFjaW50b3NoIGNhbGxzIHRoZSBvbmUgb24g
dGhlIG1haW4ga2V5Ym9hcmQgUmV0dXJuLCBidXQgV2luZG93cyBjYWxscyBpdCBFbnRlciwgc28g
d2UnbGwgZG8gdGhlIHNhbWUgZm9yIHRoZSBET00KKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIi
OworCisgICAgICAgIC8vICJFcmFzZUVvZiIKKworICAgICAgICAvLyAiRXhlY3V0ZSIKKyAgICAg
ICAgY2FzZSBOU0V4ZWN1dGVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRXhlY3V0
ZSI7CisKKyAgICAgICAgLy8gIkV4c2VsIgorCisgICAgICAgIC8vICJGMSIKKyAgICAgICAgY2Fz
ZSBOU0YxRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgLy8g
IkYyIgorICAgICAgICBjYXNlIE5TRjJGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAi
RjIiOworICAgICAgICAvLyAiRjMiCisgICAgICAgIGNhc2UgTlNGM0Z1bmN0aW9uS2V5OgorICAg
ICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgIC8vICJGNCIKKyAgICAgICAgY2FzZSBOU0Y0
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgLy8gIkY1Igor
ICAgICAgICBjYXNlIE5TRjVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjUiOwor
ICAgICAgICAvLyAiRjYiCisgICAgICAgIGNhc2UgTlNGNkZ1bmN0aW9uS2V5OgorICAgICAgICAg
ICAgcmV0dXJuICJGNiI7CisgICAgICAgIC8vICJGNyIKKyAgICAgICAgY2FzZSBOU0Y3RnVuY3Rp
b25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgLy8gIkY4IgorICAgICAg
ICBjYXNlIE5TRjhGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjgiOworICAgICAg
ICAvLyAiRjkiCisgICAgICAgIGNhc2UgTlNGOUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIC8vICJGMTAiCisgICAgICAgIGNhc2UgTlNGMTBGdW5jdGlvbktl
eToKKyAgICAgICAgICAgIHJldHVybiAiRjEwIjsKKyAgICAgICAgLy8gIkYxMSIKKyAgICAgICAg
Y2FzZSBOU0YxMUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMTEiOworICAgICAg
ICAvLyAiRjEyIgorICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6CisgICAgICAgICAgICBy
ZXR1cm4gIkYxMiI7CisgICAgICAgIC8vICJGMTMiCisgICAgICAgIGNhc2UgTlNGMTNGdW5jdGlv
bktleToKKyAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgLy8gIkYxNCIKKyAgICAg
ICAgY2FzZSBOU0YxNEZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICAvLyAiRjE1IgorICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6CisgICAgICAgICAg
ICByZXR1cm4gIkYxNSI7CisgICAgICAgIC8vICJGMTYiCisgICAgICAgIGNhc2UgTlNGMTZGdW5j
dGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgLy8gIkYxNyIKKyAg
ICAgICAgY2FzZSBOU0YxN0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMTciOwor
ICAgICAgICAvLyAiRjE4IgorICAgICAgICBjYXNlIE5TRjE4RnVuY3Rpb25LZXk6CisgICAgICAg
ICAgICByZXR1cm4gIkYxOCI7CisgICAgICAgIC8vICJGMTkiCisgICAgICAgIGNhc2UgTlNGMTlG
dW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgLy8gIkYyMCIK
KyAgICAgICAgY2FzZSBOU0YyMEZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMjAi
OworICAgICAgICAvLyAiRjIxIgorICAgICAgICBjYXNlIE5TRjIxRnVuY3Rpb25LZXk6CisgICAg
ICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIC8vICJGMjIiCisgICAgICAgIGNhc2UgTlNG
MjJGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgLy8gIkYy
MyIKKyAgICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJG
MjMiOworICAgICAgICAvLyAiRjI0IgorICAgICAgICBjYXNlIE5TRjI0RnVuY3Rpb25LZXk6Cisg
ICAgICAgICAgICByZXR1cm4gIkYyNCI7CisKKyAgICAgICAgLy8gIkZpbmFsTW9kZSIKKworICAg
ICAgICAvLyAiRmluZCIKKyAgICAgICAgY2FzZSBOU0ZpbmRGdW5jdGlvbktleToKKyAgICAgICAg
ICAgIHJldHVybiAiRmluZCI7CisKKyAgICAgICAgLy8gIkZ1bGxXaWR0aCIKKyAgICAgICAgLy8g
IkhhbGZXaWR0aCIKKyAgICAgICAgLy8gIkhhbmd1bE1vZGUiCisgICAgICAgIC8vICJIYW5qYU1v
ZGUiCisKKyAgICAgICAgLy8gIkhlbHAiCisgICAgICAgIGNhc2UgTlNIZWxwRnVuY3Rpb25LZXk6
CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiOworCisgICAgICAgIC8vICJIaXJhZ2FuYSIKKwor
ICAgICAgICAvLyAiSG9tZSIKKyAgICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleToKKyAgICAg
ICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgIC8vICJJbnNlcnQiCisgICAgICAgIGNhc2Ug
TlNJbnNlcnRGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKworICAg
ICAgICAvLyAiSmFwYW5lc2VIaXJhZ2FuYSIKKyAgICAgICAgLy8gIkphcGFuZXNlS2F0YWthbmEi
CisgICAgICAgIC8vICJKYXBhbmVzZVJvbWFqaSIKKyAgICAgICAgLy8gIkp1bmphTW9kZSIKKyAg
ICAgICAgLy8gIkthbmFNb2RlIgorICAgICAgICAvLyAiS2FuamlNb2RlIgorICAgICAgICAvLyAi
S2F0YWthbmEiCisgICAgICAgIC8vICJMYXVuY2hBcHBsaWNhdGlvbjEiCisgICAgICAgIC8vICJM
YXVuY2hBcHBsaWNhdGlvbjIiCisgICAgICAgIC8vICJMYXVuY2hNYWlsIgorCisgICAgICAgIC8v
ICJMZWZ0IgorICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6CisgICAgICAgICAg
ICByZXR1cm4gIkxlZnQiOworCisgICAgICAgIC8vICJNZXRhIgorICAgICAgICAvLyAiTWVkaWFO
ZXh0VHJhY2siCisgICAgICAgIC8vICJNZWRpYVBsYXlQYXVzZSIKKyAgICAgICAgLy8gIk1lZGlh
UHJldmlvdXNUcmFjayIKKyAgICAgICAgLy8gIk1lZGlhU3RvcCIKKworICAgICAgICAvLyAiTW9k
ZUNoYW5nZSIKKyAgICAgICAgY2FzZSBOU01vZGVTd2l0Y2hGdW5jdGlvbktleToKKyAgICAgICAg
ICAgIHJldHVybiAiTW9kZUNoYW5nZSI7CisKKyAgICAgICAgLy8gIk5vbmNvbnZlcnQiCisgICAg
ICAgIC8vICJOdW1Mb2NrIgorCisgICAgICAgIC8vICJQYWdlRG93biIKKyAgICAgICAgY2FzZSBO
U1BhZ2VEb3duRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAg
ICAgICAgLy8gIlBhZ2VVcCIKKyAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OgorICAg
ICAgICAgICAgcmV0dXJuICJQYWdlVXAiOworCisgICAgICAgIC8vICJQYXN0ZSIKKworICAgICAg
ICAvLyAiUGF1c2UiCisgICAgICAgIGNhc2UgTlNQYXVzZUZ1bmN0aW9uS2V5OgorICAgICAgICAg
ICAgcmV0dXJuICJQYXVzZSI7CisKKyAgICAgICAgLy8gIlBsYXkiCisgICAgICAgIC8vICJQcmV2
aW91c0NhbmRpZGF0ZSIKKworICAgICAgICAvLyAiUHJpbnRTY3JlZW4iCisgICAgICAgIGNhc2Ug
TlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVl
biI7CisKKyAgICAgICAgLy8gIlByb2Nlc3MiCisgICAgICAgIC8vICJQcm9wcyIKKworICAgICAg
ICAvLyAiUmlnaHQiCisgICAgICAgIGNhc2UgTlNSaWdodEFycm93RnVuY3Rpb25LZXk6CisgICAg
ICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKworICAgICAgICAvLyAiUm9tYW5DaGFyYWN0ZXJzIgor
CisgICAgICAgIC8vICJTY3JvbGwiCisgICAgICAgIGNhc2UgTlNTY3JvbGxMb2NrRnVuY3Rpb25L
ZXk6CisgICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgIC8vICJTZWxlY3QiCisg
ICAgICAgIGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiU2Vs
ZWN0IjsKKworICAgICAgICAvLyAiU2VsZWN0TWVkaWEiCisgICAgICAgIC8vICJTaGlmdCIKKwor
ICAgICAgICAvLyAiU3RvcCIKKyAgICAgICAgY2FzZSBOU1N0b3BGdW5jdGlvbktleToKKyAgICAg
ICAgICAgIHJldHVybiAiU3RvcCI7CisgICAgICAgIC8vICJVcCIKKyAgICAgICAgY2FzZSBOU1Vw
QXJyb3dGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAvLyAi
VW5kbyIKKyAgICAgICAgY2FzZSBOU1VuZG9GdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVy
biAiVW5kbyI7CisKKyAgICAgICAgLy8gIlZvbHVtZURvd24iCisgICAgICAgIC8vICJWb2x1bWVN
dXRlIgorICAgICAgICAvLyAiVm9sdW1lVXAiCisgICAgICAgIC8vICJXaW4iCisgICAgICAgIC8v
ICJab29tIgorCisgICAgICAgIC8vIE1vcmUgZnVuY3Rpb24ga2V5cywgbm90IGluIHRoZSBrZXkg
aWRlbnRpZmllciBzcGVjaWZpY2F0aW9uLgorICAgICAgICBjYXNlIE5TRjI1RnVuY3Rpb25LZXk6
CisgICAgICAgICAgICByZXR1cm4gIkYyNSI7CisgICAgICAgIGNhc2UgTlNGMjZGdW5jdGlvbktl
eToKKyAgICAgICAgICAgIHJldHVybiAiRjI2IjsKKyAgICAgICAgY2FzZSBOU0YyN0Z1bmN0aW9u
S2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMjciOworICAgICAgICBjYXNlIE5TRjI4RnVuY3Rp
b25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYyOCI7CisgICAgICAgIGNhc2UgTlNGMjlGdW5j
dGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjI5IjsKKyAgICAgICAgY2FzZSBOU0YzMEZ1
bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMzAiOworICAgICAgICBjYXNlIE5TRjMx
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYzMSI7CisgICAgICAgIGNhc2UgTlNG
MzJGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjMyIjsKKyAgICAgICAgY2FzZSBO
U0YzM0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMzMiOworICAgICAgICBjYXNl
IE5TRjM0RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYzNCI7CisgICAgICAgIGNh
c2UgTlNGMzVGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjM1IjsKKworICAgICAg
ICAvLyBUdXJuIDB4N0YgaW50byAweDA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdh
eXMgYmUgMHgwOC4KKyAgICAgICAgY2FzZSAweDdGOgorICAgICAgICAgICAgcmV0dXJuICJVKzAw
MDgiOworICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgor
ICAgICAgICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlUr
MDA3RiI7CisgICAgICAgICAgICAKKyAgICAgICAgLy8gQWx3YXlzIHVzZSAweDA5IGZvciB0YWIg
aW5zdGVhZCBvZiBBcHBLaXQncyBiYWNrdGFiIGNoYXJhY3Rlci4KKyAgICAgICAgY2FzZSBOU0Jh
Y2tUYWJDaGFyYWN0ZXI6CisgICAgICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisKKyAgICAgICAg
Y2FzZSBOU0JlZ2luRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNCcmVha0Z1bmN0aW9uS2V5
OgorICAgICAgICBjYXNlIE5TQ2xlYXJEaXNwbGF5RnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2Ug
TlNEZWxldGVDaGFyRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNEZWxldGVMaW5lRnVuY3Rp
b25LZXk6CisgICAgICAgIGNhc2UgTlNJbnNlcnRDaGFyRnVuY3Rpb25LZXk6CisgICAgICAgIGNh
c2UgTlNJbnNlcnRMaW5lRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNOZXh0RnVuY3Rpb25L
ZXk6CisgICAgICAgIGNhc2UgTlNQcmV2RnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNQcmlu
dEZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TUmVkb0Z1bmN0aW9uS2V5OgorICAgICAgICBj
YXNlIE5TUmVzZXRGdW5jdGlvbktleToKKyAgICAgICAgY2FzZSBOU1N5c1JlcUZ1bmN0aW9uS2V5
OgorICAgICAgICBjYXNlIE5TU3lzdGVtRnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNVc2Vy
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBzb21ldGhp
bmcgb3RoZXIgdGhhbiB0aGUgdmVuZG9yLWFyZWEgVW5pY29kZSB2YWx1ZXMgZm9yIHRoZSBhYm92
ZSBrZXlzLgorICAgICAgICAgICAgLy8gRm9yIG5vdywganVzdCBmYWxsIHRocm91Z2ggdG8gdGhl
IGRlZmF1bHQuCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoIlUrJTA0WCIsIHRvQVNDSUlVcHBlcihjKSk7CisgICAgfQorfQorCitQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChXZWJFdmVudCAqZXZlbnQpCisgICAg
OiBtX3R5cGUoZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleVVwID8gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpLZXlVcCA6IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICAsIG1fdGV4
dChldmVudC5jaGFyYWN0ZXJzKQorICAgICwgbV91bm1vZGlmaWVkVGV4dChldmVudC5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMpCisgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmll
ckZvcktleUV2ZW50KGV2ZW50KSkKKyAgICAsIG1fYXV0b1JlcGVhdChldmVudC5pc0tleVJlcGVh
dGluZykKKyAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKGV2ZW50LmtleUNvZGUpCisgICAg
LCBtX2lzS2V5cGFkKGZhbHNlKSAvLyBpUGhvbmUgZG9lcyBub3QgZGlzdGluZ3Vpc2ggdGhlIG51
bXBhZCA8cmRhcjovL3Byb2JsZW0vNzE5MDgzNT4KKyAgICAsIG1fc2hpZnRLZXkoZXZlbnQubW9k
aWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tTaGlmdCkKKyAgICAsIG1fY3RybEtleShldmVu
dC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2wpCisgICAgLCBtX2FsdEtl
eShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSkKKyAgICAs
IG1fbWV0YUtleShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQp
CisgICAgLCBtX0V2ZW50KGV2ZW50KQoreworICAgIEFTU0VSVChldmVudC50eXBlID09IFdlYkV2
ZW50S2V5RG93biB8fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXApOworCisgICAgLy8gQWx3
YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtp
dCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgorICAgIGlmIChtX3dpbmRvd3NWaXJ0
dWFsS2V5Q29kZSA9PSAnXHInKSB7CisgICAgICAgIG1fdGV4dCA9ICJcciI7CisgICAgICAgIG1f
dW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgIH0KKworICAgIC8vIFRoZSBhZGp1c3RtZW50cyBi
ZWxvdyBhcmUgb25seSBuZWVkZWQgaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBtb2RlLCBidXQg
d2UgY2Fubm90IHRlbGwgd2hhdCBtb2RlIHdlIGFyZSBpbiBmcm9tIGhlcmUuCisKKyAgICAvLyBU
dXJuIDB4N0YgaW50byA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdheXMgYmUgOC4K
KyAgICBpZiAobV90ZXh0ID09ICJceDdGIikKKyAgICAgICAgbV90ZXh0ID0gIlx4OCI7CisgICAg
aWYgKG1fdW5tb2RpZmllZFRleHQgPT0gIlx4N0YiKQorICAgICAgICBtX3VubW9kaWZpZWRUZXh0
ID0gIlx4OCI7CisgICAgLy8gQWx3YXlzIHVzZSA5IGZvciB0YWIgLS0gd2UgZG9uJ3Qgd2FudCB0
byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgorICAgIGlm
IChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSA5KSB7CisgICAgICAgIG1fdGV4dCA9ICJceDki
OworICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OSI7CisgICAgfQorfQorCit2b2lkIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUgdHlwZSwg
Ym9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQoreworICAgIC8vIENhbiBvbmx5IGNoYW5n
ZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sgaW5m
b3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgorICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5
RG93bik7CisgICAgQVNTRVJUKHR5cGUgPT0gUmF3S2V5RG93biB8fCB0eXBlID09IENoYXIpOwor
ICAgIG1fdHlwZSA9IHR5cGU7CisgICAgaWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICAgICAg
bV90ZXh0ID0gU3RyaW5nKCk7CisgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2tleUlkZW50aWZpZXIgPSBTdHJpbmcoKTsKKyAgICAg
ICAgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSAwOworICAgICAgICBpZiAobV90ZXh0Lmxlbmd0
aCgpID09IDEgJiYgKG1fdGV4dFswVV0gPj0gMHhGNzAwICYmIG1fdGV4dFswVV0gPD0gMHhGN0ZG
KSkgeworICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIE5TRXZlbnRzLmgsIE9wZW5TdGVwIHJl
c2VydmVzIHRoZSByYW5nZSAweEY3MDAtMHhGOEZGIGZvciBmdW5jdGlvbiBrZXlzLiBIb3dldmVy
LCBzb21lIGFjdHVhbCBwcml2YXRlIHVzZSBjaGFyYWN0ZXJzCisgICAgICAgICAgICAvLyBoYXBw
ZW4gdG8gYmUgaW4gdGhpcyByYW5nZSwgZS5nLiB0aGUgQXBwbGUgbG9nbyAoT3B0aW9uK1NoaWZ0
K0spLgorICAgICAgICAgICAgLy8gMHhGN0ZGIGlzIGFuIGFyYml0cmFyeSBjdXQtb2ZmLgorICAg
ICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0
ID0gU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK30K
</data>
<flag name="review"
          id="33599"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50450</attachid>
            <date>2010-03-10 16:03:17 -0800</date>
            <delta_ts>2010-03-22 14:15:13 -0700</delta_ts>
            <desc>[PATCH] Part 2 - Move Mac Code into Shared Location (no change to code itself yet)</desc>
            <filename>patch-2</filename>
            <type>text/plain</type>
            <size>56583</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzMxNTc2My4uMDE3Y2U3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTUsNiArNSwyMyBAQAogICAgICAgICBVcHN0cmVhbSBQYXJ0IG9m
IHRoZSBpUGhvbmUgUGxhdGZvcm0gc2hhcmluZyBjb2RlIHdpdGggdGhlIE1hYyBQbGF0Zm9ybQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NzAKIAor
ICAgICAgICBQYXJ0IDIgLSBObyBjaGFuZ2VzIG90aGVyIHRoYW4gbW92aW5nIGNvZGUgYXJvdW5k
LgorICAgICAgICBDb3BpZWQgS2V5RXZlbnQgZnVuY3Rpb24gZnJvbSBwbGF0Zm9ybS9tYWMgdG8g
YSBwbGF0Zm9ybS9jb2NvYSBzaGFyZWQgZGlyZWN0b3J5LgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBuZXcgZmlsZXMKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL0tleUV2ZW50Q29jb2EubW06IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0tl
eUV2ZW50TWFjLm1tLgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRlbnRpZmllckZvcktleUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQpOiBJbmNsdWRl
IHRoZSBzaGFyZWQgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW06
IAorCisyMDEwLTAzLTEwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBzdHJlYW0g
UGFydCBvZiB0aGUgaVBob25lIFBsYXRmb3JtIHNoYXJpbmcgY29kZSB3aXRoIHRoZSBNYWMgUGxh
dGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1
ODcwCisKICAgICAgICAgUGFydCAxIC0gVXBzdHJlYW1lZCB1bnNoYXJlZCBpUGhvbmUgQ29kZS4K
IAogICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZTogQWRkZWQuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmNjIyNzQuLjY1OGViZWUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDgzLDYgKzI0ODMsOCBAQAog
CQk5RjcyMzA1MTExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNzIzMDRFMTExODRCNDEwMEFE
MDEyNiAvKiBTY3JpcHRQcm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVu
dEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87
IH07CiAJCUExN0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYy
QTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKKwkJQTVDOTc0RDEx
MTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlF
dmVudENvY29hLmggKi87IH07CisJCUE1Qzk3NEQyMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVu
dENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi87IH07CiAJCUE3
MTg3NjBFMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc2MEQwQjJBMTIwMTAwQTE2RUNFIC8q
IERyYWdBY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTcxODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYw
QjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQlBNzM1MkMx
OTBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczNTJDMTcwQjFCQjg5RDAwQTk4NkQwIC8q
IFJlbmRlclNWR0Jsb2NrLmNwcCAqLzsgfTsKQEAgLTc4NjksNiArNzg3MSw4IEBACiAJCTlGNzIz
MDRFMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9y
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEtleUV2ZW50Q29jb2EuaDsgcGF0aCA9IGNvY29hL0tleUV2
ZW50Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVDOTc0RDAxMTQ4NUZG
MTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBLZXlFdmVudENvY29hLm1tOyBwYXRoID0gY29jb2EvS2V5RXZlbnRDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc2MEQwQjJBMTIwMTAwQTE2
RUNFIC8qIERyYWdBY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERy
YWdBY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MTg3ODhGMEIyRDA0
QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERyYWdDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNzM1MkMxNzBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0Jsb2Nr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTUwLDYgKzEzMTU0LDE1IEBA
CiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUE1Qzk3NENFMTE0
ODVGREEwMDY2RjJBQiAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2Eu
aCAqLywKKwkJCQlBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSAq
LywKKwkJCSk7CisJCQluYW1lID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQlBNzVFOEI3RjBFMURFMkIwMDA3RjI0ODEgLyogZmlsdGVycyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNTI1Miw2ICsxNTI2NSw3IEBACiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk0OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9u
ICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKKwkJCQlBNUM5NzRD
RTExNDg1RkRBMDA2NkYyQUIgLyogY29jb2EgKi8sCiAJCQkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJD
RTBFIC8qIGdyYXBoaWNzICovLAogCQkJCTY1ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBtYWMg
Ki8sCiAJCQkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCkBAIC0xODY2OCw2
ICsxODY4Miw3IEBACiAJCQkJQkM1M0RBMkUxMTQzMTIxRTAwMEQ4MTdFIC8qIERPTVdyYXBwZXJX
b3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0RBNjAxMTQzMTQxQTAwMEQ4MTdFIC8qIERP
TU9iamVjdEhhc2hUYWJsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0RBQzIxMTQzMkVF
RTAwMEQ4MTdFIC8qIEpTRGVidWdXcmFwcGVyU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUM5
NzREMTExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yMDg2Nyw2ICsyMDg4Miw3IEBACiAJCQkJQkM1M0RBNjIxMTQzMTRCRDAwMEQ4MTdFIC8qIERP
TU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUzREFDNTExNDMy
RkQ5MDAwRDgxN0UgLyogSlNEZWJ1Z1dyYXBwZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1M0RBQzcxMTQzMzA2NDAwMEQ4MTdFIC8qIEpTRE9NV3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBNUM5NzREMjExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENv
Y29hLmggYi9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTFkNjYwCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEtleUV2ZW50Q29j
b2FfaAorI2RlZmluZSBLZXlFdmVudENvY29hX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTdHJpbmc7CisKK1N0cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTlNFdmVudCog
ZXZlbnQpOworaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpOwor
Cit9CisKKyNlbmRpZiAvLyAhS2V5RXZlbnRDb2NvYV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tl
eUV2ZW50Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBlNWZl
OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2Nv
YS5tbQpAQCAtMCwwICsxLDcyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5oIgorCisjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgorI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcg
a2V5SWRlbnRpZmllckZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChbZXZl
bnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpIAorICAgICAgICBzd2l0Y2ggKFtldmVudCBrZXlD
b2RlXSkgeworICAgICAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29tbWFuZAorICAgICAgICAg
ICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisgICAgICAgICAgICAgICAgcmV0dXJuICJNZXRh
IjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCisg
ICAgICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0CisgICAgICAgICAgICBjYXNlIDYwOiAvLyBS
aWdodCBTaGlmdAorICAgICAgICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKKyAgICAgICAgICAgIGNhc2Ug
NjE6IC8vIFJpZ2h0IEFsdAorICAgICAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAorICAgICAgICAgICAg
Y2FzZSA2MjogLy8gUmlnaHQgQ3RybAorICAgICAgICAgICAgICAgIHJldHVybiAiQ29udHJvbCI7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAg
ICAgfQorICAgIAorICAgIE5TU3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyc107CisgICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkgeworICAgICAgICBMT0coRXZlbnRz
LCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZl
bnQ6ICV1IiwgW3MgbGVuZ3RoXSk7CisgICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKKyAg
ICB9CisgICAgdW5pY2hhciBjID0gW3MgY2hhcmFjdGVyQXRJbmRleDowXTsKKyAgICBzd2l0Y2gg
KGMpIHsKKyAgICAgICAgLy8gRWFjaCBpZGVudGlmaWVyIGxpc3RlZCBpbiB0aGUgRE9NIHNwZWMg
aXMgbGlzdGVkIGhlcmUuCisgICAgICAgIC8vIE1hbnkgYXJlIHNpbXBseSBjb21tZW50ZWQgb3V0
IHNpbmNlIHRoZXkgZG8gbm90IGFwcGVhciBvbiBzdGFuZGFyZCBNYWNpbnRvc2gga2V5Ym9hcmRz
CisgICAgICAgIC8vIG9yIGFyZSBvbiBhIGtleSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3Bv
bmRpbmcgY2hhcmFjdGVyLgorCisgICAgICAgIC8vICJBY2NlcHQiCisgICAgICAgIC8vICJBbGxD
YW5kaWRhdGVzIgorCisgICAgICAgIC8vICJBbHQiCisgICAgICAgIGNhc2UgTlNNZW51RnVuY3Rp
b25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkFsdCI7CisKKyAgICAgICAgLy8gIkFwcHMiCisg
ICAgICAgIC8vICJCcm93c2VyQmFjayIKKyAgICAgICAgLy8gIkJyb3dzZXJGb3J3YXJkIgorICAg
ICAgICAvLyAiQnJvd3NlckhvbWUiCisgICAgICAgIC8vICJCcm93c2VyUmVmcmVzaCIKKyAgICAg
ICAgLy8gIkJyb3dzZXJTZWFyY2giCisgICAgICAgIC8vICJCcm93c2VyU3RvcCIKKyAgICAgICAg
Ly8gIkNhcHNMb2NrIgorCisgICAgICAgIC8vICJDbGVhciIKKyAgICAgICAgY2FzZSBOU0NsZWFy
TGluZUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7CisKKyAgICAgICAg
Ly8gIkNvZGVJbnB1dCIKKyAgICAgICAgLy8gIkNvbXBvc2UiCisgICAgICAgIC8vICJDb250cm9s
IgorICAgICAgICAvLyAiQ3JzZWwiCisgICAgICAgIC8vICJDb252ZXJ0IgorICAgICAgICAvLyAi
Q29weSIKKyAgICAgICAgLy8gIkN1dCIKKworICAgICAgICAvLyAiRG93biIKKyAgICAgICAgY2Fz
ZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJEb3duIjsKKyAg
ICAgICAgLy8gIkVuZCIKKyAgICAgICAgY2FzZSBOU0VuZEZ1bmN0aW9uS2V5OgorICAgICAgICAg
ICAgcmV0dXJuICJFbmQiOworICAgICAgICAvLyAiRW50ZXIiCisgICAgICAgIGNhc2UgMHgzOiBj
YXNlIDB4QTogY2FzZSAweEQ6IC8vIE1hY2ludG9zaCBjYWxscyB0aGUgb25lIG9uIHRoZSBtYWlu
IGtleWJvYXJkIFJldHVybiwgYnV0IFdpbmRvd3MgY2FsbHMgaXQgRW50ZXIsIHNvIHdlJ2xsIGRv
IHRoZSBzYW1lIGZvciB0aGUgRE9NCisgICAgICAgICAgICByZXR1cm4gIkVudGVyIjsKKworICAg
ICAgICAvLyAiRXJhc2VFb2YiCisKKyAgICAgICAgLy8gIkV4ZWN1dGUiCisgICAgICAgIGNhc2Ug
TlNFeGVjdXRlRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworCisg
ICAgICAgIC8vICJFeHNlbCIKKworICAgICAgICAvLyAiRjEiCisgICAgICAgIGNhc2UgTlNGMUZ1
bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAgIC8vICJGMiIKKyAg
ICAgICAgY2FzZSBOU0YyRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAg
ICAgICAgLy8gIkYzIgorICAgICAgICBjYXNlIE5TRjNGdW5jdGlvbktleToKKyAgICAgICAgICAg
IHJldHVybiAiRjMiOworICAgICAgICAvLyAiRjQiCisgICAgICAgIGNhc2UgTlNGNEZ1bmN0aW9u
S2V5OgorICAgICAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIC8vICJGNSIKKyAgICAgICAg
Y2FzZSBOU0Y1RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAg
Ly8gIkY2IgorICAgICAgICBjYXNlIE5TRjZGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICAvLyAiRjciCisgICAgICAgIGNhc2UgTlNGN0Z1bmN0aW9uS2V5Ogor
ICAgICAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIC8vICJGOCIKKyAgICAgICAgY2FzZSBO
U0Y4RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgLy8gIkY5
IgorICAgICAgICBjYXNlIE5TRjlGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjki
OworICAgICAgICAvLyAiRjEwIgorICAgICAgICBjYXNlIE5TRjEwRnVuY3Rpb25LZXk6CisgICAg
ICAgICAgICByZXR1cm4gIkYxMCI7CisgICAgICAgIC8vICJGMTEiCisgICAgICAgIGNhc2UgTlNG
MTFGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgLy8gIkYx
MiIKKyAgICAgICAgY2FzZSBOU0YxMkZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJG
MTIiOworICAgICAgICAvLyAiRjEzIgorICAgICAgICBjYXNlIE5TRjEzRnVuY3Rpb25LZXk6Cisg
ICAgICAgICAgICByZXR1cm4gIkYxMyI7CisgICAgICAgIC8vICJGMTQiCisgICAgICAgIGNhc2Ug
TlNGMTRGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgLy8g
IkYxNSIKKyAgICAgICAgY2FzZSBOU0YxNUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJu
ICJGMTUiOworICAgICAgICAvLyAiRjE2IgorICAgICAgICBjYXNlIE5TRjE2RnVuY3Rpb25LZXk6
CisgICAgICAgICAgICByZXR1cm4gIkYxNiI7CisgICAgICAgIC8vICJGMTciCisgICAgICAgIGNh
c2UgTlNGMTdGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAg
Ly8gIkYxOCIKKyAgICAgICAgY2FzZSBOU0YxOEZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0
dXJuICJGMTgiOworICAgICAgICAvLyAiRjE5IgorICAgICAgICBjYXNlIE5TRjE5RnVuY3Rpb25L
ZXk6CisgICAgICAgICAgICByZXR1cm4gIkYxOSI7CisgICAgICAgIC8vICJGMjAiCisgICAgICAg
IGNhc2UgTlNGMjBGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAg
ICAgLy8gIkYyMSIKKyAgICAgICAgY2FzZSBOU0YyMUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAg
cmV0dXJuICJGMjEiOworICAgICAgICAvLyAiRjIyIgorICAgICAgICBjYXNlIE5TRjIyRnVuY3Rp
b25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYyMiI7CisgICAgICAgIC8vICJGMjMiCisgICAg
ICAgIGNhc2UgTlNGMjNGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAg
ICAgICAgLy8gIkYyNCIKKyAgICAgICAgY2FzZSBOU0YyNEZ1bmN0aW9uS2V5OgorICAgICAgICAg
ICAgcmV0dXJuICJGMjQiOworCisgICAgICAgIC8vICJGaW5hbE1vZGUiCisKKyAgICAgICAgLy8g
IkZpbmQiCisgICAgICAgIGNhc2UgTlNGaW5kRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1
cm4gIkZpbmQiOworCisgICAgICAgIC8vICJGdWxsV2lkdGgiCisgICAgICAgIC8vICJIYWxmV2lk
dGgiCisgICAgICAgIC8vICJIYW5ndWxNb2RlIgorICAgICAgICAvLyAiSGFuamFNb2RlIgorCisg
ICAgICAgIC8vICJIZWxwIgorICAgICAgICBjYXNlIE5TSGVscEZ1bmN0aW9uS2V5OgorICAgICAg
ICAgICAgcmV0dXJuICJIZWxwIjsKKworICAgICAgICAvLyAiSGlyYWdhbmEiCisKKyAgICAgICAg
Ly8gIkhvbWUiCisgICAgICAgIGNhc2UgTlNIb21lRnVuY3Rpb25LZXk6CisgICAgICAgICAgICBy
ZXR1cm4gIkhvbWUiOworICAgICAgICAvLyAiSW5zZXJ0IgorICAgICAgICBjYXNlIE5TSW5zZXJ0
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkluc2VydCI7CisKKyAgICAgICAgLy8g
IkphcGFuZXNlSGlyYWdhbmEiCisgICAgICAgIC8vICJKYXBhbmVzZUthdGFrYW5hIgorICAgICAg
ICAvLyAiSmFwYW5lc2VSb21hamkiCisgICAgICAgIC8vICJKdW5qYU1vZGUiCisgICAgICAgIC8v
ICJLYW5hTW9kZSIKKyAgICAgICAgLy8gIkthbmppTW9kZSIKKyAgICAgICAgLy8gIkthdGFrYW5h
IgorICAgICAgICAvLyAiTGF1bmNoQXBwbGljYXRpb24xIgorICAgICAgICAvLyAiTGF1bmNoQXBw
bGljYXRpb24yIgorICAgICAgICAvLyAiTGF1bmNoTWFpbCIKKworICAgICAgICAvLyAiTGVmdCIK
KyAgICAgICAgY2FzZSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0IjsKKworICAgICAgICAvLyAiTWV0YSIKKyAgICAgICAgLy8gIk1lZGlhTmV4dFRyYWNr
IgorICAgICAgICAvLyAiTWVkaWFQbGF5UGF1c2UiCisgICAgICAgIC8vICJNZWRpYVByZXZpb3Vz
VHJhY2siCisgICAgICAgIC8vICJNZWRpYVN0b3AiCisKKyAgICAgICAgLy8gIk1vZGVDaGFuZ2Ui
CisgICAgICAgIGNhc2UgTlNNb2RlU3dpdGNoRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1
cm4gIk1vZGVDaGFuZ2UiOworCisgICAgICAgIC8vICJOb25jb252ZXJ0IgorICAgICAgICAvLyAi
TnVtTG9jayIKKworICAgICAgICAvLyAiUGFnZURvd24iCisgICAgICAgIGNhc2UgTlNQYWdlRG93
bkZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biI7CisgICAgICAgIC8v
ICJQYWdlVXAiCisgICAgICAgIGNhc2UgTlNQYWdlVXBGdW5jdGlvbktleToKKyAgICAgICAgICAg
IHJldHVybiAiUGFnZVVwIjsKKworICAgICAgICAvLyAiUGFzdGUiCisKKyAgICAgICAgLy8gIlBh
dXNlIgorICAgICAgICBjYXNlIE5TUGF1c2VGdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworCisgICAgICAgIC8vICJQbGF5IgorICAgICAgICAvLyAiUHJldmlvdXNDYW5k
aWRhdGUiCisKKyAgICAgICAgLy8gIlByaW50U2NyZWVuIgorICAgICAgICBjYXNlIE5TUHJpbnRT
Y3JlZW5GdW5jdGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworCisg
ICAgICAgIC8vICJQcm9jZXNzIgorICAgICAgICAvLyAiUHJvcHMiCisKKyAgICAgICAgLy8gIlJp
Z2h0IgorICAgICAgICBjYXNlIE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAg
cmV0dXJuICJSaWdodCI7CisKKyAgICAgICAgLy8gIlJvbWFuQ2hhcmFjdGVycyIKKworICAgICAg
ICAvLyAiU2Nyb2xsIgorICAgICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1bmN0aW9uS2V5OgorICAg
ICAgICAgICAgcmV0dXJuICJTY3JvbGwiOworICAgICAgICAvLyAiU2VsZWN0IgorICAgICAgICBj
YXNlIE5TU2VsZWN0RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisK
KyAgICAgICAgLy8gIlNlbGVjdE1lZGlhIgorICAgICAgICAvLyAiU2hpZnQiCisKKyAgICAgICAg
Ly8gIlN0b3AiCisgICAgICAgIGNhc2UgTlNTdG9wRnVuY3Rpb25LZXk6CisgICAgICAgICAgICBy
ZXR1cm4gIlN0b3AiOworICAgICAgICAvLyAiVXAiCisgICAgICAgIGNhc2UgTlNVcEFycm93RnVu
Y3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlVwIjsKKyAgICAgICAgLy8gIlVuZG8iCisg
ICAgICAgIGNhc2UgTlNVbmRvRnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIlVuZG8i
OworCisgICAgICAgIC8vICJWb2x1bWVEb3duIgorICAgICAgICAvLyAiVm9sdW1lTXV0ZSIKKyAg
ICAgICAgLy8gIlZvbHVtZVVwIgorICAgICAgICAvLyAiV2luIgorICAgICAgICAvLyAiWm9vbSIK
KworICAgICAgICAvLyBNb3JlIGZ1bmN0aW9uIGtleXMsIG5vdCBpbiB0aGUga2V5IGlkZW50aWZp
ZXIgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgY2FzZSBOU0YyNUZ1bmN0aW9uS2V5OgorICAgICAg
ICAgICAgcmV0dXJuICJGMjUiOworICAgICAgICBjYXNlIE5TRjI2RnVuY3Rpb25LZXk6CisgICAg
ICAgICAgICByZXR1cm4gIkYyNiI7CisgICAgICAgIGNhc2UgTlNGMjdGdW5jdGlvbktleToKKyAg
ICAgICAgICAgIHJldHVybiAiRjI3IjsKKyAgICAgICAgY2FzZSBOU0YyOEZ1bmN0aW9uS2V5Ogor
ICAgICAgICAgICAgcmV0dXJuICJGMjgiOworICAgICAgICBjYXNlIE5TRjI5RnVuY3Rpb25LZXk6
CisgICAgICAgICAgICByZXR1cm4gIkYyOSI7CisgICAgICAgIGNhc2UgTlNGMzBGdW5jdGlvbktl
eToKKyAgICAgICAgICAgIHJldHVybiAiRjMwIjsKKyAgICAgICAgY2FzZSBOU0YzMUZ1bmN0aW9u
S2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMzEiOworICAgICAgICBjYXNlIE5TRjMyRnVuY3Rp
b25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYzMiI7CisgICAgICAgIGNhc2UgTlNGMzNGdW5j
dGlvbktleToKKyAgICAgICAgICAgIHJldHVybiAiRjMzIjsKKyAgICAgICAgY2FzZSBOU0YzNEZ1
bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJGMzQiOworICAgICAgICBjYXNlIE5TRjM1
RnVuY3Rpb25LZXk6CisgICAgICAgICAgICByZXR1cm4gIkYzNSI7CisKKyAgICAgICAgLy8gVHVy
biAweDdGIGludG8gMHgwOCwgYmVjYXVzZSBiYWNrc3BhY2UgbmVlZHMgdG8gYWx3YXlzIGJlIDB4
MDguCisgICAgICAgIGNhc2UgMHg3RjoKKyAgICAgICAgICAgIHJldHVybiAiVSswMDA4IjsKKyAg
ICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KKyAgICAgICAg
Y2FzZSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OgorICAgICAgICAgICAgcmV0dXJuICJVKzAwN0YiOwor
ICAgICAgICAgICAgCisgICAgICAgIC8vIEFsd2F5cyB1c2UgMHgwOSBmb3IgdGFiIGluc3RlYWQg
b2YgQXBwS2l0J3MgYmFja3RhYiBjaGFyYWN0ZXIuCisgICAgICAgIGNhc2UgTlNCYWNrVGFiQ2hh
cmFjdGVyOgorICAgICAgICAgICAgcmV0dXJuICJVKzAwMDkiOworCisgICAgICAgIGNhc2UgTlNC
ZWdpbkZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TQnJlYWtGdW5jdGlvbktleToKKyAgICAg
ICAgY2FzZSBOU0NsZWFyRGlzcGxheUZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TRGVsZXRl
Q2hhckZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TRGVsZXRlTGluZUZ1bmN0aW9uS2V5Ogor
ICAgICAgICBjYXNlIE5TSW5zZXJ0Q2hhckZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TSW5z
ZXJ0TGluZUZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TTmV4dEZ1bmN0aW9uS2V5OgorICAg
ICAgICBjYXNlIE5TUHJldkZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TUHJpbnRGdW5jdGlv
bktleToKKyAgICAgICAgY2FzZSBOU1JlZG9GdW5jdGlvbktleToKKyAgICAgICAgY2FzZSBOU1Jl
c2V0RnVuY3Rpb25LZXk6CisgICAgICAgIGNhc2UgTlNTeXNSZXFGdW5jdGlvbktleToKKyAgICAg
ICAgY2FzZSBOU1N5c3RlbUZ1bmN0aW9uS2V5OgorICAgICAgICBjYXNlIE5TVXNlckZ1bmN0aW9u
S2V5OgorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2Ugc29tZXRoaW5nIG90aGVy
IHRoYW4gdGhlIHZlbmRvci1hcmVhIFVuaWNvZGUgdmFsdWVzIGZvciB0aGUgYWJvdmUga2V5cy4K
KyAgICAgICAgICAgIC8vIEZvciBub3csIGp1c3QgZmFsbCB0aHJvdWdoIHRvIHRoZSBkZWZhdWx0
LgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJV
KyUwNFgiLCB0b0FTQ0lJVXBwZXIoYykpOworICAgIH0KK30KKworaW50IHdpbmRvd3NLZXlDb2Rl
Rm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgc3dpdGNoIChbZXZlbnQga2V5Q29k
ZV0pIHsKKyAgICAgICAgLy8gVktfVEFCICgwOSkgVEFCIGtleQorICAgICAgICBjYXNlIDQ4OiBy
ZXR1cm4gMHgwOTsKKworICAgICAgICAvLyBWS19BUFBTICg1RCkgUmlnaHQgd2luZG93cy9tZXRh
IGtleQorICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCisgICAgICAgICAgICByZXR1
cm4gMHg1RDsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBWS19MV0lOICg1QikgTGVmdCB3aW5k
b3dzL21ldGEga2V5CisgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAorICAgICAgICAg
ICAgcmV0dXJuIDB4NUI7CisgICAgICAgICAgICAKKyAgICAgICAgLy8gVktfQ0FQSVRBTCAoMTQp
IGNhcHMgbG9ja3Mga2V5CisgICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCisgICAgICAgICAg
ICByZXR1cm4gMHgxNDsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBWS19TSElGVCAoMTApIGVp
dGhlciBzaGlmdCBrZXkKKyAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAorICAgICAgICBj
YXNlIDYwOiAvLyBSaWdodCBTaGlmdAorICAgICAgICAgICAgcmV0dXJuIDB4MTA7CisgICAgICAg
ICAgICAKKyAgICAgICAgLy8gVktfTUVOVSAoMTIpIGVpdGhlciBhbHQga2V5CisgICAgICAgIGNh
c2UgNTg6IC8vIExlZnQgQWx0CisgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAorICAgICAg
ICAgICAgcmV0dXJuIDB4MTI7CisgICAgICAgICAgICAKKyAgICAgICAgLy8gVktfQ09OVFJPTCAo
MTEpIGVpdGhlciBjdHJsIGtleQorICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKKyAgICAg
ICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAorICAgICAgICAgICAgcmV0dXJuIDB4MTE7CisgICAg
ICAgICAgICAKKyAgICAgICAgLy8gVktfQ0xFQVIgKDBDKSBDTEVBUiBrZXkKKyAgICAgICAgY2Fz
ZSA3MTogcmV0dXJuIDB4MEM7CisKKyAgICAgICAgLy8gVktfTlVNUEFEMCAoNjApIE51bWVyaWMg
a2V5cGFkIDAga2V5CisgICAgICAgIGNhc2UgODI6IHJldHVybiAweDYwOworICAgICAgICAvLyBW
S19OVU1QQUQxICg2MSkgTnVtZXJpYyBrZXlwYWQgMSBrZXkKKyAgICAgICAgY2FzZSA4MzogcmV0
dXJuIDB4NjE7CisgICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmljIGtleXBhZCAyIGtl
eQorICAgICAgICBjYXNlIDg0OiByZXR1cm4gMHg2MjsKKyAgICAgICAgLy8gVktfTlVNUEFEMyAo
NjMpIE51bWVyaWMga2V5cGFkIDMga2V5CisgICAgICAgIGNhc2UgODU6IHJldHVybiAweDYzOwor
ICAgICAgICAvLyBWS19OVU1QQUQ0ICg2NCkgTnVtZXJpYyBrZXlwYWQgNCBrZXkKKyAgICAgICAg
Y2FzZSA4NjogcmV0dXJuIDB4NjQ7CisgICAgICAgIC8vIFZLX05VTVBBRDUgKDY1KSBOdW1lcmlj
IGtleXBhZCA1IGtleQorICAgICAgICBjYXNlIDg3OiByZXR1cm4gMHg2NTsKKyAgICAgICAgLy8g
VktfTlVNUEFENiAoNjYpIE51bWVyaWMga2V5cGFkIDYga2V5CisgICAgICAgIGNhc2UgODg6IHJl
dHVybiAweDY2OworICAgICAgICAvLyBWS19OVU1QQUQ3ICg2NykgTnVtZXJpYyBrZXlwYWQgNyBr
ZXkKKyAgICAgICAgY2FzZSA4OTogcmV0dXJuIDB4Njc7CisgICAgICAgIC8vIFZLX05VTVBBRDgg
KDY4KSBOdW1lcmljIGtleXBhZCA4IGtleQorICAgICAgICBjYXNlIDkxOiByZXR1cm4gMHg2ODsK
KyAgICAgICAgLy8gVktfTlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5CisgICAgICAg
IGNhc2UgOTI6IHJldHVybiAweDY5OworICAgICAgICAvLyBWS19NVUxUSVBMWSAoNkEpIE11bHRp
cGx5IGtleQorICAgICAgICBjYXNlIDY3OiByZXR1cm4gMHg2QTsKKyAgICAgICAgLy8gVktfQURE
ICg2QikgQWRkIGtleQorICAgICAgICBjYXNlIDY5OiByZXR1cm4gMHg2QjsKKworICAgICAgICAv
LyBWS19TVUJUUkFDVCAoNkQpIFN1YnRyYWN0IGtleQorICAgICAgICBjYXNlIDc4OiByZXR1cm4g
MHg2RDsKKyAgICAgICAgLy8gVktfREVDSU1BTCAoNkUpIERlY2ltYWwga2V5CisgICAgICAgIGNh
c2UgNjU6IHJldHVybiAweDZFOworICAgICAgICAvLyBWS19ESVZJREUgKDZGKSBEaXZpZGUga2V5
CisgICAgICAgIGNhc2UgNzU6IHJldHVybiAweDZGOworICAgICB9CisKKyAgICBOU1N0cmluZyog
cyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOworICAgIGlmIChbcyBsZW5n
dGhdICE9IDEpCisgICAgICAgIHJldHVybiAwOworCisgICAgc3dpdGNoIChbcyBjaGFyYWN0ZXJB
dEluZGV4OjBdKSB7CisgICAgICAgIC8vIFZLX0xCVVRUT04gKDAxKSBMZWZ0IG1vdXNlIGJ1dHRv
bgorICAgICAgICAvLyBWS19SQlVUVE9OICgwMikgUmlnaHQgbW91c2UgYnV0dG9uCisgICAgICAg
IC8vIFZLX0NBTkNFTCAoMDMpIENvbnRyb2wtYnJlYWsgcHJvY2Vzc2luZworICAgICAgICAvLyBW
S19NQlVUVE9OICgwNCkgTWlkZGxlIG1vdXNlIGJ1dHRvbiAodGhyZWUtYnV0dG9uIG1vdXNlKQor
ICAgICAgICAvLyBWS19YQlVUVE9OMSAoMDUpCisgICAgICAgIC8vIFZLX1hCVVRUT04yICgwNikK
KworICAgICAgICAvLyBWS19CQUNLICgwOCkgQkFDS1NQQUNFIGtleQorICAgICAgICBjYXNlIDg6
IGNhc2UgMHg3RjogcmV0dXJuIDB4MDg7CisgICAgICAgIC8vIFZLX1RBQiAoMDkpIFRBQiBrZXkK
KyAgICAgICAgY2FzZSA5OiByZXR1cm4gMHgwOTsKKworICAgICAgICAvLyBWS19DTEVBUiAoMEMp
IENMRUFSIGtleQorICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFib3ZlCisKKyAgICAg
ICAgLy8gVktfUkVUVVJOICgwRCkKKyAgICAgICAgY2FzZSAweEQ6IGNhc2UgMzogcmV0dXJuIDB4
MEQ7CisKKyAgICAgICAgLy8gVktfU0hJRlQgKDEwKSBTSElGVCBrZXkKKyAgICAgICAgLy8gVktf
Q09OVFJPTCAoMTEpIENUUkwga2V5CisgICAgICAgIC8vIFZLX01FTlUgKDEyKSBBTFQga2V5CisK
KyAgICAgICAgLy8gVktfUEFVU0UgKDEzKSBQQVVTRSBrZXkKKyAgICAgICAgY2FzZSBOU1BhdXNl
RnVuY3Rpb25LZXk6IHJldHVybiAweDEzOworCisgICAgICAgIC8vIFZLX0NBUElUQUwgKDE0KSBD
QVBTIExPQ0sga2V5CisgICAgICAgIC8vIFZLX0tBTkEgKDE1KSBJbnB1dCBNZXRob2QgRWRpdG9y
IChJTUUpIEthbmEgbW9kZQorICAgICAgICAvLyBWS19IQU5HVUVMICgxNSkgSU1FIEhhbmd1ZWwg
bW9kZSAobWFpbnRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eTsgdXNlIFZLX0hBTkdVTCkKKyAgICAg
ICAgLy8gVktfSEFOR1VMICgxNSkgSU1FIEhhbmd1bCBtb2RlCisgICAgICAgIC8vIFZLX0pVTkpB
ICgxNykgSU1FIEp1bmphIG1vZGUKKyAgICAgICAgLy8gVktfRklOQUwgKDE4KSBJTUUgZmluYWwg
bW9kZQorICAgICAgICAvLyBWS19IQU5KQSAoMTkpIElNRSBIYW5qYSBtb2RlCisgICAgICAgIC8v
IFZLX0tBTkpJICgxOSkgSU1FIEthbmppIG1vZGUKKworICAgICAgICAvLyBWS19FU0NBUEUgKDFC
KSBFU0Mga2V5CisgICAgICAgIGNhc2UgMHgxQjogcmV0dXJuIDB4MUI7CisKKyAgICAgICAgLy8g
VktfQ09OVkVSVCAoMUMpIElNRSBjb252ZXJ0CisgICAgICAgIC8vIFZLX05PTkNPTlZFUlQgKDFE
KSBJTUUgbm9uY29udmVydAorICAgICAgICAvLyBWS19BQ0NFUFQgKDFFKSBJTUUgYWNjZXB0Cisg
ICAgICAgIC8vIFZLX01PREVDSEFOR0UgKDFGKSBJTUUgbW9kZSBjaGFuZ2UgcmVxdWVzdAorCisg
ICAgICAgIC8vIFZLX1NQQUNFICgyMCkgU1BBQ0VCQVIKKyAgICAgICAgY2FzZSAnICc6IHJldHVy
biAweDIwOworICAgICAgICAvLyBWS19QUklPUiAoMjEpIFBBR0UgVVAga2V5CisgICAgICAgIGNh
c2UgTlNQYWdlVXBGdW5jdGlvbktleTogcmV0dXJuIDB4MjE7CisgICAgICAgIC8vIFZLX05FWFQg
KDIyKSBQQUdFIERPV04ga2V5CisgICAgICAgIGNhc2UgTlNQYWdlRG93bkZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHgyMjsKKyAgICAgICAgLy8gVktfRU5EICgyMykgRU5EIGtleQorICAgICAgICBjYXNl
IE5TRW5kRnVuY3Rpb25LZXk6IHJldHVybiAweDIzOworICAgICAgICAvLyBWS19IT01FICgyNCkg
SE9NRSBrZXkKKyAgICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleTogcmV0dXJuIDB4MjQ7Cisg
ICAgICAgIC8vIFZLX0xFRlQgKDI1KSBMRUZUIEFSUk9XIGtleQorICAgICAgICBjYXNlIE5TTGVm
dEFycm93RnVuY3Rpb25LZXk6IHJldHVybiAweDI1OworICAgICAgICAvLyBWS19VUCAoMjYpIFVQ
IEFSUk9XIGtleQorICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgy
NjsKKyAgICAgICAgLy8gVktfUklHSFQgKDI3KSBSSUdIVCBBUlJPVyBrZXkKKyAgICAgICAgY2Fz
ZSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTogcmV0dXJuIDB4Mjc7CisgICAgICAgIC8vIFZLX0RP
V04gKDI4KSBET1dOIEFSUk9XIGtleQorICAgICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25L
ZXk6IHJldHVybiAweDI4OworICAgICAgICAvLyBWS19TRUxFQ1QgKDI5KSBTRUxFQ1Qga2V5Cisg
ICAgICAgIGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleTogcmV0dXJuIDB4Mjk7CisgICAgICAgIC8v
IFZLX1BSSU5UICgyQSkgUFJJTlQga2V5CisgICAgICAgIGNhc2UgTlNQcmludEZ1bmN0aW9uS2V5
OiByZXR1cm4gMHgyQTsKKyAgICAgICAgLy8gVktfRVhFQ1VURSAoMkIpIEVYRUNVVEUga2V5Cisg
ICAgICAgIGNhc2UgTlNFeGVjdXRlRnVuY3Rpb25LZXk6IHJldHVybiAweDJCOworICAgICAgICAv
LyBWS19TTkFQU0hPVCAoMkMpIFBSSU5UIFNDUkVFTiBrZXkKKyAgICAgICAgY2FzZSBOU1ByaW50
U2NyZWVuRnVuY3Rpb25LZXk6IHJldHVybiAweDJDOworICAgICAgICAvLyBWS19JTlNFUlQgKDJE
KSBJTlMga2V5CisgICAgICAgIGNhc2UgTlNJbnNlcnRGdW5jdGlvbktleTogY2FzZSBOU0hlbHBG
dW5jdGlvbktleTogcmV0dXJuIDB4MkQ7CisgICAgICAgIC8vIFZLX0RFTEVURSAoMkUpIERFTCBr
ZXkKKyAgICAgICAgY2FzZSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyRTsKKworICAg
ICAgICAvLyBWS19IRUxQICgyRikgSEVMUCBrZXkKKworICAgICAgICAvLyAgKDMwKSAwIGtleQor
ICAgICAgICBjYXNlICcwJzogY2FzZSAnKSc6IHJldHVybiAweDMwOworICAgICAgICAvLyAgKDMx
KSAxIGtleQorICAgICAgICBjYXNlICcxJzogY2FzZSAnISc6IHJldHVybiAweDMxOworICAgICAg
ICAvLyAgKDMyKSAyIGtleQorICAgICAgICBjYXNlICcyJzogY2FzZSAnQCc6IHJldHVybiAweDMy
OworICAgICAgICAvLyAgKDMzKSAzIGtleQorICAgICAgICBjYXNlICczJzogY2FzZSAnIyc6IHJl
dHVybiAweDMzOworICAgICAgICAvLyAgKDM0KSA0IGtleQorICAgICAgICBjYXNlICc0JzogY2Fz
ZSAnJCc6IHJldHVybiAweDM0OworICAgICAgICAvLyAgKDM1KSA1IGtleQorICAgICAgICBjYXNl
ICc1JzogY2FzZSAnJSc6IHJldHVybiAweDM1OworICAgICAgICAvLyAgKDM2KSA2IGtleQorICAg
ICAgICBjYXNlICc2JzogY2FzZSAnXic6IHJldHVybiAweDM2OworICAgICAgICAvLyAgKDM3KSA3
IGtleQorICAgICAgICBjYXNlICc3JzogY2FzZSAnJic6IHJldHVybiAweDM3OworICAgICAgICAv
LyAgKDM4KSA4IGtleQorICAgICAgICBjYXNlICc4JzogY2FzZSAnKic6IHJldHVybiAweDM4Owor
ICAgICAgICAvLyAgKDM5KSA5IGtleQorICAgICAgICBjYXNlICc5JzogY2FzZSAnKCc6IHJldHVy
biAweDM5OworICAgICAgICAvLyAgKDQxKSBBIGtleQorICAgICAgICBjYXNlICdhJzogY2FzZSAn
QSc6IHJldHVybiAweDQxOworICAgICAgICAvLyAgKDQyKSBCIGtleQorICAgICAgICBjYXNlICdi
JzogY2FzZSAnQic6IHJldHVybiAweDQyOworICAgICAgICAvLyAgKDQzKSBDIGtleQorICAgICAg
ICBjYXNlICdjJzogY2FzZSAnQyc6IHJldHVybiAweDQzOworICAgICAgICAvLyAgKDQ0KSBEIGtl
eQorICAgICAgICBjYXNlICdkJzogY2FzZSAnRCc6IHJldHVybiAweDQ0OworICAgICAgICAvLyAg
KDQ1KSBFIGtleQorICAgICAgICBjYXNlICdlJzogY2FzZSAnRSc6IHJldHVybiAweDQ1OworICAg
ICAgICAvLyAgKDQ2KSBGIGtleQorICAgICAgICBjYXNlICdmJzogY2FzZSAnRic6IHJldHVybiAw
eDQ2OworICAgICAgICAvLyAgKDQ3KSBHIGtleQorICAgICAgICBjYXNlICdnJzogY2FzZSAnRyc6
IHJldHVybiAweDQ3OworICAgICAgICAvLyAgKDQ4KSBIIGtleQorICAgICAgICBjYXNlICdoJzog
Y2FzZSAnSCc6IHJldHVybiAweDQ4OworICAgICAgICAvLyAgKDQ5KSBJIGtleQorICAgICAgICBj
YXNlICdpJzogY2FzZSAnSSc6IHJldHVybiAweDQ5OworICAgICAgICAvLyAgKDRBKSBKIGtleQor
ICAgICAgICBjYXNlICdqJzogY2FzZSAnSic6IHJldHVybiAweDRBOworICAgICAgICAvLyAgKDRC
KSBLIGtleQorICAgICAgICBjYXNlICdrJzogY2FzZSAnSyc6IHJldHVybiAweDRCOworICAgICAg
ICAvLyAgKDRDKSBMIGtleQorICAgICAgICBjYXNlICdsJzogY2FzZSAnTCc6IHJldHVybiAweDRD
OworICAgICAgICAvLyAgKDREKSBNIGtleQorICAgICAgICBjYXNlICdtJzogY2FzZSAnTSc6IHJl
dHVybiAweDREOworICAgICAgICAvLyAgKDRFKSBOIGtleQorICAgICAgICBjYXNlICduJzogY2Fz
ZSAnTic6IHJldHVybiAweDRFOworICAgICAgICAvLyAgKDRGKSBPIGtleQorICAgICAgICBjYXNl
ICdvJzogY2FzZSAnTyc6IHJldHVybiAweDRGOworICAgICAgICAvLyAgKDUwKSBQIGtleQorICAg
ICAgICBjYXNlICdwJzogY2FzZSAnUCc6IHJldHVybiAweDUwOworICAgICAgICAvLyAgKDUxKSBR
IGtleQorICAgICAgICBjYXNlICdxJzogY2FzZSAnUSc6IHJldHVybiAweDUxOworICAgICAgICAv
LyAgKDUyKSBSIGtleQorICAgICAgICBjYXNlICdyJzogY2FzZSAnUic6IHJldHVybiAweDUyOwor
ICAgICAgICAvLyAgKDUzKSBTIGtleQorICAgICAgICBjYXNlICdzJzogY2FzZSAnUyc6IHJldHVy
biAweDUzOworICAgICAgICAvLyAgKDU0KSBUIGtleQorICAgICAgICBjYXNlICd0JzogY2FzZSAn
VCc6IHJldHVybiAweDU0OworICAgICAgICAvLyAgKDU1KSBVIGtleQorICAgICAgICBjYXNlICd1
JzogY2FzZSAnVSc6IHJldHVybiAweDU1OworICAgICAgICAvLyAgKDU2KSBWIGtleQorICAgICAg
ICBjYXNlICd2JzogY2FzZSAnVic6IHJldHVybiAweDU2OworICAgICAgICAvLyAgKDU3KSBXIGtl
eQorICAgICAgICBjYXNlICd3JzogY2FzZSAnVyc6IHJldHVybiAweDU3OworICAgICAgICAvLyAg
KDU4KSBYIGtleQorICAgICAgICBjYXNlICd4JzogY2FzZSAnWCc6IHJldHVybiAweDU4OworICAg
ICAgICAvLyAgKDU5KSBZIGtleQorICAgICAgICBjYXNlICd5JzogY2FzZSAnWSc6IHJldHVybiAw
eDU5OworICAgICAgICAvLyAgKDVBKSBaIGtleQorICAgICAgICBjYXNlICd6JzogY2FzZSAnWic6
IHJldHVybiAweDVBOworCisgICAgICAgIC8vIFZLX0xXSU4gKDVCKSBMZWZ0IFdpbmRvd3Mga2V5
IChNaWNyb3NvZnQgTmF0dXJhbCBrZXlib2FyZCkKKyAgICAgICAgLy8gVktfUldJTiAoNUMpIFJp
Z2h0IFdpbmRvd3Mga2V5IChOYXR1cmFsIGtleWJvYXJkKQorICAgICAgICAvLyBWS19BUFBTICg1
RCkgQXBwbGljYXRpb25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKKyAgICAgICAgLy8gVktfU0xF
RVAgKDVGKSBDb21wdXRlciBTbGVlcCBrZXkKKworICAgICAgICAvLyBWS19OVU1QQUQwICg2MCkg
TnVtZXJpYyBrZXlwYWQgMCBrZXkKKyAgICAgICAgLy8gVktfTlVNUEFEMSAoNjEpIE51bWVyaWMg
a2V5cGFkIDEga2V5CisgICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmljIGtleXBhZCAy
IGtleQorICAgICAgICAvLyBWS19OVU1QQUQzICg2MykgTnVtZXJpYyBrZXlwYWQgMyBrZXkKKyAg
ICAgICAgLy8gVktfTlVNUEFENCAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5CisgICAgICAgIC8v
IFZLX05VTVBBRDUgKDY1KSBOdW1lcmljIGtleXBhZCA1IGtleQorICAgICAgICAvLyBWS19OVU1Q
QUQ2ICg2NikgTnVtZXJpYyBrZXlwYWQgNiBrZXkKKyAgICAgICAgLy8gVktfTlVNUEFENyAoNjcp
IE51bWVyaWMga2V5cGFkIDcga2V5CisgICAgICAgIC8vIFZLX05VTVBBRDggKDY4KSBOdW1lcmlj
IGtleXBhZCA4IGtleQorICAgICAgICAvLyBWS19OVU1QQUQ5ICg2OSkgTnVtZXJpYyBrZXlwYWQg
OSBrZXkKKyAgICAgICAgLy8gVktfTVVMVElQTFkgKDZBKSBNdWx0aXBseSBrZXkKKyAgICAgICAg
Ly8gVktfQUREICg2QikgQWRkIGtleQorICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFi
b3ZlCisKKyAgICAgICAgLy8gVktfU0VQQVJBVE9SICg2QykgU2VwYXJhdG9yIGtleQorCisgICAg
ICAgIC8vIFZLX1NVQlRSQUNUICg2RCkgU3VidHJhY3Qga2V5CisgICAgICAgIC8vIFZLX0RFQ0lN
QUwgKDZFKSBEZWNpbWFsIGtleQorICAgICAgICAvLyBWS19ESVZJREUgKDZGKSBEaXZpZGUga2V5
CisgICAgICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKKworICAgICAgICAvLyBWS19G
MSAoNzApIEYxIGtleQorICAgICAgICBjYXNlIE5TRjFGdW5jdGlvbktleTogcmV0dXJuIDB4NzA7
CisgICAgICAgIC8vIFZLX0YyICg3MSkgRjIga2V5CisgICAgICAgIGNhc2UgTlNGMkZ1bmN0aW9u
S2V5OiByZXR1cm4gMHg3MTsKKyAgICAgICAgLy8gVktfRjMgKDcyKSBGMyBrZXkKKyAgICAgICAg
Y2FzZSBOU0YzRnVuY3Rpb25LZXk6IHJldHVybiAweDcyOworICAgICAgICAvLyBWS19GNCAoNzMp
IEY0IGtleQorICAgICAgICBjYXNlIE5TRjRGdW5jdGlvbktleTogcmV0dXJuIDB4NzM7CisgICAg
ICAgIC8vIFZLX0Y1ICg3NCkgRjUga2V5CisgICAgICAgIGNhc2UgTlNGNUZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHg3NDsKKyAgICAgICAgLy8gVktfRjYgKDc1KSBGNiBrZXkKKyAgICAgICAgY2FzZSBO
U0Y2RnVuY3Rpb25LZXk6IHJldHVybiAweDc1OworICAgICAgICAvLyBWS19GNyAoNzYpIEY3IGtl
eQorICAgICAgICBjYXNlIE5TRjdGdW5jdGlvbktleTogcmV0dXJuIDB4NzY7CisgICAgICAgIC8v
IFZLX0Y4ICg3NykgRjgga2V5CisgICAgICAgIGNhc2UgTlNGOEZ1bmN0aW9uS2V5OiByZXR1cm4g
MHg3NzsKKyAgICAgICAgLy8gVktfRjkgKDc4KSBGOSBrZXkKKyAgICAgICAgY2FzZSBOU0Y5RnVu
Y3Rpb25LZXk6IHJldHVybiAweDc4OworICAgICAgICAvLyBWS19GMTAgKDc5KSBGMTAga2V5Cisg
ICAgICAgIGNhc2UgTlNGMTBGdW5jdGlvbktleTogcmV0dXJuIDB4Nzk7CisgICAgICAgIC8vIFZL
X0YxMSAoN0EpIEYxMSBrZXkKKyAgICAgICAgY2FzZSBOU0YxMUZ1bmN0aW9uS2V5OiByZXR1cm4g
MHg3QTsKKyAgICAgICAgLy8gVktfRjEyICg3QikgRjEyIGtleQorICAgICAgICBjYXNlIE5TRjEy
RnVuY3Rpb25LZXk6IHJldHVybiAweDdCOworICAgICAgICAvLyBWS19GMTMgKDdDKSBGMTMga2V5
CisgICAgICAgIGNhc2UgTlNGMTNGdW5jdGlvbktleTogcmV0dXJuIDB4N0M7CisgICAgICAgIC8v
IFZLX0YxNCAoN0QpIEYxNCBrZXkKKyAgICAgICAgY2FzZSBOU0YxNEZ1bmN0aW9uS2V5OiByZXR1
cm4gMHg3RDsKKyAgICAgICAgLy8gVktfRjE1ICg3RSkgRjE1IGtleQorICAgICAgICBjYXNlIE5T
RjE1RnVuY3Rpb25LZXk6IHJldHVybiAweDdFOworICAgICAgICAvLyBWS19GMTYgKDdGKSBGMTYg
a2V5CisgICAgICAgIGNhc2UgTlNGMTZGdW5jdGlvbktleTogcmV0dXJuIDB4N0Y7CisgICAgICAg
IC8vIFZLX0YxNyAoODBIKSBGMTcga2V5CisgICAgICAgIGNhc2UgTlNGMTdGdW5jdGlvbktleTog
cmV0dXJuIDB4ODA7CisgICAgICAgIC8vIFZLX0YxOCAoODFIKSBGMTgga2V5CisgICAgICAgIGNh
c2UgTlNGMThGdW5jdGlvbktleTogcmV0dXJuIDB4ODE7CisgICAgICAgIC8vIFZLX0YxOSAoODJI
KSBGMTkga2V5CisgICAgICAgIGNhc2UgTlNGMTlGdW5jdGlvbktleTogcmV0dXJuIDB4ODI7Cisg
ICAgICAgIC8vIFZLX0YyMCAoODNIKSBGMjAga2V5CisgICAgICAgIGNhc2UgTlNGMjBGdW5jdGlv
bktleTogcmV0dXJuIDB4ODM7CisgICAgICAgIC8vIFZLX0YyMSAoODRIKSBGMjEga2V5CisgICAg
ICAgIGNhc2UgTlNGMjFGdW5jdGlvbktleTogcmV0dXJuIDB4ODQ7CisgICAgICAgIC8vIFZLX0Yy
MiAoODVIKSBGMjIga2V5CisgICAgICAgIGNhc2UgTlNGMjJGdW5jdGlvbktleTogcmV0dXJuIDB4
ODU7CisgICAgICAgIC8vIFZLX0YyMyAoODZIKSBGMjMga2V5CisgICAgICAgIGNhc2UgTlNGMjNG
dW5jdGlvbktleTogcmV0dXJuIDB4ODY7CisgICAgICAgIC8vIFZLX0YyNCAoODdIKSBGMjQga2V5
CisgICAgICAgIGNhc2UgTlNGMjRGdW5jdGlvbktleTogcmV0dXJuIDB4ODc7CisKKyAgICAgICAg
Ly8gVktfTlVNTE9DSyAoOTApIE5VTSBMT0NLIGtleQorCisgICAgICAgIC8vIFZLX1NDUk9MTCAo
OTEpIFNDUk9MTCBMT0NLIGtleQorICAgICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1bmN0aW9uS2V5
OiByZXR1cm4gMHg5MTsKKworICAgICAgICAvLyBWS19MU0hJRlQgKEEwKSBMZWZ0IFNISUZUIGtl
eQorICAgICAgICAvLyBWS19SU0hJRlQgKEExKSBSaWdodCBTSElGVCBrZXkKKyAgICAgICAgLy8g
VktfTENPTlRST0wgKEEyKSBMZWZ0IENPTlRST0wga2V5CisgICAgICAgIC8vIFZLX1JDT05UUk9M
IChBMykgUmlnaHQgQ09OVFJPTCBrZXkKKyAgICAgICAgLy8gVktfTE1FTlUgKEE0KSBMZWZ0IE1F
TlUga2V5CisgICAgICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkKKyAgICAgICAg
Ly8gVktfQlJPV1NFUl9CQUNLIChBNikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEJhY2sga2V5
CisgICAgICAgIC8vIFZLX0JST1dTRVJfRk9SV0FSRCAoQTcpIFdpbmRvd3MgMjAwMC9YUDogQnJv
d3NlciBGb3J3YXJkIGtleQorICAgICAgICAvLyBWS19CUk9XU0VSX1JFRlJFU0ggKEE4KSBXaW5k
b3dzIDIwMDAvWFA6IEJyb3dzZXIgUmVmcmVzaCBrZXkKKyAgICAgICAgLy8gVktfQlJPV1NFUl9T
VE9QIChBOSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0b3Aga2V5CisgICAgICAgIC8vIFZL
X0JST1dTRVJfU0VBUkNIIChBQSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFNlYXJjaCBrZXkK
KyAgICAgICAgLy8gVktfQlJPV1NFUl9GQVZPUklURVMgKEFCKSBXaW5kb3dzIDIwMDAvWFA6IEJy
b3dzZXIgRmF2b3JpdGVzIGtleQorICAgICAgICAvLyBWS19CUk9XU0VSX0hPTUUgKEFDKSBXaW5k
b3dzIDIwMDAvWFA6IEJyb3dzZXIgU3RhcnQgYW5kIEhvbWUga2V5CisgICAgICAgIC8vIFZLX1ZP
TFVNRV9NVVRFIChBRCkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgTXV0ZSBrZXkKKyAgICAgICAg
Ly8gVktfVk9MVU1FX0RPV04gKEFFKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBEb3duIGtleQor
ICAgICAgICAvLyBWS19WT0xVTUVfVVAgKEFGKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBVcCBr
ZXkKKyAgICAgICAgLy8gVktfTUVESUFfTkVYVF9UUkFDSyAoQjApIFdpbmRvd3MgMjAwMC9YUDog
TmV4dCBUcmFjayBrZXkKKyAgICAgICAgLy8gVktfTUVESUFfUFJFVl9UUkFDSyAoQjEpIFdpbmRv
d3MgMjAwMC9YUDogUHJldmlvdXMgVHJhY2sga2V5CisgICAgICAgIC8vIFZLX01FRElBX1NUT1Ag
KEIyKSBXaW5kb3dzIDIwMDAvWFA6IFN0b3AgTWVkaWEga2V5CisgICAgICAgIC8vIFZLX01FRElB
X1BMQVlfUEFVU0UgKEIzKSBXaW5kb3dzIDIwMDAvWFA6IFBsYXkvUGF1c2UgTWVkaWEga2V5Cisg
ICAgICAgIC8vIFZLX0xBVU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBTdGFydCBNYWls
IGtleQorICAgICAgICAvLyBWS19MQVVOQ0hfTUVESUFfU0VMRUNUIChCNSkgV2luZG93cyAyMDAw
L1hQOiBTZWxlY3QgTWVkaWEga2V5CisgICAgICAgIC8vIFZLX0xBVU5DSF9BUFAxIChCNikgV2lu
ZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAxIGtleQorICAgICAgICAvLyBWS19MQVVO
Q0hfQVBQMiAoQjcpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMiBrZXkKKwor
ICAgICAgICAvLyBWS19PRU1fMSAoQkEpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVy
czsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBz
dGFuZGFyZCBrZXlib2FyZCwgdGhlICc7Oicga2V5CisgICAgICAgIGNhc2UgJzsnOiBjYXNlICc6
JzogcmV0dXJuIDB4QkE7CisgICAgICAgIC8vIFZLX09FTV9QTFVTIChCQikgV2luZG93cyAyMDAw
L1hQOiBGb3IgYW55IGNvdW50cnkvcmVnaW9uLCB0aGUgJysnIGtleQorICAgICAgICBjYXNlICc9
JzogY2FzZSAnKyc6IHJldHVybiAweEJCOworICAgICAgICAvLyBWS19PRU1fQ09NTUEgKEJDKSBX
aW5kb3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLCcga2V5CisgICAg
ICAgIGNhc2UgJywnOiBjYXNlICc8JzogcmV0dXJuIDB4QkM7CisgICAgICAgIC8vIFZLX09FTV9N
SU5VUyAoQkQpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICct
JyBrZXkKKyAgICAgICAgY2FzZSAnLSc6IGNhc2UgJ18nOiByZXR1cm4gMHhCRDsKKyAgICAgICAg
Ly8gVktfT0VNX1BFUklPRCAoQkUpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3Jl
Z2lvbiwgdGhlICcuJyBrZXkKKyAgICAgICAgY2FzZSAnLic6IGNhc2UgJz4nOiByZXR1cm4gMHhC
RTsKKyAgICAgICAgLy8gVktfT0VNXzIgKEJGKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJh
Y3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUg
VVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnLz8nIGtleQorICAgICAgICBjYXNlICcvJzogY2Fz
ZSAnPyc6IHJldHVybiAweEJGOworICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1p
c2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3Mg
MjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficga2V5CisgICAg
ICAgIGNhc2UgJ2AnOiBjYXNlICd+JzogcmV0dXJuIDB4QzA7CisgICAgICAgIC8vIFZLX09FTV80
IChEQikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBr
ZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0
aGUgJ1t7JyBrZXkKKyAgICAgICAgY2FzZSAnWyc6IGNhc2UgJ3snOiByZXR1cm4gMHhEQjsKKyAg
ICAgICAgLy8gVktfT0VNXzUgKERDKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7
IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3Rh
bmRhcmQga2V5Ym9hcmQsIHRoZSAnXHwnIGtleQorICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ3wn
OiByZXR1cm4gMHhEQzsKKyAgICAgICAgLy8gVktfT0VNXzYgKEREKSBVc2VkIGZvciBtaXNjZWxs
YW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAv
WFA6IEZvciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXX0nIGtleQorICAgICAgICBj
YXNlICddJzogY2FzZSAnfSc6IHJldHVybiAweEREOworICAgICAgICAvLyBWS19PRU1fNyAoREUp
IFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9h
cmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdz
aW5nbGUtcXVvdGUvZG91YmxlLXF1b3RlJyBrZXkKKyAgICAgICAgY2FzZSAnXCcnOiBjYXNlICci
JzogcmV0dXJuIDB4REU7CisKKyAgICAgICAgLy8gVktfT0VNXzggKERGKSBVc2VkIGZvciBtaXNj
ZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLgorICAgICAgICAv
LyBWS19PRU1fMTAyIChFMikgV2luZG93cyAyMDAwL1hQOiBFaXRoZXIgdGhlIGFuZ2xlIGJyYWNr
ZXQga2V5IG9yIHRoZSBiYWNrc2xhc2gga2V5IG9uIHRoZSBSVCAxMDIta2V5IGtleWJvYXJkCisg
ICAgICAgIC8vIFZLX1BST0NFU1NLRVkgKEU1KSBXaW5kb3dzIDk1Lzk4L01lLCBXaW5kb3dzIE5U
IDQuMCwgV2luZG93cyAyMDAwL1hQOiBJTUUgUFJPQ0VTUyBrZXkKKyAgICAgICAgLy8gVktfUEFD
S0VUIChFNykgV2luZG93cyAyMDAwL1hQOiBVc2VkIHRvIHBhc3MgVW5pY29kZSBjaGFyYWN0ZXJz
IGFzIGlmIHRoZXkgd2VyZSBrZXlzdHJva2VzLiBUaGUgVktfUEFDS0VUIGtleSBpcyB0aGUgbG93
IHdvcmQgb2YgYSAzMi1iaXQgVmlydHVhbCBLZXkgdmFsdWUgdXNlZCBmb3Igbm9uLWtleWJvYXJk
IGlucHV0IG1ldGhvZHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgUmVtYXJrIGluIEtFWUJE
SU5QVVQsU2VuZElucHV0LCBXTV9LRVlET1dOLCBhbmQgV01fS0VZVVAKKyAgICAgICAgLy8gVktf
QVRUTiAoRjYpIEF0dG4ga2V5CisgICAgICAgIC8vIFZLX0NSU0VMIChGNykgQ3JTZWwga2V5Cisg
ICAgICAgIC8vIFZLX0VYU0VMIChGOCkgRXhTZWwga2V5CisgICAgICAgIC8vIFZLX0VSRU9GIChG
OSkgRXJhc2UgRU9GIGtleQorICAgICAgICAvLyBWS19QTEFZIChGQSkgUGxheSBrZXkKKyAgICAg
ICAgLy8gVktfWk9PTSAoRkIpIFpvb20ga2V5CisgICAgICAgIC8vIFZLX05PTkFNRSAoRkMpIFJl
c2VydmVkIGZvciBmdXR1cmUgdXNlCisgICAgICAgIC8vIFZLX1BBMSAoRkQpIFBBMSBrZXkKKyAg
ICAgICAgLy8gVktfT0VNX0NMRUFSIChGRSkgQ2xlYXIga2V5CisgICAgfQorCisgICAgcmV0dXJu
IDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFj
Lm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KaW5kZXggMzYzOGNiMS4u
MGVhNjczNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0K
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KQEAgLTI2LDYgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmgi
CiAKKyNpbXBvcnQgIktleUV2ZW50Q29jb2EuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBlLmg+CkBAIC0zNCwz
MjggKzM1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkK
LXsKLSAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKSAKLSAgICAgICAgc3dp
dGNoIChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENv
bW1hbmQKLSAgICAgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAotICAgICAgICAgICAg
ICAgIHJldHVybiAiTWV0YSI7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIDU3
OiAvLyBDYXBzbG9jawotICAgICAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAotICAgICAgICAg
ICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKLSAgICAgICAgICAgICAgICByZXR1cm4gIlNoaWZ0
IjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0Ci0g
ICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKLSAgICAgICAgICAgICAgICByZXR1cm4g
IkFsdCI7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0
cmwKLSAgICAgICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIkNvbnRyb2wiOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIiI7Ci0gICAgICAgIH0KLSAgICAKLSAgICBOU1N0cmluZyAqcyA9IFtldmVudCBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChbcyBsZW5ndGhdICE9IDEpIHsKLSAg
ICAgICAgTE9HKEV2ZW50cywgInJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNoYXJh
Y3RlcnMgaW4ga2V5IGV2ZW50OiAldSIsIFtzIGxlbmd0aF0pOwotICAgICAgICByZXR1cm4gIlVu
aWRlbnRpZmllZCI7Ci0gICAgfQotICAgIHVuaWNoYXIgYyA9IFtzIGNoYXJhY3RlckF0SW5kZXg6
MF07Ci0gICAgc3dpdGNoIChjKSB7Ci0gICAgICAgIC8vIEVhY2ggaWRlbnRpZmllciBsaXN0ZWQg
aW4gdGhlIERPTSBzcGVjIGlzIGxpc3RlZCBoZXJlLgotICAgICAgICAvLyBNYW55IGFyZSBzaW1w
bHkgY29tbWVudGVkIG91dCBzaW5jZSB0aGV5IGRvIG5vdCBhcHBlYXIgb24gc3RhbmRhcmQgTWFj
aW50b3NoIGtleWJvYXJkcwotICAgICAgICAvLyBvciBhcmUgb24gYSBrZXkgdGhhdCBkb2Vzbid0
IGhhdmUgYSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4KLQotICAgICAgICAvLyAiQWNjZXB0Igot
ICAgICAgICAvLyAiQWxsQ2FuZGlkYXRlcyIKLQotICAgICAgICAvLyAiQWx0IgotICAgICAgICBj
YXNlIE5TTWVudUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJBbHQiOwotCi0gICAg
ICAgIC8vICJBcHBzIgotICAgICAgICAvLyAiQnJvd3NlckJhY2siCi0gICAgICAgIC8vICJCcm93
c2VyRm9yd2FyZCIKLSAgICAgICAgLy8gIkJyb3dzZXJIb21lIgotICAgICAgICAvLyAiQnJvd3Nl
clJlZnJlc2giCi0gICAgICAgIC8vICJCcm93c2VyU2VhcmNoIgotICAgICAgICAvLyAiQnJvd3Nl
clN0b3AiCi0gICAgICAgIC8vICJDYXBzTG9jayIKLQotICAgICAgICAvLyAiQ2xlYXIiCi0gICAg
ICAgIGNhc2UgTlNDbGVhckxpbmVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiQ2xl
YXIiOwotCi0gICAgICAgIC8vICJDb2RlSW5wdXQiCi0gICAgICAgIC8vICJDb21wb3NlIgotICAg
ICAgICAvLyAiQ29udHJvbCIKLSAgICAgICAgLy8gIkNyc2VsIgotICAgICAgICAvLyAiQ29udmVy
dCIKLSAgICAgICAgLy8gIkNvcHkiCi0gICAgICAgIC8vICJDdXQiCi0KLSAgICAgICAgLy8gIkRv
d24iCi0gICAgICAgIGNhc2UgTlNEb3duQXJyb3dGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJl
dHVybiAiRG93biI7Ci0gICAgICAgIC8vICJFbmQiCi0gICAgICAgIGNhc2UgTlNFbmRGdW5jdGlv
bktleToKLSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKLSAgICAgICAgLy8gIkVudGVyIgotICAg
ICAgICBjYXNlIDB4MzogY2FzZSAweEE6IGNhc2UgMHhEOiAvLyBNYWNpbnRvc2ggY2FsbHMgdGhl
IG9uZSBvbiB0aGUgbWFpbiBrZXlib2FyZCBSZXR1cm4sIGJ1dCBXaW5kb3dzIGNhbGxzIGl0IEVu
dGVyLCBzbyB3ZSdsbCBkbyB0aGUgc2FtZSBmb3IgdGhlIERPTQotICAgICAgICAgICAgcmV0dXJu
ICJFbnRlciI7Ci0KLSAgICAgICAgLy8gIkVyYXNlRW9mIgotCi0gICAgICAgIC8vICJFeGVjdXRl
IgotICAgICAgICBjYXNlIE5TRXhlY3V0ZUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJu
ICJFeGVjdXRlIjsKLQotICAgICAgICAvLyAiRXhzZWwiCi0KLSAgICAgICAgLy8gIkYxIgotICAg
ICAgICBjYXNlIE5TRjFGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjEiOwotICAg
ICAgICAvLyAiRjIiCi0gICAgICAgIGNhc2UgTlNGMkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAg
cmV0dXJuICJGMiI7Ci0gICAgICAgIC8vICJGMyIKLSAgICAgICAgY2FzZSBOU0YzRnVuY3Rpb25L
ZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKLSAgICAgICAgLy8gIkY0IgotICAgICAgICBj
YXNlIE5TRjRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjQiOwotICAgICAgICAv
LyAiRjUiCi0gICAgICAgIGNhc2UgTlNGNUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJu
ICJGNSI7Ci0gICAgICAgIC8vICJGNiIKLSAgICAgICAgY2FzZSBOU0Y2RnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIkY2IjsKLSAgICAgICAgLy8gIkY3IgotICAgICAgICBjYXNlIE5T
RjdGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjciOwotICAgICAgICAvLyAiRjgi
Ci0gICAgICAgIGNhc2UgTlNGOEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGOCI7
Ci0gICAgICAgIC8vICJGOSIKLSAgICAgICAgY2FzZSBOU0Y5RnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY5IjsKLSAgICAgICAgLy8gIkYxMCIKLSAgICAgICAgY2FzZSBOU0YxMEZ1
bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTAiOwotICAgICAgICAvLyAiRjExIgot
ICAgICAgICBjYXNlIE5TRjExRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYxMSI7
Ci0gICAgICAgIC8vICJGMTIiCi0gICAgICAgIGNhc2UgTlNGMTJGdW5jdGlvbktleToKLSAgICAg
ICAgICAgIHJldHVybiAiRjEyIjsKLSAgICAgICAgLy8gIkYxMyIKLSAgICAgICAgY2FzZSBOU0Yx
M0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTMiOwotICAgICAgICAvLyAiRjE0
IgotICAgICAgICBjYXNlIE5TRjE0RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYx
NCI7Ci0gICAgICAgIC8vICJGMTUiCi0gICAgICAgIGNhc2UgTlNGMTVGdW5jdGlvbktleToKLSAg
ICAgICAgICAgIHJldHVybiAiRjE1IjsKLSAgICAgICAgLy8gIkYxNiIKLSAgICAgICAgY2FzZSBO
U0YxNkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOwotICAgICAgICAvLyAi
RjE3IgotICAgICAgICBjYXNlIE5TRjE3RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4g
IkYxNyI7Ci0gICAgICAgIC8vICJGMTgiCi0gICAgICAgIGNhc2UgTlNGMThGdW5jdGlvbktleToK
LSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKLSAgICAgICAgLy8gIkYxOSIKLSAgICAgICAgY2Fz
ZSBOU0YxOUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTkiOwotICAgICAgICAv
LyAiRjIwIgotICAgICAgICBjYXNlIE5TRjIwRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1
cm4gIkYyMCI7Ci0gICAgICAgIC8vICJGMjEiCi0gICAgICAgIGNhc2UgTlNGMjFGdW5jdGlvbktl
eToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKLSAgICAgICAgLy8gIkYyMiIKLSAgICAgICAg
Y2FzZSBOU0YyMkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjIiOwotICAgICAg
ICAvLyAiRjIzIgotICAgICAgICBjYXNlIE5TRjIzRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkYyMyI7Ci0gICAgICAgIC8vICJGMjQiCi0gICAgICAgIGNhc2UgTlNGMjRGdW5jdGlv
bktleToKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKLQotICAgICAgICAvLyAiRmluYWxNb2Rl
IgotCi0gICAgICAgIC8vICJGaW5kIgotICAgICAgICBjYXNlIE5TRmluZEZ1bmN0aW9uS2V5Ogot
ICAgICAgICAgICAgcmV0dXJuICJGaW5kIjsKLQotICAgICAgICAvLyAiRnVsbFdpZHRoIgotICAg
ICAgICAvLyAiSGFsZldpZHRoIgotICAgICAgICAvLyAiSGFuZ3VsTW9kZSIKLSAgICAgICAgLy8g
IkhhbmphTW9kZSIKLQotICAgICAgICAvLyAiSGVscCIKLSAgICAgICAgY2FzZSBOU0hlbHBGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiSGVscCI7Ci0KLSAgICAgICAgLy8gIkhpcmFn
YW5hIgotCi0gICAgICAgIC8vICJIb21lIgotICAgICAgICBjYXNlIE5TSG9tZUZ1bmN0aW9uS2V5
OgotICAgICAgICAgICAgcmV0dXJuICJIb21lIjsKLSAgICAgICAgLy8gIkluc2VydCIKLSAgICAg
ICAgY2FzZSBOU0luc2VydEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQi
OwotCi0gICAgICAgIC8vICJKYXBhbmVzZUhpcmFnYW5hIgotICAgICAgICAvLyAiSmFwYW5lc2VL
YXRha2FuYSIKLSAgICAgICAgLy8gIkphcGFuZXNlUm9tYWppIgotICAgICAgICAvLyAiSnVuamFN
b2RlIgotICAgICAgICAvLyAiS2FuYU1vZGUiCi0gICAgICAgIC8vICJLYW5qaU1vZGUiCi0gICAg
ICAgIC8vICJLYXRha2FuYSIKLSAgICAgICAgLy8gIkxhdW5jaEFwcGxpY2F0aW9uMSIKLSAgICAg
ICAgLy8gIkxhdW5jaEFwcGxpY2F0aW9uMiIKLSAgICAgICAgLy8gIkxhdW5jaE1haWwiCi0KLSAg
ICAgICAgLy8gIkxlZnQiCi0gICAgICAgIGNhc2UgTlNMZWZ0QXJyb3dGdW5jdGlvbktleToKLSAg
ICAgICAgICAgIHJldHVybiAiTGVmdCI7Ci0KLSAgICAgICAgLy8gIk1ldGEiCi0gICAgICAgIC8v
ICJNZWRpYU5leHRUcmFjayIKLSAgICAgICAgLy8gIk1lZGlhUGxheVBhdXNlIgotICAgICAgICAv
LyAiTWVkaWFQcmV2aW91c1RyYWNrIgotICAgICAgICAvLyAiTWVkaWFTdG9wIgotCi0gICAgICAg
IC8vICJNb2RlQ2hhbmdlIgotICAgICAgICBjYXNlIE5TTW9kZVN3aXRjaEZ1bmN0aW9uS2V5Ogot
ICAgICAgICAgICAgcmV0dXJuICJNb2RlQ2hhbmdlIjsKLQotICAgICAgICAvLyAiTm9uY29udmVy
dCIKLSAgICAgICAgLy8gIk51bUxvY2siCi0KLSAgICAgICAgLy8gIlBhZ2VEb3duIgotICAgICAg
ICBjYXNlIE5TUGFnZURvd25GdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiUGFnZURv
d24iOwotICAgICAgICAvLyAiUGFnZVVwIgotICAgICAgICBjYXNlIE5TUGFnZVVwRnVuY3Rpb25L
ZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7Ci0KLSAgICAgICAgLy8gIlBhc3RlIgot
Ci0gICAgICAgIC8vICJQYXVzZSIKLSAgICAgICAgY2FzZSBOU1BhdXNlRnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIlBhdXNlIjsKLQotICAgICAgICAvLyAiUGxheSIKLSAgICAgICAg
Ly8gIlByZXZpb3VzQ2FuZGlkYXRlIgotCi0gICAgICAgIC8vICJQcmludFNjcmVlbiIKLSAgICAg
ICAgY2FzZSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlBy
aW50U2NyZWVuIjsKLQotICAgICAgICAvLyAiUHJvY2VzcyIKLSAgICAgICAgLy8gIlByb3BzIgot
Ci0gICAgICAgIC8vICJSaWdodCIKLSAgICAgICAgY2FzZSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktl
eToKLSAgICAgICAgICAgIHJldHVybiAiUmlnaHQiOwotCi0gICAgICAgIC8vICJSb21hbkNoYXJh
Y3RlcnMiCi0KLSAgICAgICAgLy8gIlNjcm9sbCIKLSAgICAgICAgY2FzZSBOU1Njcm9sbExvY2tG
dW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIjsKLSAgICAgICAgLy8gIlNl
bGVjdCIKLSAgICAgICAgY2FzZSBOU1NlbGVjdEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0
dXJuICJTZWxlY3QiOwotCi0gICAgICAgIC8vICJTZWxlY3RNZWRpYSIKLSAgICAgICAgLy8gIlNo
aWZ0IgotCi0gICAgICAgIC8vICJTdG9wIgotICAgICAgICBjYXNlIE5TU3RvcEZ1bmN0aW9uS2V5
OgotICAgICAgICAgICAgcmV0dXJuICJTdG9wIjsKLSAgICAgICAgLy8gIlVwIgotICAgICAgICBj
YXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJVcCI7Ci0gICAg
ICAgIC8vICJVbmRvIgotICAgICAgICBjYXNlIE5TVW5kb0Z1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJVbmRvIjsKLQotICAgICAgICAvLyAiVm9sdW1lRG93biIKLSAgICAgICAgLy8g
IlZvbHVtZU11dGUiCi0gICAgICAgIC8vICJWb2x1bWVVcCIKLSAgICAgICAgLy8gIldpbiIKLSAg
ICAgICAgLy8gIlpvb20iCi0KLSAgICAgICAgLy8gTW9yZSBmdW5jdGlvbiBrZXlzLCBub3QgaW4g
dGhlIGtleSBpZGVudGlmaWVyIHNwZWNpZmljYXRpb24uCi0gICAgICAgIGNhc2UgTlNGMjVGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjI1IjsKLSAgICAgICAgY2FzZSBOU0YyNkZ1
bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjYiOwotICAgICAgICBjYXNlIE5TRjI3
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyNyI7Ci0gICAgICAgIGNhc2UgTlNG
MjhGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjI4IjsKLSAgICAgICAgY2FzZSBO
U0YyOUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjkiOwotICAgICAgICBjYXNl
IE5TRjMwRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzMCI7Ci0gICAgICAgIGNh
c2UgTlNGMzFGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjMxIjsKLSAgICAgICAg
Y2FzZSBOU0YzMkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzIiOwotICAgICAg
ICBjYXNlIE5TRjMzRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzMyI7Ci0gICAg
ICAgIGNhc2UgTlNGMzRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjM0IjsKLSAg
ICAgICAgY2FzZSBOU0YzNUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzUiOwot
Ci0gICAgICAgIC8vIFR1cm4gMHg3RiBpbnRvIDB4MDgsIGJlY2F1c2UgYmFja3NwYWNlIG5lZWRz
IHRvIGFsd2F5cyBiZSAweDA4LgotICAgICAgICBjYXNlIDB4N0Y6Ci0gICAgICAgICAgICByZXR1
cm4gIlUrMDAwOCI7Ci0gICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBV
KzAwN0YuCi0gICAgICAgIGNhc2UgTlNEZWxldGVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJl
dHVybiAiVSswMDdGIjsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBBbHdheXMgdXNlIDB4MDkg
Zm9yIHRhYiBpbnN0ZWFkIG9mIEFwcEtpdCdzIGJhY2t0YWIgY2hhcmFjdGVyLgotICAgICAgICBj
YXNlIE5TQmFja1RhYkNoYXJhY3RlcjoKLSAgICAgICAgICAgIHJldHVybiAiVSswMDA5IjsKLQot
ICAgICAgICBjYXNlIE5TQmVnaW5GdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU0JyZWFrRnVu
Y3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNDbGVhckRpc3BsYXlGdW5jdGlvbktleToKLSAgICAg
ICAgY2FzZSBOU0RlbGV0ZUNoYXJGdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU0RlbGV0ZUxp
bmVGdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU0luc2VydENoYXJGdW5jdGlvbktleToKLSAg
ICAgICAgY2FzZSBOU0luc2VydExpbmVGdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU05leHRG
dW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU1ByZXZGdW5jdGlvbktleToKLSAgICAgICAgY2Fz
ZSBOU1ByaW50RnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNSZWRvRnVuY3Rpb25LZXk6Ci0g
ICAgICAgIGNhc2UgTlNSZXNldEZ1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5TU3lzUmVxRnVu
Y3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNTeXN0ZW1GdW5jdGlvbktleToKLSAgICAgICAgY2Fz
ZSBOU1VzZXJGdW5jdGlvbktleToKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNl
IHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSB2ZW5kb3ItYXJlYSBVbmljb2RlIHZhbHVlcyBmb3Ig
dGhlIGFib3ZlIGtleXMuCi0gICAgICAgICAgICAvLyBGb3Igbm93LCBqdXN0IGZhbGwgdGhyb3Vn
aCB0byB0aGUgZGVmYXVsdC4KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBT
dHJpbmc6OmZvcm1hdCgiVSslMDRYIiwgdG9BU0NJSVVwcGVyKGMpKTsKLSAgICB9Ci19Ci0KIHN0
YXRpYyBib29sIGlzS2V5cGFkRXZlbnQoTlNFdmVudCogZXZlbnQpCiB7CiAgICAgLy8gQ2hlY2sg
dGhhdCB0aGlzIGlzIHRoZSB0eXBlIG9mIGV2ZW50IHRoYXQgaGFzIGEga2V5Q29kZS4KQEAgLTM5
NiwzNzQgKzc1LDYgQEAgc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChOU0V2ZW50KiBldmVudCkK
ICAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5
RXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsK
LSAgICAgICAgLy8gVktfVEFCICgwOSkgVEFCIGtleQotICAgICAgICBjYXNlIDQ4OiByZXR1cm4g
MHgwOTsKLQotICAgICAgICAvLyBWS19BUFBTICg1RCkgUmlnaHQgd2luZG93cy9tZXRhIGtleQot
ICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAgICAgICAgICByZXR1cm4gMHg1
RDsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBWS19MV0lOICg1QikgTGVmdCB3aW5kb3dzL21l
dGEga2V5Ci0gICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAotICAgICAgICAgICAgcmV0
dXJuIDB4NUI7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktfQ0FQSVRBTCAoMTQpIGNhcHMg
bG9ja3Mga2V5Ci0gICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCi0gICAgICAgICAgICByZXR1
cm4gMHgxNDsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBWS19TSElGVCAoMTApIGVpdGhlciBz
aGlmdCBrZXkKLSAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAotICAgICAgICBjYXNlIDYw
OiAvLyBSaWdodCBTaGlmdAotICAgICAgICAgICAgcmV0dXJuIDB4MTA7Ci0gICAgICAgICAgICAK
LSAgICAgICAgLy8gVktfTUVOVSAoMTIpIGVpdGhlciBhbHQga2V5Ci0gICAgICAgIGNhc2UgNTg6
IC8vIExlZnQgQWx0Ci0gICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAgICAg
cmV0dXJuIDB4MTI7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gVktfQ09OVFJPTCAoMTEpIGVp
dGhlciBjdHJsIGtleQotICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKLSAgICAgICAgY2Fz
ZSA2MjogLy8gUmlnaHQgQ3RybAotICAgICAgICAgICAgcmV0dXJuIDB4MTE7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgLy8gVktfQ0xFQVIgKDBDKSBDTEVBUiBrZXkKLSAgICAgICAgY2FzZSA3MTog
cmV0dXJuIDB4MEM7Ci0KLSAgICAgICAgLy8gVktfTlVNUEFEMCAoNjApIE51bWVyaWMga2V5cGFk
IDAga2V5Ci0gICAgICAgIGNhc2UgODI6IHJldHVybiAweDYwOwotICAgICAgICAvLyBWS19OVU1Q
QUQxICg2MSkgTnVtZXJpYyBrZXlwYWQgMSBrZXkKLSAgICAgICAgY2FzZSA4MzogcmV0dXJuIDB4
NjE7Ci0gICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQotICAg
ICAgICBjYXNlIDg0OiByZXR1cm4gMHg2MjsKLSAgICAgICAgLy8gVktfTlVNUEFEMyAoNjMpIE51
bWVyaWMga2V5cGFkIDMga2V5Ci0gICAgICAgIGNhc2UgODU6IHJldHVybiAweDYzOwotICAgICAg
ICAvLyBWS19OVU1QQUQ0ICg2NCkgTnVtZXJpYyBrZXlwYWQgNCBrZXkKLSAgICAgICAgY2FzZSA4
NjogcmV0dXJuIDB4NjQ7Ci0gICAgICAgIC8vIFZLX05VTVBBRDUgKDY1KSBOdW1lcmljIGtleXBh
ZCA1IGtleQotICAgICAgICBjYXNlIDg3OiByZXR1cm4gMHg2NTsKLSAgICAgICAgLy8gVktfTlVN
UEFENiAoNjYpIE51bWVyaWMga2V5cGFkIDYga2V5Ci0gICAgICAgIGNhc2UgODg6IHJldHVybiAw
eDY2OwotICAgICAgICAvLyBWS19OVU1QQUQ3ICg2NykgTnVtZXJpYyBrZXlwYWQgNyBrZXkKLSAg
ICAgICAgY2FzZSA4OTogcmV0dXJuIDB4Njc7Ci0gICAgICAgIC8vIFZLX05VTVBBRDggKDY4KSBO
dW1lcmljIGtleXBhZCA4IGtleQotICAgICAgICBjYXNlIDkxOiByZXR1cm4gMHg2ODsKLSAgICAg
ICAgLy8gVktfTlVNUEFEOSAoNjkpIE51bWVyaWMga2V5cGFkIDkga2V5Ci0gICAgICAgIGNhc2Ug
OTI6IHJldHVybiAweDY5OwotICAgICAgICAvLyBWS19NVUxUSVBMWSAoNkEpIE11bHRpcGx5IGtl
eQotICAgICAgICBjYXNlIDY3OiByZXR1cm4gMHg2QTsKLSAgICAgICAgLy8gVktfQUREICg2Qikg
QWRkIGtleQotICAgICAgICBjYXNlIDY5OiByZXR1cm4gMHg2QjsKLQotICAgICAgICAvLyBWS19T
VUJUUkFDVCAoNkQpIFN1YnRyYWN0IGtleQotICAgICAgICBjYXNlIDc4OiByZXR1cm4gMHg2RDsK
LSAgICAgICAgLy8gVktfREVDSU1BTCAoNkUpIERlY2ltYWwga2V5Ci0gICAgICAgIGNhc2UgNjU6
IHJldHVybiAweDZFOwotICAgICAgICAvLyBWS19ESVZJREUgKDZGKSBEaXZpZGUga2V5Ci0gICAg
ICAgIGNhc2UgNzU6IHJldHVybiAweDZGOwotICAgICB9Ci0KLSAgICBOU1N0cmluZyogcyA9IFtl
dmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChbcyBsZW5ndGhdICE9
IDEpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgc3dpdGNoIChbcyBjaGFyYWN0ZXJBdEluZGV4
OjBdKSB7Ci0gICAgICAgIC8vIFZLX0xCVVRUT04gKDAxKSBMZWZ0IG1vdXNlIGJ1dHRvbgotICAg
ICAgICAvLyBWS19SQlVUVE9OICgwMikgUmlnaHQgbW91c2UgYnV0dG9uCi0gICAgICAgIC8vIFZL
X0NBTkNFTCAoMDMpIENvbnRyb2wtYnJlYWsgcHJvY2Vzc2luZwotICAgICAgICAvLyBWS19NQlVU
VE9OICgwNCkgTWlkZGxlIG1vdXNlIGJ1dHRvbiAodGhyZWUtYnV0dG9uIG1vdXNlKQotICAgICAg
ICAvLyBWS19YQlVUVE9OMSAoMDUpCi0gICAgICAgIC8vIFZLX1hCVVRUT04yICgwNikKLQotICAg
ICAgICAvLyBWS19CQUNLICgwOCkgQkFDS1NQQUNFIGtleQotICAgICAgICBjYXNlIDg6IGNhc2Ug
MHg3RjogcmV0dXJuIDB4MDg7Ci0gICAgICAgIC8vIFZLX1RBQiAoMDkpIFRBQiBrZXkKLSAgICAg
ICAgY2FzZSA5OiByZXR1cm4gMHgwOTsKLQotICAgICAgICAvLyBWS19DTEVBUiAoMEMpIENMRUFS
IGtleQotICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFib3ZlCi0KLSAgICAgICAgLy8g
VktfUkVUVVJOICgwRCkKLSAgICAgICAgY2FzZSAweEQ6IGNhc2UgMzogcmV0dXJuIDB4MEQ7Ci0K
LSAgICAgICAgLy8gVktfU0hJRlQgKDEwKSBTSElGVCBrZXkKLSAgICAgICAgLy8gVktfQ09OVFJP
TCAoMTEpIENUUkwga2V5Ci0gICAgICAgIC8vIFZLX01FTlUgKDEyKSBBTFQga2V5Ci0KLSAgICAg
ICAgLy8gVktfUEFVU0UgKDEzKSBQQVVTRSBrZXkKLSAgICAgICAgY2FzZSBOU1BhdXNlRnVuY3Rp
b25LZXk6IHJldHVybiAweDEzOwotCi0gICAgICAgIC8vIFZLX0NBUElUQUwgKDE0KSBDQVBTIExP
Q0sga2V5Ci0gICAgICAgIC8vIFZLX0tBTkEgKDE1KSBJbnB1dCBNZXRob2QgRWRpdG9yIChJTUUp
IEthbmEgbW9kZQotICAgICAgICAvLyBWS19IQU5HVUVMICgxNSkgSU1FIEhhbmd1ZWwgbW9kZSAo
bWFpbnRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eTsgdXNlIFZLX0hBTkdVTCkKLSAgICAgICAgLy8g
VktfSEFOR1VMICgxNSkgSU1FIEhhbmd1bCBtb2RlCi0gICAgICAgIC8vIFZLX0pVTkpBICgxNykg
SU1FIEp1bmphIG1vZGUKLSAgICAgICAgLy8gVktfRklOQUwgKDE4KSBJTUUgZmluYWwgbW9kZQot
ICAgICAgICAvLyBWS19IQU5KQSAoMTkpIElNRSBIYW5qYSBtb2RlCi0gICAgICAgIC8vIFZLX0tB
TkpJICgxOSkgSU1FIEthbmppIG1vZGUKLQotICAgICAgICAvLyBWS19FU0NBUEUgKDFCKSBFU0Mg
a2V5Ci0gICAgICAgIGNhc2UgMHgxQjogcmV0dXJuIDB4MUI7Ci0KLSAgICAgICAgLy8gVktfQ09O
VkVSVCAoMUMpIElNRSBjb252ZXJ0Ci0gICAgICAgIC8vIFZLX05PTkNPTlZFUlQgKDFEKSBJTUUg
bm9uY29udmVydAotICAgICAgICAvLyBWS19BQ0NFUFQgKDFFKSBJTUUgYWNjZXB0Ci0gICAgICAg
IC8vIFZLX01PREVDSEFOR0UgKDFGKSBJTUUgbW9kZSBjaGFuZ2UgcmVxdWVzdAotCi0gICAgICAg
IC8vIFZLX1NQQUNFICgyMCkgU1BBQ0VCQVIKLSAgICAgICAgY2FzZSAnICc6IHJldHVybiAweDIw
OwotICAgICAgICAvLyBWS19QUklPUiAoMjEpIFBBR0UgVVAga2V5Ci0gICAgICAgIGNhc2UgTlNQ
YWdlVXBGdW5jdGlvbktleTogcmV0dXJuIDB4MjE7Ci0gICAgICAgIC8vIFZLX05FWFQgKDIyKSBQ
QUdFIERPV04ga2V5Ci0gICAgICAgIGNhc2UgTlNQYWdlRG93bkZ1bmN0aW9uS2V5OiByZXR1cm4g
MHgyMjsKLSAgICAgICAgLy8gVktfRU5EICgyMykgRU5EIGtleQotICAgICAgICBjYXNlIE5TRW5k
RnVuY3Rpb25LZXk6IHJldHVybiAweDIzOwotICAgICAgICAvLyBWS19IT01FICgyNCkgSE9NRSBr
ZXkKLSAgICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleTogcmV0dXJuIDB4MjQ7Ci0gICAgICAg
IC8vIFZLX0xFRlQgKDI1KSBMRUZUIEFSUk9XIGtleQotICAgICAgICBjYXNlIE5TTGVmdEFycm93
RnVuY3Rpb25LZXk6IHJldHVybiAweDI1OwotICAgICAgICAvLyBWS19VUCAoMjYpIFVQIEFSUk9X
IGtleQotICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OiByZXR1cm4gMHgyNjsKLSAg
ICAgICAgLy8gVktfUklHSFQgKDI3KSBSSUdIVCBBUlJPVyBrZXkKLSAgICAgICAgY2FzZSBOU1Jp
Z2h0QXJyb3dGdW5jdGlvbktleTogcmV0dXJuIDB4Mjc7Ci0gICAgICAgIC8vIFZLX0RPV04gKDI4
KSBET1dOIEFSUk9XIGtleQotICAgICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6IHJl
dHVybiAweDI4OwotICAgICAgICAvLyBWS19TRUxFQ1QgKDI5KSBTRUxFQ1Qga2V5Ci0gICAgICAg
IGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleTogcmV0dXJuIDB4Mjk7Ci0gICAgICAgIC8vIFZLX1BS
SU5UICgyQSkgUFJJTlQga2V5Ci0gICAgICAgIGNhc2UgTlNQcmludEZ1bmN0aW9uS2V5OiByZXR1
cm4gMHgyQTsKLSAgICAgICAgLy8gVktfRVhFQ1VURSAoMkIpIEVYRUNVVEUga2V5Ci0gICAgICAg
IGNhc2UgTlNFeGVjdXRlRnVuY3Rpb25LZXk6IHJldHVybiAweDJCOwotICAgICAgICAvLyBWS19T
TkFQU0hPVCAoMkMpIFBSSU5UIFNDUkVFTiBrZXkKLSAgICAgICAgY2FzZSBOU1ByaW50U2NyZWVu
RnVuY3Rpb25LZXk6IHJldHVybiAweDJDOwotICAgICAgICAvLyBWS19JTlNFUlQgKDJEKSBJTlMg
a2V5Ci0gICAgICAgIGNhc2UgTlNJbnNlcnRGdW5jdGlvbktleTogY2FzZSBOU0hlbHBGdW5jdGlv
bktleTogcmV0dXJuIDB4MkQ7Ci0gICAgICAgIC8vIFZLX0RFTEVURSAoMkUpIERFTCBrZXkKLSAg
ICAgICAgY2FzZSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OiByZXR1cm4gMHgyRTsKLQotICAgICAgICAv
LyBWS19IRUxQICgyRikgSEVMUCBrZXkKLQotICAgICAgICAvLyAgKDMwKSAwIGtleQotICAgICAg
ICBjYXNlICcwJzogY2FzZSAnKSc6IHJldHVybiAweDMwOwotICAgICAgICAvLyAgKDMxKSAxIGtl
eQotICAgICAgICBjYXNlICcxJzogY2FzZSAnISc6IHJldHVybiAweDMxOwotICAgICAgICAvLyAg
KDMyKSAyIGtleQotICAgICAgICBjYXNlICcyJzogY2FzZSAnQCc6IHJldHVybiAweDMyOwotICAg
ICAgICAvLyAgKDMzKSAzIGtleQotICAgICAgICBjYXNlICczJzogY2FzZSAnIyc6IHJldHVybiAw
eDMzOwotICAgICAgICAvLyAgKDM0KSA0IGtleQotICAgICAgICBjYXNlICc0JzogY2FzZSAnJCc6
IHJldHVybiAweDM0OwotICAgICAgICAvLyAgKDM1KSA1IGtleQotICAgICAgICBjYXNlICc1Jzog
Y2FzZSAnJSc6IHJldHVybiAweDM1OwotICAgICAgICAvLyAgKDM2KSA2IGtleQotICAgICAgICBj
YXNlICc2JzogY2FzZSAnXic6IHJldHVybiAweDM2OwotICAgICAgICAvLyAgKDM3KSA3IGtleQot
ICAgICAgICBjYXNlICc3JzogY2FzZSAnJic6IHJldHVybiAweDM3OwotICAgICAgICAvLyAgKDM4
KSA4IGtleQotICAgICAgICBjYXNlICc4JzogY2FzZSAnKic6IHJldHVybiAweDM4OwotICAgICAg
ICAvLyAgKDM5KSA5IGtleQotICAgICAgICBjYXNlICc5JzogY2FzZSAnKCc6IHJldHVybiAweDM5
OwotICAgICAgICAvLyAgKDQxKSBBIGtleQotICAgICAgICBjYXNlICdhJzogY2FzZSAnQSc6IHJl
dHVybiAweDQxOwotICAgICAgICAvLyAgKDQyKSBCIGtleQotICAgICAgICBjYXNlICdiJzogY2Fz
ZSAnQic6IHJldHVybiAweDQyOwotICAgICAgICAvLyAgKDQzKSBDIGtleQotICAgICAgICBjYXNl
ICdjJzogY2FzZSAnQyc6IHJldHVybiAweDQzOwotICAgICAgICAvLyAgKDQ0KSBEIGtleQotICAg
ICAgICBjYXNlICdkJzogY2FzZSAnRCc6IHJldHVybiAweDQ0OwotICAgICAgICAvLyAgKDQ1KSBF
IGtleQotICAgICAgICBjYXNlICdlJzogY2FzZSAnRSc6IHJldHVybiAweDQ1OwotICAgICAgICAv
LyAgKDQ2KSBGIGtleQotICAgICAgICBjYXNlICdmJzogY2FzZSAnRic6IHJldHVybiAweDQ2Owot
ICAgICAgICAvLyAgKDQ3KSBHIGtleQotICAgICAgICBjYXNlICdnJzogY2FzZSAnRyc6IHJldHVy
biAweDQ3OwotICAgICAgICAvLyAgKDQ4KSBIIGtleQotICAgICAgICBjYXNlICdoJzogY2FzZSAn
SCc6IHJldHVybiAweDQ4OwotICAgICAgICAvLyAgKDQ5KSBJIGtleQotICAgICAgICBjYXNlICdp
JzogY2FzZSAnSSc6IHJldHVybiAweDQ5OwotICAgICAgICAvLyAgKDRBKSBKIGtleQotICAgICAg
ICBjYXNlICdqJzogY2FzZSAnSic6IHJldHVybiAweDRBOwotICAgICAgICAvLyAgKDRCKSBLIGtl
eQotICAgICAgICBjYXNlICdrJzogY2FzZSAnSyc6IHJldHVybiAweDRCOwotICAgICAgICAvLyAg
KDRDKSBMIGtleQotICAgICAgICBjYXNlICdsJzogY2FzZSAnTCc6IHJldHVybiAweDRDOwotICAg
ICAgICAvLyAgKDREKSBNIGtleQotICAgICAgICBjYXNlICdtJzogY2FzZSAnTSc6IHJldHVybiAw
eDREOwotICAgICAgICAvLyAgKDRFKSBOIGtleQotICAgICAgICBjYXNlICduJzogY2FzZSAnTic6
IHJldHVybiAweDRFOwotICAgICAgICAvLyAgKDRGKSBPIGtleQotICAgICAgICBjYXNlICdvJzog
Y2FzZSAnTyc6IHJldHVybiAweDRGOwotICAgICAgICAvLyAgKDUwKSBQIGtleQotICAgICAgICBj
YXNlICdwJzogY2FzZSAnUCc6IHJldHVybiAweDUwOwotICAgICAgICAvLyAgKDUxKSBRIGtleQot
ICAgICAgICBjYXNlICdxJzogY2FzZSAnUSc6IHJldHVybiAweDUxOwotICAgICAgICAvLyAgKDUy
KSBSIGtleQotICAgICAgICBjYXNlICdyJzogY2FzZSAnUic6IHJldHVybiAweDUyOwotICAgICAg
ICAvLyAgKDUzKSBTIGtleQotICAgICAgICBjYXNlICdzJzogY2FzZSAnUyc6IHJldHVybiAweDUz
OwotICAgICAgICAvLyAgKDU0KSBUIGtleQotICAgICAgICBjYXNlICd0JzogY2FzZSAnVCc6IHJl
dHVybiAweDU0OwotICAgICAgICAvLyAgKDU1KSBVIGtleQotICAgICAgICBjYXNlICd1JzogY2Fz
ZSAnVSc6IHJldHVybiAweDU1OwotICAgICAgICAvLyAgKDU2KSBWIGtleQotICAgICAgICBjYXNl
ICd2JzogY2FzZSAnVic6IHJldHVybiAweDU2OwotICAgICAgICAvLyAgKDU3KSBXIGtleQotICAg
ICAgICBjYXNlICd3JzogY2FzZSAnVyc6IHJldHVybiAweDU3OwotICAgICAgICAvLyAgKDU4KSBY
IGtleQotICAgICAgICBjYXNlICd4JzogY2FzZSAnWCc6IHJldHVybiAweDU4OwotICAgICAgICAv
LyAgKDU5KSBZIGtleQotICAgICAgICBjYXNlICd5JzogY2FzZSAnWSc6IHJldHVybiAweDU5Owot
ICAgICAgICAvLyAgKDVBKSBaIGtleQotICAgICAgICBjYXNlICd6JzogY2FzZSAnWic6IHJldHVy
biAweDVBOwotCi0gICAgICAgIC8vIFZLX0xXSU4gKDVCKSBMZWZ0IFdpbmRvd3Mga2V5IChNaWNy
b3NvZnQgTmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgLy8gVktfUldJTiAoNUMpIFJpZ2h0IFdp
bmRvd3Mga2V5IChOYXR1cmFsIGtleWJvYXJkKQotICAgICAgICAvLyBWS19BUFBTICg1RCkgQXBw
bGljYXRpb25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKLSAgICAgICAgLy8gVktfU0xFRVAgKDVG
KSBDb21wdXRlciBTbGVlcCBrZXkKLQotICAgICAgICAvLyBWS19OVU1QQUQwICg2MCkgTnVtZXJp
YyBrZXlwYWQgMCBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFEMSAoNjEpIE51bWVyaWMga2V5cGFk
IDEga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDIgKDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQot
ICAgICAgICAvLyBWS19OVU1QQUQzICg2MykgTnVtZXJpYyBrZXlwYWQgMyBrZXkKLSAgICAgICAg
Ly8gVktfTlVNUEFENCAoNjQpIE51bWVyaWMga2V5cGFkIDQga2V5Ci0gICAgICAgIC8vIFZLX05V
TVBBRDUgKDY1KSBOdW1lcmljIGtleXBhZCA1IGtleQotICAgICAgICAvLyBWS19OVU1QQUQ2ICg2
NikgTnVtZXJpYyBrZXlwYWQgNiBrZXkKLSAgICAgICAgLy8gVktfTlVNUEFENyAoNjcpIE51bWVy
aWMga2V5cGFkIDcga2V5Ci0gICAgICAgIC8vIFZLX05VTVBBRDggKDY4KSBOdW1lcmljIGtleXBh
ZCA4IGtleQotICAgICAgICAvLyBWS19OVU1QQUQ5ICg2OSkgTnVtZXJpYyBrZXlwYWQgOSBrZXkK
LSAgICAgICAgLy8gVktfTVVMVElQTFkgKDZBKSBNdWx0aXBseSBrZXkKLSAgICAgICAgLy8gVktf
QUREICg2QikgQWRkIGtleQotICAgICAgICAvLyBoYW5kbGVkIGJ5IGtleSBjb2RlIGFib3ZlCi0K
LSAgICAgICAgLy8gVktfU0VQQVJBVE9SICg2QykgU2VwYXJhdG9yIGtleQotCi0gICAgICAgIC8v
IFZLX1NVQlRSQUNUICg2RCkgU3VidHJhY3Qga2V5Ci0gICAgICAgIC8vIFZLX0RFQ0lNQUwgKDZF
KSBEZWNpbWFsIGtleQotICAgICAgICAvLyBWS19ESVZJREUgKDZGKSBEaXZpZGUga2V5Ci0gICAg
ICAgIC8vIGhhbmRsZWQgYnkga2V5IGNvZGUgYWJvdmUKLQotICAgICAgICAvLyBWS19GMSAoNzAp
IEYxIGtleQotICAgICAgICBjYXNlIE5TRjFGdW5jdGlvbktleTogcmV0dXJuIDB4NzA7Ci0gICAg
ICAgIC8vIFZLX0YyICg3MSkgRjIga2V5Ci0gICAgICAgIGNhc2UgTlNGMkZ1bmN0aW9uS2V5OiBy
ZXR1cm4gMHg3MTsKLSAgICAgICAgLy8gVktfRjMgKDcyKSBGMyBrZXkKLSAgICAgICAgY2FzZSBO
U0YzRnVuY3Rpb25LZXk6IHJldHVybiAweDcyOwotICAgICAgICAvLyBWS19GNCAoNzMpIEY0IGtl
eQotICAgICAgICBjYXNlIE5TRjRGdW5jdGlvbktleTogcmV0dXJuIDB4NzM7Ci0gICAgICAgIC8v
IFZLX0Y1ICg3NCkgRjUga2V5Ci0gICAgICAgIGNhc2UgTlNGNUZ1bmN0aW9uS2V5OiByZXR1cm4g
MHg3NDsKLSAgICAgICAgLy8gVktfRjYgKDc1KSBGNiBrZXkKLSAgICAgICAgY2FzZSBOU0Y2RnVu
Y3Rpb25LZXk6IHJldHVybiAweDc1OwotICAgICAgICAvLyBWS19GNyAoNzYpIEY3IGtleQotICAg
ICAgICBjYXNlIE5TRjdGdW5jdGlvbktleTogcmV0dXJuIDB4NzY7Ci0gICAgICAgIC8vIFZLX0Y4
ICg3NykgRjgga2V5Ci0gICAgICAgIGNhc2UgTlNGOEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3NzsK
LSAgICAgICAgLy8gVktfRjkgKDc4KSBGOSBrZXkKLSAgICAgICAgY2FzZSBOU0Y5RnVuY3Rpb25L
ZXk6IHJldHVybiAweDc4OwotICAgICAgICAvLyBWS19GMTAgKDc5KSBGMTAga2V5Ci0gICAgICAg
IGNhc2UgTlNGMTBGdW5jdGlvbktleTogcmV0dXJuIDB4Nzk7Ci0gICAgICAgIC8vIFZLX0YxMSAo
N0EpIEYxMSBrZXkKLSAgICAgICAgY2FzZSBOU0YxMUZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3QTsK
LSAgICAgICAgLy8gVktfRjEyICg3QikgRjEyIGtleQotICAgICAgICBjYXNlIE5TRjEyRnVuY3Rp
b25LZXk6IHJldHVybiAweDdCOwotICAgICAgICAvLyBWS19GMTMgKDdDKSBGMTMga2V5Ci0gICAg
ICAgIGNhc2UgTlNGMTNGdW5jdGlvbktleTogcmV0dXJuIDB4N0M7Ci0gICAgICAgIC8vIFZLX0Yx
NCAoN0QpIEYxNCBrZXkKLSAgICAgICAgY2FzZSBOU0YxNEZ1bmN0aW9uS2V5OiByZXR1cm4gMHg3
RDsKLSAgICAgICAgLy8gVktfRjE1ICg3RSkgRjE1IGtleQotICAgICAgICBjYXNlIE5TRjE1RnVu
Y3Rpb25LZXk6IHJldHVybiAweDdFOwotICAgICAgICAvLyBWS19GMTYgKDdGKSBGMTYga2V5Ci0g
ICAgICAgIGNhc2UgTlNGMTZGdW5jdGlvbktleTogcmV0dXJuIDB4N0Y7Ci0gICAgICAgIC8vIFZL
X0YxNyAoODBIKSBGMTcga2V5Ci0gICAgICAgIGNhc2UgTlNGMTdGdW5jdGlvbktleTogcmV0dXJu
IDB4ODA7Ci0gICAgICAgIC8vIFZLX0YxOCAoODFIKSBGMTgga2V5Ci0gICAgICAgIGNhc2UgTlNG
MThGdW5jdGlvbktleTogcmV0dXJuIDB4ODE7Ci0gICAgICAgIC8vIFZLX0YxOSAoODJIKSBGMTkg
a2V5Ci0gICAgICAgIGNhc2UgTlNGMTlGdW5jdGlvbktleTogcmV0dXJuIDB4ODI7Ci0gICAgICAg
IC8vIFZLX0YyMCAoODNIKSBGMjAga2V5Ci0gICAgICAgIGNhc2UgTlNGMjBGdW5jdGlvbktleTog
cmV0dXJuIDB4ODM7Ci0gICAgICAgIC8vIFZLX0YyMSAoODRIKSBGMjEga2V5Ci0gICAgICAgIGNh
c2UgTlNGMjFGdW5jdGlvbktleTogcmV0dXJuIDB4ODQ7Ci0gICAgICAgIC8vIFZLX0YyMiAoODVI
KSBGMjIga2V5Ci0gICAgICAgIGNhc2UgTlNGMjJGdW5jdGlvbktleTogcmV0dXJuIDB4ODU7Ci0g
ICAgICAgIC8vIFZLX0YyMyAoODZIKSBGMjMga2V5Ci0gICAgICAgIGNhc2UgTlNGMjNGdW5jdGlv
bktleTogcmV0dXJuIDB4ODY7Ci0gICAgICAgIC8vIFZLX0YyNCAoODdIKSBGMjQga2V5Ci0gICAg
ICAgIGNhc2UgTlNGMjRGdW5jdGlvbktleTogcmV0dXJuIDB4ODc7Ci0KLSAgICAgICAgLy8gVktf
TlVNTE9DSyAoOTApIE5VTSBMT0NLIGtleQotCi0gICAgICAgIC8vIFZLX1NDUk9MTCAoOTEpIFND
Uk9MTCBMT0NLIGtleQotICAgICAgICBjYXNlIE5TU2Nyb2xsTG9ja0Z1bmN0aW9uS2V5OiByZXR1
cm4gMHg5MTsKLQotICAgICAgICAvLyBWS19MU0hJRlQgKEEwKSBMZWZ0IFNISUZUIGtleQotICAg
ICAgICAvLyBWS19SU0hJRlQgKEExKSBSaWdodCBTSElGVCBrZXkKLSAgICAgICAgLy8gVktfTENP
TlRST0wgKEEyKSBMZWZ0IENPTlRST0wga2V5Ci0gICAgICAgIC8vIFZLX1JDT05UUk9MIChBMykg
UmlnaHQgQ09OVFJPTCBrZXkKLSAgICAgICAgLy8gVktfTE1FTlUgKEE0KSBMZWZ0IE1FTlUga2V5
Ci0gICAgICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkKLSAgICAgICAgLy8gVktf
QlJPV1NFUl9CQUNLIChBNikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEJhY2sga2V5Ci0gICAg
ICAgIC8vIFZLX0JST1dTRVJfRk9SV0FSRCAoQTcpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBG
b3J3YXJkIGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX1JFRlJFU0ggKEE4KSBXaW5kb3dzIDIw
MDAvWFA6IEJyb3dzZXIgUmVmcmVzaCBrZXkKLSAgICAgICAgLy8gVktfQlJPV1NFUl9TVE9QIChB
OSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0b3Aga2V5Ci0gICAgICAgIC8vIFZLX0JST1dT
RVJfU0VBUkNIIChBQSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFNlYXJjaCBrZXkKLSAgICAg
ICAgLy8gVktfQlJPV1NFUl9GQVZPUklURVMgKEFCKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIg
RmF2b3JpdGVzIGtleQotICAgICAgICAvLyBWS19CUk9XU0VSX0hPTUUgKEFDKSBXaW5kb3dzIDIw
MDAvWFA6IEJyb3dzZXIgU3RhcnQgYW5kIEhvbWUga2V5Ci0gICAgICAgIC8vIFZLX1ZPTFVNRV9N
VVRFIChBRCkgV2luZG93cyAyMDAwL1hQOiBWb2x1bWUgTXV0ZSBrZXkKLSAgICAgICAgLy8gVktf
Vk9MVU1FX0RPV04gKEFFKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBEb3duIGtleQotICAgICAg
ICAvLyBWS19WT0xVTUVfVVAgKEFGKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBVcCBrZXkKLSAg
ICAgICAgLy8gVktfTUVESUFfTkVYVF9UUkFDSyAoQjApIFdpbmRvd3MgMjAwMC9YUDogTmV4dCBU
cmFjayBrZXkKLSAgICAgICAgLy8gVktfTUVESUFfUFJFVl9UUkFDSyAoQjEpIFdpbmRvd3MgMjAw
MC9YUDogUHJldmlvdXMgVHJhY2sga2V5Ci0gICAgICAgIC8vIFZLX01FRElBX1NUT1AgKEIyKSBX
aW5kb3dzIDIwMDAvWFA6IFN0b3AgTWVkaWEga2V5Ci0gICAgICAgIC8vIFZLX01FRElBX1BMQVlf
UEFVU0UgKEIzKSBXaW5kb3dzIDIwMDAvWFA6IFBsYXkvUGF1c2UgTWVkaWEga2V5Ci0gICAgICAg
IC8vIFZLX0xBVU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBTdGFydCBNYWlsIGtleQot
ICAgICAgICAvLyBWS19MQVVOQ0hfTUVESUFfU0VMRUNUIChCNSkgV2luZG93cyAyMDAwL1hQOiBT
ZWxlY3QgTWVkaWEga2V5Ci0gICAgICAgIC8vIFZLX0xBVU5DSF9BUFAxIChCNikgV2luZG93cyAy
MDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAxIGtleQotICAgICAgICAvLyBWS19MQVVOQ0hfQVBQ
MiAoQjcpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMiBrZXkKLQotICAgICAg
ICAvLyBWS19PRU1fMSAoQkEpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQg
Y2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFy
ZCBrZXlib2FyZCwgdGhlICc7Oicga2V5Ci0gICAgICAgIGNhc2UgJzsnOiBjYXNlICc6JzogcmV0
dXJuIDB4QkE7Ci0gICAgICAgIC8vIFZLX09FTV9QTFVTIChCQikgV2luZG93cyAyMDAwL1hQOiBG
b3IgYW55IGNvdW50cnkvcmVnaW9uLCB0aGUgJysnIGtleQotICAgICAgICBjYXNlICc9JzogY2Fz
ZSAnKyc6IHJldHVybiAweEJCOwotICAgICAgICAvLyBWS19PRU1fQ09NTUEgKEJDKSBXaW5kb3dz
IDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnLCcga2V5Ci0gICAgICAgIGNh
c2UgJywnOiBjYXNlICc8JzogcmV0dXJuIDB4QkM7Ci0gICAgICAgIC8vIFZLX09FTV9NSU5VUyAo
QkQpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICctJyBrZXkK
LSAgICAgICAgY2FzZSAnLSc6IGNhc2UgJ18nOiByZXR1cm4gMHhCRDsKLSAgICAgICAgLy8gVktf
T0VNX1BFUklPRCAoQkUpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwg
dGhlICcuJyBrZXkKLSAgICAgICAgY2FzZSAnLic6IGNhc2UgJz4nOiByZXR1cm4gMHhCRTsKLSAg
ICAgICAgLy8gVktfT0VNXzIgKEJGKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7
IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3Rh
bmRhcmQga2V5Ym9hcmQsIHRoZSAnLz8nIGtleQotICAgICAgICBjYXNlICcvJzogY2FzZSAnPyc6
IHJldHVybiAweEJGOwotICAgICAgICAvLyBWS19PRU1fMyAoQzApIFVzZWQgZm9yIG1pc2NlbGxh
bmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9Y
UDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdgficga2V5Ci0gICAgICAgIGNh
c2UgJ2AnOiBjYXNlICd+JzogcmV0dXJuIDB4QzA7Ci0gICAgICAgIC8vIFZLX09FTV80IChEQikg
VXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2Fy
ZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJ1t7
JyBrZXkKLSAgICAgICAgY2FzZSAnWyc6IGNhc2UgJ3snOiByZXR1cm4gMHhEQjsKLSAgICAgICAg
Ly8gVktfT0VNXzUgKERDKSBVc2VkIGZvciBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlcnM7IGl0IGNh
biB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZvciB0aGUgVVMgc3RhbmRhcmQg
a2V5Ym9hcmQsIHRoZSAnXHwnIGtleQotICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ3wnOiByZXR1
cm4gMHhEQzsKLSAgICAgICAgLy8gVktfT0VNXzYgKEREKSBVc2VkIGZvciBtaXNjZWxsYW5lb3Vz
IGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLiBXaW5kb3dzIDIwMDAvWFA6IEZv
ciB0aGUgVVMgc3RhbmRhcmQga2V5Ym9hcmQsIHRoZSAnXX0nIGtleQotICAgICAgICBjYXNlICdd
JzogY2FzZSAnfSc6IHJldHVybiAweEREOwotICAgICAgICAvLyBWS19PRU1fNyAoREUpIFVzZWQg
Zm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdp
bmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdzaW5nbGUt
cXVvdGUvZG91YmxlLXF1b3RlJyBrZXkKLSAgICAgICAgY2FzZSAnXCcnOiBjYXNlICciJzogcmV0
dXJuIDB4REU7Ci0KLSAgICAgICAgLy8gVktfT0VNXzggKERGKSBVc2VkIGZvciBtaXNjZWxsYW5l
b3VzIGNoYXJhY3RlcnM7IGl0IGNhbiB2YXJ5IGJ5IGtleWJvYXJkLgotICAgICAgICAvLyBWS19P
RU1fMTAyIChFMikgV2luZG93cyAyMDAwL1hQOiBFaXRoZXIgdGhlIGFuZ2xlIGJyYWNrZXQga2V5
IG9yIHRoZSBiYWNrc2xhc2gga2V5IG9uIHRoZSBSVCAxMDIta2V5IGtleWJvYXJkCi0gICAgICAg
IC8vIFZLX1BST0NFU1NLRVkgKEU1KSBXaW5kb3dzIDk1Lzk4L01lLCBXaW5kb3dzIE5UIDQuMCwg
V2luZG93cyAyMDAwL1hQOiBJTUUgUFJPQ0VTUyBrZXkKLSAgICAgICAgLy8gVktfUEFDS0VUIChF
NykgV2luZG93cyAyMDAwL1hQOiBVc2VkIHRvIHBhc3MgVW5pY29kZSBjaGFyYWN0ZXJzIGFzIGlm
IHRoZXkgd2VyZSBrZXlzdHJva2VzLiBUaGUgVktfUEFDS0VUIGtleSBpcyB0aGUgbG93IHdvcmQg
b2YgYSAzMi1iaXQgVmlydHVhbCBLZXkgdmFsdWUgdXNlZCBmb3Igbm9uLWtleWJvYXJkIGlucHV0
IG1ldGhvZHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgUmVtYXJrIGluIEtFWUJESU5QVVQs
U2VuZElucHV0LCBXTV9LRVlET1dOLCBhbmQgV01fS0VZVVAKLSAgICAgICAgLy8gVktfQVRUTiAo
RjYpIEF0dG4ga2V5Ci0gICAgICAgIC8vIFZLX0NSU0VMIChGNykgQ3JTZWwga2V5Ci0gICAgICAg
IC8vIFZLX0VYU0VMIChGOCkgRXhTZWwga2V5Ci0gICAgICAgIC8vIFZLX0VSRU9GIChGOSkgRXJh
c2UgRU9GIGtleQotICAgICAgICAvLyBWS19QTEFZIChGQSkgUGxheSBrZXkKLSAgICAgICAgLy8g
VktfWk9PTSAoRkIpIFpvb20ga2V5Ci0gICAgICAgIC8vIFZLX05PTkFNRSAoRkMpIFJlc2VydmVk
IGZvciBmdXR1cmUgdXNlCi0gICAgICAgIC8vIFZLX1BBMSAoRkQpIFBBMSBrZXkKLSAgICAgICAg
Ly8gVktfT0VNX0NMRUFSIChGRSkgQ2xlYXIga2V5Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19
Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQoTlNFdmVudCAqZXZlbnQpCiB7CiAg
ICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkK
</data>
<flag name="review"
          id="33600"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50451</attachid>
            <date>2010-03-10 16:04:29 -0800</date>
            <delta_ts>2010-03-12 17:55:34 -0800</delta_ts>
            <desc>[PATCH] Part 3 - Share Code (make generic for both platforms)</desc>
            <filename>patch-3</filename>
            <type>text/plain</type>
            <size>15226</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDE3Y2U3MS4uZGM0YmUwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTUsNiArNSwzNCBAQAogICAgICAgICBVcHN0cmVhbSBQYXJ0IG9m
IHRoZSBpUGhvbmUgUGxhdGZvcm0gc2hhcmluZyBjb2RlIHdpdGggdGhlIE1hYyBQbGF0Zm9ybQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NzAKIAor
ICAgICAgICBQYXJ0IDMgLSBTaGFyZWQgY29kZSBiZXR3ZWVuIGlwaG9uZSBhbmQgbWFjLiBUaGUg
c2hhcmVkIGNvZGUgd2FzIHJlZmFjdG9yZWQKKyAgICAgICAgdG8gYmUgdXNhYmxlIGJ5IGJvdGgg
cGxhdGZvcm1zIHdpdGhvdXQgcGxhdGZvcm0gc3BlY2lmaWMgdHlwaW5nLCBtZWFuaW5nCisgICAg
ICAgIG5vIE5TRXZlbnQgdmVyc3VzIFdlYkV2ZW50IHNwZWNpYWwgY2FzZXMuCisKKyAgICAgICAg
ICBTaGFyZWQgY29kZSB1c2FibGUgYnkgZWl0aGVyIG1hYyBvciBpcGhvbmUgcGxhdGZvcm1zLgor
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjprZXlJZGVu
dGlmaWVyRm9yQ2hhckNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0tleUNvZGVGb3JL
ZXlDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUpOgor
ICAgICAgICAKKyAgICAgICAgICBNYWtlIHVzZSBvZiB0aGUgc2hhcmVkIGNvZGUuIEtlZXAgYW55
dGhpbmcgcGxhdGZvcm0gc3BlY2lmaWMgaW4gdGhlCisgICAgICAgICAgb3JpZ2luYWwgZmlsZSBi
ZWZvcmUgY2FsbGluZyB0aGUgc2hhcmVkIGNvZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhv
bmUvS2V5RXZlbnRJUGhvbmUubW06CisgICAgICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9y
S2V5RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmtleUlkZW50aWZpZXJGb3JLZXlFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
Ojp3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KToKKworMjAxMC0wMy0xMCAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwc3RyZWFtIFBhcnQgb2YgdGhlIGlQaG9uZSBQbGF0Zm9ybSBz
aGFyaW5nIGNvZGUgd2l0aCB0aGUgTWFjIFBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg3MAorCiAgICAgICAgIFBhcnQgMiAtIE5vIGNo
YW5nZXMgb3RoZXIgdGhhbiBtb3ZpbmcgY29kZSBhcm91bmQuCiAgICAgICAgIENvcGllZCBLZXlF
dmVudCBmdW5jdGlvbiBmcm9tIHBsYXRmb3JtL21hYyB0byBhIHBsYXRmb3JtL2NvY29hIHNoYXJl
ZCBkaXJlY3RvcnkuCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZl
bnRDb2NvYS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLmgKaW5kZXgg
ZmUxZDY2MC4uNWI0YjE4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlF
dmVudENvY29hLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLmgK
QEAgLTMwLDggKzMwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3RyaW5nOwog
Ci1TdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KTsKLWludCB3
aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KTsKK1N0cmluZyBrZXlJZGVu
dGlmaWVyRm9yQ2hhckNvZGUodW5pY2hhciBjaGFyQ29kZSk7CisKK2ludCB3aW5kb3dzS2V5Q29k
ZUZvcktleUNvZGUodWludDE2X3Qga2V5Q29kZSk7CitpbnQgd2luZG93c0tleUNvZGVGb3JDaGFy
Q29kZSh1bmljaGFyIGNoYXJDb2RlKTsKIAogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2
ZW50Q29jb2EubW0KaW5kZXggNTBlNWZlOS4uMDFjYWM5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvS2V5RXZlbnRDb2NvYS5tbQpAQCAtMzAsNDUgKzMwLDE3IEBACiAjaW1wb3J0ICJQbGF0Zm9y
bVN0cmluZy5oIgogI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAorI2lmIFBMQVRGT1JNKElQ
SE9ORSkKKyNpbXBvcnQgIktleUV2ZW50Q29kZXNJUGhvbmUuaCIKKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBrZXlJZGVudGlm
aWVyRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCitTdHJpbmcga2V5SWRlbnRpZmllckZvckNo
YXJDb2RlKHVuaWNoYXIgY2hhckNvZGUpCiB7Ci0gICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0Zs
YWdzQ2hhbmdlZCkgCi0gICAgICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAg
ICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAgICAgICAgICBjYXNlIDU1OiAvLyBM
ZWZ0IENvbW1hbmQKLSAgICAgICAgICAgICAgICByZXR1cm4gIk1ldGEiOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIkNhcHNMb2NrIjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgNTY6
IC8vIExlZnQgU2hpZnQKLSAgICAgICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAotICAgICAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJBbHQiOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAgICAgICBjYXNlIDYyOiAvLyBSaWdo
dCBDdHJsCi0gICAgICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgICB9Ci0gICAgCi0gICAg
TlNTdHJpbmcgKnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLSAgICBp
ZiAoW3MgbGVuZ3RoXSAhPSAxKSB7Ci0gICAgICAgIExPRyhFdmVudHMsICJyZWNlaXZlZCBhbiB1
bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUiLCBbcyBsZW5n
dGhdKTsKLSAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOwotICAgIH0KLSAgICB1bmljaGFy
IGMgPSBbcyBjaGFyYWN0ZXJBdEluZGV4OjBdOwotICAgIHN3aXRjaCAoYykgeworICAgIHN3aXRj
aCAoY2hhckNvZGUpIHsKICAgICAgICAgLy8gRWFjaCBpZGVudGlmaWVyIGxpc3RlZCBpbiB0aGUg
RE9NIHNwZWMgaXMgbGlzdGVkIGhlcmUuCiAgICAgICAgIC8vIE1hbnkgYXJlIHNpbXBseSBjb21t
ZW50ZWQgb3V0IHNpbmNlIHRoZXkgZG8gbm90IGFwcGVhciBvbiBzdGFuZGFyZCBNYWNpbnRvc2gg
a2V5Ym9hcmRzCiAgICAgICAgIC8vIG9yIGFyZSBvbiBhIGtleSB0aGF0IGRvZXNuJ3QgaGF2ZSBh
IGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLgpAQCAtMzUyLDEzICszMjQsMTMgQEAgU3RyaW5nIGtl
eUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgdXNlIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSB2ZW5kb3ItYXJlYSBV
bmljb2RlIHZhbHVlcyBmb3IgdGhlIGFib3ZlIGtleXMuCiAgICAgICAgICAgICAvLyBGb3Igbm93
LCBqdXN0IGZhbGwgdGhyb3VnaCB0byB0aGUgZGVmYXVsdC4KICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVSslMDRYIiwgdG9BU0NJSVVwcGVyKGMp
KTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVSslMDRYIiwgdG9BU0NJSVVw
cGVyKGNoYXJDb2RlKSk7CiAgICAgfQogfQogCi1pbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVu
dChOU0V2ZW50KiBldmVudCkKK2ludCB3aW5kb3dzS2V5Q29kZUZvcktleUNvZGUodWludDE2X3Qg
a2V5Q29kZSkKIHsKLSAgICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgIHN3aXRjaCAo
a2V5Q29kZSkgewogICAgICAgICAvLyBWS19UQUIgKDA5KSBUQUIga2V5CiAgICAgICAgIGNhc2Ug
NDg6IHJldHVybiAweDA5OwogCkBAIC00MjQsMTIgKzM5NiwxMyBAQCBpbnQgd2luZG93c0tleUNv
ZGVGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKICAgICAgICAgLy8gVktfRElWSURFICg2Rikg
RGl2aWRlIGtleQogICAgICAgICBjYXNlIDc1OiByZXR1cm4gMHg2RjsKICAgICAgfQorICAgICAK
KyAgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBOU1N0cmluZyogcyA9IFtldmVudCBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChbcyBsZW5ndGhdICE9IDEpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgc3dpdGNoIChbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKSB7CitpbnQgd2lu
ZG93c0tleUNvZGVGb3JDaGFyQ29kZSh1bmljaGFyIGNoYXJDb2RlKQoreworICAgIHN3aXRjaCAo
Y2hhckNvZGUpIHsKICAgICAgICAgLy8gVktfTEJVVFRPTiAoMDEpIExlZnQgbW91c2UgYnV0dG9u
CiAgICAgICAgIC8vIFZLX1JCVVRUT04gKDAyKSBSaWdodCBtb3VzZSBidXR0b24KICAgICAgICAg
Ly8gVktfQ0FOQ0VMICgwMykgQ29udHJvbC1icmVhayBwcm9jZXNzaW5nCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2lwaG9uZS9LZXlFdmVudElQaG9uZS5tbSBiL1dlYkNvcmUvcGxhdGZv
cm0vaXBob25lL0tleUV2ZW50SVBob25lLm1tCmluZGV4IDg3NTgzNmQuLmVlMWNlYzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaXBob25lL0tleUV2ZW50SVBob25lLm1tCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vaXBob25lL0tleUV2ZW50SVBob25lLm1tCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgog
Ci0jaW1wb3J0ICJLZXlFdmVudENvZGVzSVBob25lLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUuaD4KQEAgLTQyLDI5
MyArNDEsOSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChXZWJFdmVu
dCAqZXZlbnQpCiAgICAgICAgIExPRyhFdmVudHMsICJyZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG51
bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUiLCBbcyBsZW5ndGhdKTsKICAgICAg
ICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOwogICAgIH0KKyAgICAKICAgICB1bmljaGFyIGMgPSBD
RlN0cmluZ0dldENoYXJhY3RlckF0SW5kZXgoKENGU3RyaW5nUmVmKXMsIDApOwotICAgIHN3aXRj
aCAoYykgewotICAgICAgICAvLyBFYWNoIGlkZW50aWZpZXIgbGlzdGVkIGluIHRoZSBET00gc3Bl
YyBpcyBsaXN0ZWQgaGVyZS4KLSAgICAgICAgLy8gTWFueSBhcmUgc2ltcGx5IGNvbW1lbnRlZCBv
dXQgc2luY2UgdGhleSBkbyBub3QgYXBwZWFyIG9uIHN0YW5kYXJkIE1hY2ludG9zaCBrZXlib2Fy
ZHMKLSAgICAgICAgLy8gb3IgYXJlIG9uIGEga2V5IHRoYXQgZG9lc24ndCBoYXZlIGEgY29ycmVz
cG9uZGluZyBjaGFyYWN0ZXIuCi0KLSAgICAgICAgLy8gIkFjY2VwdCIKLSAgICAgICAgLy8gIkFs
bENhbmRpZGF0ZXMiCi0KLSAgICAgICAgLy8gIkFsdCIKLSAgICAgICAgY2FzZSBOU01lbnVGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKLQotICAgICAgICAvLyAiQXBwcyIK
LSAgICAgICAgLy8gIkJyb3dzZXJCYWNrIgotICAgICAgICAvLyAiQnJvd3NlckZvcndhcmQiCi0g
ICAgICAgIC8vICJCcm93c2VySG9tZSIKLSAgICAgICAgLy8gIkJyb3dzZXJSZWZyZXNoIgotICAg
ICAgICAvLyAiQnJvd3NlclNlYXJjaCIKLSAgICAgICAgLy8gIkJyb3dzZXJTdG9wIgotICAgICAg
ICAvLyAiQ2Fwc0xvY2siCi0KLSAgICAgICAgLy8gIkNsZWFyIgotICAgICAgICBjYXNlIE5TQ2xl
YXJMaW5lRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKLQotICAgICAg
ICAvLyAiQ29kZUlucHV0IgotICAgICAgICAvLyAiQ29tcG9zZSIKLSAgICAgICAgLy8gIkNvbnRy
b2wiCi0gICAgICAgIC8vICJDcnNlbCIKLSAgICAgICAgLy8gIkNvbnZlcnQiCi0gICAgICAgIC8v
ICJDb3B5IgotICAgICAgICAvLyAiQ3V0IgotCi0gICAgICAgIC8vICJEb3duIgotICAgICAgICBj
YXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOwot
ICAgICAgICAvLyAiRW5kIgotICAgICAgICBjYXNlIE5TRW5kRnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICByZXR1cm4gIkVuZCI7Ci0gICAgICAgIC8vICJFbnRlciIKLSAgICAgICAgY2FzZSAweDM6
IGNhc2UgMHhBOiBjYXNlIDB4RDogLy8gTWFjaW50b3NoIGNhbGxzIHRoZSBvbmUgb24gdGhlIG1h
aW4ga2V5Ym9hcmQgUmV0dXJuLCBidXQgV2luZG93cyBjYWxscyBpdCBFbnRlciwgc28gd2UnbGwg
ZG8gdGhlIHNhbWUgZm9yIHRoZSBET00KLSAgICAgICAgICAgIHJldHVybiAiRW50ZXIiOwotCi0g
ICAgICAgIC8vICJFcmFzZUVvZiIKLQotICAgICAgICAvLyAiRXhlY3V0ZSIKLSAgICAgICAgY2Fz
ZSBOU0V4ZWN1dGVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7Ci0K
LSAgICAgICAgLy8gIkV4c2VsIgotCi0gICAgICAgIC8vICJGMSIKLSAgICAgICAgY2FzZSBOU0Yx
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYxIjsKLSAgICAgICAgLy8gIkYyIgot
ICAgICAgICBjYXNlIE5TRjJGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIiOwot
ICAgICAgICAvLyAiRjMiCi0gICAgICAgIGNhc2UgTlNGM0Z1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJGMyI7Ci0gICAgICAgIC8vICJGNCIKLSAgICAgICAgY2FzZSBOU0Y0RnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkY0IjsKLSAgICAgICAgLy8gIkY1IgotICAgICAg
ICBjYXNlIE5TRjVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjUiOwotICAgICAg
ICAvLyAiRjYiCi0gICAgICAgIGNhc2UgTlNGNkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0
dXJuICJGNiI7Ci0gICAgICAgIC8vICJGNyIKLSAgICAgICAgY2FzZSBOU0Y3RnVuY3Rpb25LZXk6
Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsKLSAgICAgICAgLy8gIkY4IgotICAgICAgICBjYXNl
IE5TRjhGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjgiOwotICAgICAgICAvLyAi
RjkiCi0gICAgICAgIGNhc2UgTlNGOUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJG
OSI7Ci0gICAgICAgIC8vICJGMTAiCi0gICAgICAgIGNhc2UgTlNGMTBGdW5jdGlvbktleToKLSAg
ICAgICAgICAgIHJldHVybiAiRjEwIjsKLSAgICAgICAgLy8gIkYxMSIKLSAgICAgICAgY2FzZSBO
U0YxMUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOwotICAgICAgICAvLyAi
RjEyIgotICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4g
IkYxMiI7Ci0gICAgICAgIC8vICJGMTMiCi0gICAgICAgIGNhc2UgTlNGMTNGdW5jdGlvbktleToK
LSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKLSAgICAgICAgLy8gIkYxNCIKLSAgICAgICAgY2Fz
ZSBOU0YxNEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTQiOwotICAgICAgICAv
LyAiRjE1IgotICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1
cm4gIkYxNSI7Ci0gICAgICAgIC8vICJGMTYiCi0gICAgICAgIGNhc2UgTlNGMTZGdW5jdGlvbktl
eToKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKLSAgICAgICAgLy8gIkYxNyIKLSAgICAgICAg
Y2FzZSBOU0YxN0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTciOwotICAgICAg
ICAvLyAiRjE4IgotICAgICAgICBjYXNlIE5TRjE4RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkYxOCI7Ci0gICAgICAgIC8vICJGMTkiCi0gICAgICAgIGNhc2UgTlNGMTlGdW5jdGlv
bktleToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKLSAgICAgICAgLy8gIkYyMCIKLSAgICAg
ICAgY2FzZSBOU0YyMEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjAiOwotICAg
ICAgICAvLyAiRjIxIgotICAgICAgICBjYXNlIE5TRjIxRnVuY3Rpb25LZXk6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYyMSI7Ci0gICAgICAgIC8vICJGMjIiCi0gICAgICAgIGNhc2UgTlNGMjJGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsKLSAgICAgICAgLy8gIkYyMyIKLSAg
ICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjMiOwot
ICAgICAgICAvLyAiRjI0IgotICAgICAgICBjYXNlIE5TRjI0RnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICByZXR1cm4gIkYyNCI7Ci0KLSAgICAgICAgLy8gIkZpbmFsTW9kZSIKLQotICAgICAgICAv
LyAiRmluZCIKLSAgICAgICAgY2FzZSBOU0ZpbmRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJl
dHVybiAiRmluZCI7Ci0KLSAgICAgICAgLy8gIkZ1bGxXaWR0aCIKLSAgICAgICAgLy8gIkhhbGZX
aWR0aCIKLSAgICAgICAgLy8gIkhhbmd1bE1vZGUiCi0gICAgICAgIC8vICJIYW5qYU1vZGUiCi0K
LSAgICAgICAgLy8gIkhlbHAiCi0gICAgICAgIGNhc2UgTlNIZWxwRnVuY3Rpb25LZXk6Ci0gICAg
ICAgICAgICByZXR1cm4gIkhlbHAiOwotCi0gICAgICAgIC8vICJIaXJhZ2FuYSIKLQotICAgICAg
ICAvLyAiSG9tZSIKLSAgICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiSG9tZSI7Ci0gICAgICAgIC8vICJJbnNlcnQiCi0gICAgICAgIGNhc2UgTlNJbnNl
cnRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKLQotICAgICAgICAv
LyAiSmFwYW5lc2VIaXJhZ2FuYSIKLSAgICAgICAgLy8gIkphcGFuZXNlS2F0YWthbmEiCi0gICAg
ICAgIC8vICJKYXBhbmVzZVJvbWFqaSIKLSAgICAgICAgLy8gIkp1bmphTW9kZSIKLSAgICAgICAg
Ly8gIkthbmFNb2RlIgotICAgICAgICAvLyAiS2FuamlNb2RlIgotICAgICAgICAvLyAiS2F0YWth
bmEiCi0gICAgICAgIC8vICJMYXVuY2hBcHBsaWNhdGlvbjEiCi0gICAgICAgIC8vICJMYXVuY2hB
cHBsaWNhdGlvbjIiCi0gICAgICAgIC8vICJMYXVuY2hNYWlsIgotCi0gICAgICAgIC8vICJMZWZ0
IgotICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1
cm4gIkxlZnQiOwotCi0gICAgICAgIC8vICJNZXRhIgotICAgICAgICAvLyAiTWVkaWFOZXh0VHJh
Y2siCi0gICAgICAgIC8vICJNZWRpYVBsYXlQYXVzZSIKLSAgICAgICAgLy8gIk1lZGlhUHJldmlv
dXNUcmFjayIKLSAgICAgICAgLy8gIk1lZGlhU3RvcCIKLQotICAgICAgICAvLyAiTW9kZUNoYW5n
ZSIKLSAgICAgICAgY2FzZSBOU01vZGVTd2l0Y2hGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJl
dHVybiAiTW9kZUNoYW5nZSI7Ci0KLSAgICAgICAgLy8gIk5vbmNvbnZlcnQiCi0gICAgICAgIC8v
ICJOdW1Mb2NrIgotCi0gICAgICAgIC8vICJQYWdlRG93biIKLSAgICAgICAgY2FzZSBOU1BhZ2VE
b3duRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKLSAgICAgICAg
Ly8gIlBhZ2VVcCIKLSAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJQYWdlVXAiOwotCi0gICAgICAgIC8vICJQYXN0ZSIKLQotICAgICAgICAvLyAi
UGF1c2UiCi0gICAgICAgIGNhc2UgTlNQYXVzZUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0
dXJuICJQYXVzZSI7Ci0KLSAgICAgICAgLy8gIlBsYXkiCi0gICAgICAgIC8vICJQcmV2aW91c0Nh
bmRpZGF0ZSIKLQotICAgICAgICAvLyAiUHJpbnRTY3JlZW4iCi0gICAgICAgIGNhc2UgTlNQcmlu
dFNjcmVlbkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7Ci0K
LSAgICAgICAgLy8gIlByb2Nlc3MiCi0gICAgICAgIC8vICJQcm9wcyIKLQotICAgICAgICAvLyAi
UmlnaHQiCi0gICAgICAgIGNhc2UgTlNSaWdodEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAg
ICByZXR1cm4gIlJpZ2h0IjsKLQotICAgICAgICAvLyAiUm9tYW5DaGFyYWN0ZXJzIgotCi0gICAg
ICAgIC8vICJTY3JvbGwiCi0gICAgICAgIGNhc2UgTlNTY3JvbGxMb2NrRnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7Ci0gICAgICAgIC8vICJTZWxlY3QiCi0gICAgICAg
IGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsK
LQotICAgICAgICAvLyAiU2VsZWN0TWVkaWEiCi0gICAgICAgIC8vICJTaGlmdCIKLQotICAgICAg
ICAvLyAiU3RvcCIKLSAgICAgICAgY2FzZSBOU1N0b3BGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiU3RvcCI7Ci0gICAgICAgIC8vICJVcCIKLSAgICAgICAgY2FzZSBOU1VwQXJyb3dG
dW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiVXAiOwotICAgICAgICAvLyAiVW5kbyIK
LSAgICAgICAgY2FzZSBOU1VuZG9GdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiVW5k
byI7Ci0KLSAgICAgICAgLy8gIlZvbHVtZURvd24iCi0gICAgICAgIC8vICJWb2x1bWVNdXRlIgot
ICAgICAgICAvLyAiVm9sdW1lVXAiCi0gICAgICAgIC8vICJXaW4iCi0gICAgICAgIC8vICJab29t
IgotCi0gICAgICAgIC8vIE1vcmUgZnVuY3Rpb24ga2V5cywgbm90IGluIHRoZSBrZXkgaWRlbnRp
ZmllciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBjYXNlIE5TRjI1RnVuY3Rpb25LZXk6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYyNSI7Ci0gICAgICAgIGNhc2UgTlNGMjZGdW5jdGlvbktleToKLSAg
ICAgICAgICAgIHJldHVybiAiRjI2IjsKLSAgICAgICAgY2FzZSBOU0YyN0Z1bmN0aW9uS2V5Ogot
ICAgICAgICAgICAgcmV0dXJuICJGMjciOwotICAgICAgICBjYXNlIE5TRjI4RnVuY3Rpb25LZXk6
Ci0gICAgICAgICAgICByZXR1cm4gIkYyOCI7Ci0gICAgICAgIGNhc2UgTlNGMjlGdW5jdGlvbktl
eToKLSAgICAgICAgICAgIHJldHVybiAiRjI5IjsKLSAgICAgICAgY2FzZSBOU0YzMEZ1bmN0aW9u
S2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzAiOwotICAgICAgICBjYXNlIE5TRjMxRnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzMSI7Ci0gICAgICAgIGNhc2UgTlNGMzJGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjMyIjsKLSAgICAgICAgY2FzZSBOU0YzM0Z1
bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzMiOwotICAgICAgICBjYXNlIE5TRjM0
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzNCI7Ci0gICAgICAgIGNhc2UgTlNG
MzVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjM1IjsKLQotICAgICAgICAvLyBU
dXJuIDB4N0YgaW50byAweDA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdheXMgYmUg
MHgwOC4KLSAgICAgICAgY2FzZSAweDdGOgotICAgICAgICAgICAgcmV0dXJuICJVKzAwMDgiOwot
ICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgotICAgICAg
ICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7
Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gQWx3YXlzIHVzZSAweDA5IGZvciB0YWIgaW5zdGVh
ZCBvZiBBcHBLaXQncyBiYWNrdGFiIGNoYXJhY3Rlci4KLSAgICAgICAgY2FzZSBOU0JhY2tUYWJD
aGFyYWN0ZXI6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDAwOSI7Ci0KLSAgICAgICAgY2FzZSBO
U0JlZ2luRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNCcmVha0Z1bmN0aW9uS2V5OgotICAg
ICAgICBjYXNlIE5TQ2xlYXJEaXNwbGF5RnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNEZWxl
dGVDaGFyRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNEZWxldGVMaW5lRnVuY3Rpb25LZXk6
Ci0gICAgICAgIGNhc2UgTlNJbnNlcnRDaGFyRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNJ
bnNlcnRMaW5lRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNOZXh0RnVuY3Rpb25LZXk6Ci0g
ICAgICAgIGNhc2UgTlNQcmV2RnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNQcmludEZ1bmN0
aW9uS2V5OgotICAgICAgICBjYXNlIE5TUmVkb0Z1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5T
UmVzZXRGdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU1N5c1JlcUZ1bmN0aW9uS2V5OgotICAg
ICAgICBjYXNlIE5TU3lzdGVtRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNVc2VyRnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBzb21ldGhpbmcgb3Ro
ZXIgdGhhbiB0aGUgdmVuZG9yLWFyZWEgVW5pY29kZSB2YWx1ZXMgZm9yIHRoZSBhYm92ZSBrZXlz
LgotICAgICAgICAgICAgLy8gRm9yIG5vdywganVzdCBmYWxsIHRocm91Z2ggdG8gdGhlIGRlZmF1
bHQuCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IlUrJTA0WCIsIHRvQVNDSUlVcHBlcihjKSk7Ci0gICAgfQorICAgIHJldHVybiBrZXlJZGVudGlm
aWVyRm9yS2V5Q2hhckNvZGUoYyk7CiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZv
cm1LZXlib2FyZEV2ZW50KFdlYkV2ZW50ICpldmVudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRN
YWMubW0KaW5kZXggMGVhNjczNy4uMWU1MjkzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvS2V5RXZlbnRNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRN
YWMubW0KQEAgLTEyMiw2ICsxMjIsNTQgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdW5tb2RpZmll
ZFRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCiAgICAgcmV0dXJuIFtldmVudCBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnNdOwogfQogCitzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJG
b3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5T
RmxhZ3NDaGFuZ2VkKSAKKyAgICAgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKKyAgICAg
ICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKKyAgICAgICAgICAgIGNhc2UgNTU6IC8v
IExlZnQgQ29tbWFuZAorICAgICAgICAgICAgICAgIHJldHVybiAiTWV0YSI7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jaworICAgICAgICAgICAgICAg
IHJldHVybiAiQ2Fwc0xvY2siOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1
NjogLy8gTGVmdCBTaGlmdAorICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIlNoaWZ0IjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0CisgICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBB
bHQKKyAgICAgICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKKyAgICAgICAgICAgIGNhc2UgNjI6IC8vIFJp
Z2h0IEN0cmwKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKworICAgIE5T
U3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgaWYg
KFtzIGxlbmd0aF0gIT0gMSkgeworICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5l
eHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3Ro
XSk7CisgICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKKyAgICB9CisgICAgcmV0dXJuIGtl
eUlkZW50aWZpZXJGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKTsKK30KKworc3Rh
dGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAg
IGludCBjb2RlID0gd2luZG93c0tleUNvZGVGb3JLZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7Cisg
ICAgaWYgKGNvZGUpCisgICAgICAgIHJldHVybiBjb2RlOworICAgIAorICAgIE5TU3RyaW5nKiBz
ID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgaWYgKFtzIGxlbmd0
aF0gIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHdpbmRvd3NLZXlDb2RlRm9y
S2V5Q29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKTsKK30KKwogUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQpCiAgICAgOiBtX3R5cGUo
aXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAgOiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24pCiAgICAgLCBtX3RleHQodGV4dEZyb21FdmVudChl
dmVudCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50645</attachid>
            <date>2010-03-12 17:55:34 -0800</date>
            <delta_ts>2010-03-22 14:37:16 -0700</delta_ts>
            <desc>[PATCH] Part 3 - Share Code (make generic for both platforms) + FIX</desc>
            <filename>patch-3b</filename>
            <type>text/plain</type>
            <size>15227</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2QzNjAwNi4uMjU3YjM4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTUsNiArNSwzNCBAQAogICAgICAgICBVcHN0cmVhbSBQYXJ0IG9m
IHRoZSBpUGhvbmUgUGxhdGZvcm0gc2hhcmluZyBjb2RlIHdpdGggdGhlIE1hYyBQbGF0Zm9ybQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NzAKIAor
ICAgICAgICBQYXJ0IDMgLSBTaGFyZWQgY29kZSBiZXR3ZWVuIGlwaG9uZSBhbmQgbWFjLiBUaGUg
c2hhcmVkIGNvZGUgd2FzIHJlZmFjdG9yZWQKKyAgICAgICAgdG8gYmUgdXNhYmxlIGJ5IGJvdGgg
cGxhdGZvcm1zIHdpdGhvdXQgcGxhdGZvcm0gc3BlY2lmaWMgdHlwaW5nLCBtZWFuaW5nCisgICAg
ICAgIG5vIE5TRXZlbnQgdmVyc3VzIFdlYkV2ZW50IHNwZWNpYWwgY2FzZXMuCisKKyAgICAgICAg
ICBTaGFyZWQgY29kZSB1c2FibGUgYnkgZWl0aGVyIG1hYyBvciBpcGhvbmUgcGxhdGZvcm1zLgor
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjprZXlJZGVu
dGlmaWVyRm9yQ2hhckNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0tleUNvZGVGb3JL
ZXlDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUpOgor
ICAgICAgICAKKyAgICAgICAgICBNYWtlIHVzZSBvZiB0aGUgc2hhcmVkIGNvZGUuIEtlZXAgYW55
dGhpbmcgcGxhdGZvcm0gc3BlY2lmaWMgaW4gdGhlCisgICAgICAgICAgb3JpZ2luYWwgZmlsZSBi
ZWZvcmUgY2FsbGluZyB0aGUgc2hhcmVkIGNvZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhv
bmUvS2V5RXZlbnRJUGhvbmUubW06CisgICAgICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9y
S2V5RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmtleUlkZW50aWZpZXJGb3JLZXlFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
Ojp3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KToKKworMjAxMC0wMy0xMCAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwc3RyZWFtIFBhcnQgb2YgdGhlIGlQaG9uZSBQbGF0Zm9ybSBz
aGFyaW5nIGNvZGUgd2l0aCB0aGUgTWFjIFBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg3MAorCiAgICAgICAgIFBhcnQgMiAtIE5vIGNo
YW5nZXMgb3RoZXIgdGhhbiBtb3ZpbmcgY29kZSBhcm91bmQuCiAgICAgICAgIENvcGllZCBLZXlF
dmVudCBmdW5jdGlvbiBmcm9tIHBsYXRmb3JtL21hYyB0byBhIHBsYXRmb3JtL2NvY29hIHNoYXJl
ZCBkaXJlY3RvcnkuCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvS2V5RXZl
bnRDb2NvYS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLmgKaW5kZXgg
ZmUxZDY2MC4uNWI0YjE4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlF
dmVudENvY29hLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLmgK
QEAgLTMwLDggKzMwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3RyaW5nOwog
Ci1TdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KTsKLWludCB3
aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KTsKK1N0cmluZyBrZXlJZGVu
dGlmaWVyRm9yQ2hhckNvZGUodW5pY2hhciBjaGFyQ29kZSk7CisKK2ludCB3aW5kb3dzS2V5Q29k
ZUZvcktleUNvZGUodWludDE2X3Qga2V5Q29kZSk7CitpbnQgd2luZG93c0tleUNvZGVGb3JDaGFy
Q29kZSh1bmljaGFyIGNoYXJDb2RlKTsKIAogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2
ZW50Q29jb2EubW0KaW5kZXggNTBlNWZlOS4uMDFjYWM5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvS2V5RXZlbnRDb2NvYS5tbQpAQCAtMzAsNDUgKzMwLDE3IEBACiAjaW1wb3J0ICJQbGF0Zm9y
bVN0cmluZy5oIgogI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAorI2lmIFBMQVRGT1JNKElQ
SE9ORSkKKyNpbXBvcnQgIktleUV2ZW50Q29kZXNJUGhvbmUuaCIKKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBrZXlJZGVudGlm
aWVyRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCitTdHJpbmcga2V5SWRlbnRpZmllckZvckNo
YXJDb2RlKHVuaWNoYXIgY2hhckNvZGUpCiB7Ci0gICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0Zs
YWdzQ2hhbmdlZCkgCi0gICAgICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAg
ICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAgICAgICAgICBjYXNlIDU1OiAvLyBM
ZWZ0IENvbW1hbmQKLSAgICAgICAgICAgICAgICByZXR1cm4gIk1ldGEiOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIkNhcHNMb2NrIjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgNTY6
IC8vIExlZnQgU2hpZnQKLSAgICAgICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAotICAgICAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJBbHQiOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAgICAgICBjYXNlIDYyOiAvLyBSaWdo
dCBDdHJsCi0gICAgICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgICB9Ci0gICAgCi0gICAg
TlNTdHJpbmcgKnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLSAgICBp
ZiAoW3MgbGVuZ3RoXSAhPSAxKSB7Ci0gICAgICAgIExPRyhFdmVudHMsICJyZWNlaXZlZCBhbiB1
bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUiLCBbcyBsZW5n
dGhdKTsKLSAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOwotICAgIH0KLSAgICB1bmljaGFy
IGMgPSBbcyBjaGFyYWN0ZXJBdEluZGV4OjBdOwotICAgIHN3aXRjaCAoYykgeworICAgIHN3aXRj
aCAoY2hhckNvZGUpIHsKICAgICAgICAgLy8gRWFjaCBpZGVudGlmaWVyIGxpc3RlZCBpbiB0aGUg
RE9NIHNwZWMgaXMgbGlzdGVkIGhlcmUuCiAgICAgICAgIC8vIE1hbnkgYXJlIHNpbXBseSBjb21t
ZW50ZWQgb3V0IHNpbmNlIHRoZXkgZG8gbm90IGFwcGVhciBvbiBzdGFuZGFyZCBNYWNpbnRvc2gg
a2V5Ym9hcmRzCiAgICAgICAgIC8vIG9yIGFyZSBvbiBhIGtleSB0aGF0IGRvZXNuJ3QgaGF2ZSBh
IGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLgpAQCAtMzUyLDEzICszMjQsMTMgQEAgU3RyaW5nIGtl
eUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgdXNlIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSB2ZW5kb3ItYXJlYSBV
bmljb2RlIHZhbHVlcyBmb3IgdGhlIGFib3ZlIGtleXMuCiAgICAgICAgICAgICAvLyBGb3Igbm93
LCBqdXN0IGZhbGwgdGhyb3VnaCB0byB0aGUgZGVmYXVsdC4KICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVSslMDRYIiwgdG9BU0NJSVVwcGVyKGMp
KTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVSslMDRYIiwgdG9BU0NJSVVw
cGVyKGNoYXJDb2RlKSk7CiAgICAgfQogfQogCi1pbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVu
dChOU0V2ZW50KiBldmVudCkKK2ludCB3aW5kb3dzS2V5Q29kZUZvcktleUNvZGUodWludDE2X3Qg
a2V5Q29kZSkKIHsKLSAgICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgIHN3aXRjaCAo
a2V5Q29kZSkgewogICAgICAgICAvLyBWS19UQUIgKDA5KSBUQUIga2V5CiAgICAgICAgIGNhc2Ug
NDg6IHJldHVybiAweDA5OwogCkBAIC00MjQsMTIgKzM5NiwxMyBAQCBpbnQgd2luZG93c0tleUNv
ZGVGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKICAgICAgICAgLy8gVktfRElWSURFICg2Rikg
RGl2aWRlIGtleQogICAgICAgICBjYXNlIDc1OiByZXR1cm4gMHg2RjsKICAgICAgfQorICAgICAK
KyAgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBOU1N0cmluZyogcyA9IFtldmVudCBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChbcyBsZW5ndGhdICE9IDEpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgc3dpdGNoIChbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKSB7CitpbnQgd2lu
ZG93c0tleUNvZGVGb3JDaGFyQ29kZSh1bmljaGFyIGNoYXJDb2RlKQoreworICAgIHN3aXRjaCAo
Y2hhckNvZGUpIHsKICAgICAgICAgLy8gVktfTEJVVFRPTiAoMDEpIExlZnQgbW91c2UgYnV0dG9u
CiAgICAgICAgIC8vIFZLX1JCVVRUT04gKDAyKSBSaWdodCBtb3VzZSBidXR0b24KICAgICAgICAg
Ly8gVktfQ0FOQ0VMICgwMykgQ29udHJvbC1icmVhayBwcm9jZXNzaW5nCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2lwaG9uZS9LZXlFdmVudElQaG9uZS5tbSBiL1dlYkNvcmUvcGxhdGZv
cm0vaXBob25lL0tleUV2ZW50SVBob25lLm1tCmluZGV4IDg3NTgzNmQuLmVlMWNlYzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaXBob25lL0tleUV2ZW50SVBob25lLm1tCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vaXBob25lL0tleUV2ZW50SVBob25lLm1tCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgog
Ci0jaW1wb3J0ICJLZXlFdmVudENvZGVzSVBob25lLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUuaD4KQEAgLTQyLDI5
MyArNDEsOSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChXZWJFdmVu
dCAqZXZlbnQpCiAgICAgICAgIExPRyhFdmVudHMsICJyZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG51
bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUiLCBbcyBsZW5ndGhdKTsKICAgICAg
ICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOwogICAgIH0KKyAgICAKICAgICB1bmljaGFyIGMgPSBD
RlN0cmluZ0dldENoYXJhY3RlckF0SW5kZXgoKENGU3RyaW5nUmVmKXMsIDApOwotICAgIHN3aXRj
aCAoYykgewotICAgICAgICAvLyBFYWNoIGlkZW50aWZpZXIgbGlzdGVkIGluIHRoZSBET00gc3Bl
YyBpcyBsaXN0ZWQgaGVyZS4KLSAgICAgICAgLy8gTWFueSBhcmUgc2ltcGx5IGNvbW1lbnRlZCBv
dXQgc2luY2UgdGhleSBkbyBub3QgYXBwZWFyIG9uIHN0YW5kYXJkIE1hY2ludG9zaCBrZXlib2Fy
ZHMKLSAgICAgICAgLy8gb3IgYXJlIG9uIGEga2V5IHRoYXQgZG9lc24ndCBoYXZlIGEgY29ycmVz
cG9uZGluZyBjaGFyYWN0ZXIuCi0KLSAgICAgICAgLy8gIkFjY2VwdCIKLSAgICAgICAgLy8gIkFs
bENhbmRpZGF0ZXMiCi0KLSAgICAgICAgLy8gIkFsdCIKLSAgICAgICAgY2FzZSBOU01lbnVGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKLQotICAgICAgICAvLyAiQXBwcyIK
LSAgICAgICAgLy8gIkJyb3dzZXJCYWNrIgotICAgICAgICAvLyAiQnJvd3NlckZvcndhcmQiCi0g
ICAgICAgIC8vICJCcm93c2VySG9tZSIKLSAgICAgICAgLy8gIkJyb3dzZXJSZWZyZXNoIgotICAg
ICAgICAvLyAiQnJvd3NlclNlYXJjaCIKLSAgICAgICAgLy8gIkJyb3dzZXJTdG9wIgotICAgICAg
ICAvLyAiQ2Fwc0xvY2siCi0KLSAgICAgICAgLy8gIkNsZWFyIgotICAgICAgICBjYXNlIE5TQ2xl
YXJMaW5lRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKLQotICAgICAg
ICAvLyAiQ29kZUlucHV0IgotICAgICAgICAvLyAiQ29tcG9zZSIKLSAgICAgICAgLy8gIkNvbnRy
b2wiCi0gICAgICAgIC8vICJDcnNlbCIKLSAgICAgICAgLy8gIkNvbnZlcnQiCi0gICAgICAgIC8v
ICJDb3B5IgotICAgICAgICAvLyAiQ3V0IgotCi0gICAgICAgIC8vICJEb3duIgotICAgICAgICBj
YXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOwot
ICAgICAgICAvLyAiRW5kIgotICAgICAgICBjYXNlIE5TRW5kRnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICByZXR1cm4gIkVuZCI7Ci0gICAgICAgIC8vICJFbnRlciIKLSAgICAgICAgY2FzZSAweDM6
IGNhc2UgMHhBOiBjYXNlIDB4RDogLy8gTWFjaW50b3NoIGNhbGxzIHRoZSBvbmUgb24gdGhlIG1h
aW4ga2V5Ym9hcmQgUmV0dXJuLCBidXQgV2luZG93cyBjYWxscyBpdCBFbnRlciwgc28gd2UnbGwg
ZG8gdGhlIHNhbWUgZm9yIHRoZSBET00KLSAgICAgICAgICAgIHJldHVybiAiRW50ZXIiOwotCi0g
ICAgICAgIC8vICJFcmFzZUVvZiIKLQotICAgICAgICAvLyAiRXhlY3V0ZSIKLSAgICAgICAgY2Fz
ZSBOU0V4ZWN1dGVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7Ci0K
LSAgICAgICAgLy8gIkV4c2VsIgotCi0gICAgICAgIC8vICJGMSIKLSAgICAgICAgY2FzZSBOU0Yx
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYxIjsKLSAgICAgICAgLy8gIkYyIgot
ICAgICAgICBjYXNlIE5TRjJGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIiOwot
ICAgICAgICAvLyAiRjMiCi0gICAgICAgIGNhc2UgTlNGM0Z1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJGMyI7Ci0gICAgICAgIC8vICJGNCIKLSAgICAgICAgY2FzZSBOU0Y0RnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkY0IjsKLSAgICAgICAgLy8gIkY1IgotICAgICAg
ICBjYXNlIE5TRjVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjUiOwotICAgICAg
ICAvLyAiRjYiCi0gICAgICAgIGNhc2UgTlNGNkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0
dXJuICJGNiI7Ci0gICAgICAgIC8vICJGNyIKLSAgICAgICAgY2FzZSBOU0Y3RnVuY3Rpb25LZXk6
Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsKLSAgICAgICAgLy8gIkY4IgotICAgICAgICBjYXNl
IE5TRjhGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjgiOwotICAgICAgICAvLyAi
RjkiCi0gICAgICAgIGNhc2UgTlNGOUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJG
OSI7Ci0gICAgICAgIC8vICJGMTAiCi0gICAgICAgIGNhc2UgTlNGMTBGdW5jdGlvbktleToKLSAg
ICAgICAgICAgIHJldHVybiAiRjEwIjsKLSAgICAgICAgLy8gIkYxMSIKLSAgICAgICAgY2FzZSBO
U0YxMUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOwotICAgICAgICAvLyAi
RjEyIgotICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4g
IkYxMiI7Ci0gICAgICAgIC8vICJGMTMiCi0gICAgICAgIGNhc2UgTlNGMTNGdW5jdGlvbktleToK
LSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKLSAgICAgICAgLy8gIkYxNCIKLSAgICAgICAgY2Fz
ZSBOU0YxNEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTQiOwotICAgICAgICAv
LyAiRjE1IgotICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1
cm4gIkYxNSI7Ci0gICAgICAgIC8vICJGMTYiCi0gICAgICAgIGNhc2UgTlNGMTZGdW5jdGlvbktl
eToKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKLSAgICAgICAgLy8gIkYxNyIKLSAgICAgICAg
Y2FzZSBOU0YxN0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTciOwotICAgICAg
ICAvLyAiRjE4IgotICAgICAgICBjYXNlIE5TRjE4RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkYxOCI7Ci0gICAgICAgIC8vICJGMTkiCi0gICAgICAgIGNhc2UgTlNGMTlGdW5jdGlv
bktleToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKLSAgICAgICAgLy8gIkYyMCIKLSAgICAg
ICAgY2FzZSBOU0YyMEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjAiOwotICAg
ICAgICAvLyAiRjIxIgotICAgICAgICBjYXNlIE5TRjIxRnVuY3Rpb25LZXk6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYyMSI7Ci0gICAgICAgIC8vICJGMjIiCi0gICAgICAgIGNhc2UgTlNGMjJGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsKLSAgICAgICAgLy8gIkYyMyIKLSAg
ICAgICAgY2FzZSBOU0YyM0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjMiOwot
ICAgICAgICAvLyAiRjI0IgotICAgICAgICBjYXNlIE5TRjI0RnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICByZXR1cm4gIkYyNCI7Ci0KLSAgICAgICAgLy8gIkZpbmFsTW9kZSIKLQotICAgICAgICAv
LyAiRmluZCIKLSAgICAgICAgY2FzZSBOU0ZpbmRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJl
dHVybiAiRmluZCI7Ci0KLSAgICAgICAgLy8gIkZ1bGxXaWR0aCIKLSAgICAgICAgLy8gIkhhbGZX
aWR0aCIKLSAgICAgICAgLy8gIkhhbmd1bE1vZGUiCi0gICAgICAgIC8vICJIYW5qYU1vZGUiCi0K
LSAgICAgICAgLy8gIkhlbHAiCi0gICAgICAgIGNhc2UgTlNIZWxwRnVuY3Rpb25LZXk6Ci0gICAg
ICAgICAgICByZXR1cm4gIkhlbHAiOwotCi0gICAgICAgIC8vICJIaXJhZ2FuYSIKLQotICAgICAg
ICAvLyAiSG9tZSIKLSAgICAgICAgY2FzZSBOU0hvbWVGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiSG9tZSI7Ci0gICAgICAgIC8vICJJbnNlcnQiCi0gICAgICAgIGNhc2UgTlNJbnNl
cnRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKLQotICAgICAgICAv
LyAiSmFwYW5lc2VIaXJhZ2FuYSIKLSAgICAgICAgLy8gIkphcGFuZXNlS2F0YWthbmEiCi0gICAg
ICAgIC8vICJKYXBhbmVzZVJvbWFqaSIKLSAgICAgICAgLy8gIkp1bmphTW9kZSIKLSAgICAgICAg
Ly8gIkthbmFNb2RlIgotICAgICAgICAvLyAiS2FuamlNb2RlIgotICAgICAgICAvLyAiS2F0YWth
bmEiCi0gICAgICAgIC8vICJMYXVuY2hBcHBsaWNhdGlvbjEiCi0gICAgICAgIC8vICJMYXVuY2hB
cHBsaWNhdGlvbjIiCi0gICAgICAgIC8vICJMYXVuY2hNYWlsIgotCi0gICAgICAgIC8vICJMZWZ0
IgotICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1
cm4gIkxlZnQiOwotCi0gICAgICAgIC8vICJNZXRhIgotICAgICAgICAvLyAiTWVkaWFOZXh0VHJh
Y2siCi0gICAgICAgIC8vICJNZWRpYVBsYXlQYXVzZSIKLSAgICAgICAgLy8gIk1lZGlhUHJldmlv
dXNUcmFjayIKLSAgICAgICAgLy8gIk1lZGlhU3RvcCIKLQotICAgICAgICAvLyAiTW9kZUNoYW5n
ZSIKLSAgICAgICAgY2FzZSBOU01vZGVTd2l0Y2hGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJl
dHVybiAiTW9kZUNoYW5nZSI7Ci0KLSAgICAgICAgLy8gIk5vbmNvbnZlcnQiCi0gICAgICAgIC8v
ICJOdW1Mb2NrIgotCi0gICAgICAgIC8vICJQYWdlRG93biIKLSAgICAgICAgY2FzZSBOU1BhZ2VE
b3duRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKLSAgICAgICAg
Ly8gIlBhZ2VVcCIKLSAgICAgICAgY2FzZSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJQYWdlVXAiOwotCi0gICAgICAgIC8vICJQYXN0ZSIKLQotICAgICAgICAvLyAi
UGF1c2UiCi0gICAgICAgIGNhc2UgTlNQYXVzZUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0
dXJuICJQYXVzZSI7Ci0KLSAgICAgICAgLy8gIlBsYXkiCi0gICAgICAgIC8vICJQcmV2aW91c0Nh
bmRpZGF0ZSIKLQotICAgICAgICAvLyAiUHJpbnRTY3JlZW4iCi0gICAgICAgIGNhc2UgTlNQcmlu
dFNjcmVlbkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7Ci0K
LSAgICAgICAgLy8gIlByb2Nlc3MiCi0gICAgICAgIC8vICJQcm9wcyIKLQotICAgICAgICAvLyAi
UmlnaHQiCi0gICAgICAgIGNhc2UgTlNSaWdodEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAg
ICByZXR1cm4gIlJpZ2h0IjsKLQotICAgICAgICAvLyAiUm9tYW5DaGFyYWN0ZXJzIgotCi0gICAg
ICAgIC8vICJTY3JvbGwiCi0gICAgICAgIGNhc2UgTlNTY3JvbGxMb2NrRnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7Ci0gICAgICAgIC8vICJTZWxlY3QiCi0gICAgICAg
IGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsK
LQotICAgICAgICAvLyAiU2VsZWN0TWVkaWEiCi0gICAgICAgIC8vICJTaGlmdCIKLQotICAgICAg
ICAvLyAiU3RvcCIKLSAgICAgICAgY2FzZSBOU1N0b3BGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiU3RvcCI7Ci0gICAgICAgIC8vICJVcCIKLSAgICAgICAgY2FzZSBOU1VwQXJyb3dG
dW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiVXAiOwotICAgICAgICAvLyAiVW5kbyIK
LSAgICAgICAgY2FzZSBOU1VuZG9GdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiVW5k
byI7Ci0KLSAgICAgICAgLy8gIlZvbHVtZURvd24iCi0gICAgICAgIC8vICJWb2x1bWVNdXRlIgot
ICAgICAgICAvLyAiVm9sdW1lVXAiCi0gICAgICAgIC8vICJXaW4iCi0gICAgICAgIC8vICJab29t
IgotCi0gICAgICAgIC8vIE1vcmUgZnVuY3Rpb24ga2V5cywgbm90IGluIHRoZSBrZXkgaWRlbnRp
ZmllciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBjYXNlIE5TRjI1RnVuY3Rpb25LZXk6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYyNSI7Ci0gICAgICAgIGNhc2UgTlNGMjZGdW5jdGlvbktleToKLSAg
ICAgICAgICAgIHJldHVybiAiRjI2IjsKLSAgICAgICAgY2FzZSBOU0YyN0Z1bmN0aW9uS2V5Ogot
ICAgICAgICAgICAgcmV0dXJuICJGMjciOwotICAgICAgICBjYXNlIE5TRjI4RnVuY3Rpb25LZXk6
Ci0gICAgICAgICAgICByZXR1cm4gIkYyOCI7Ci0gICAgICAgIGNhc2UgTlNGMjlGdW5jdGlvbktl
eToKLSAgICAgICAgICAgIHJldHVybiAiRjI5IjsKLSAgICAgICAgY2FzZSBOU0YzMEZ1bmN0aW9u
S2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzAiOwotICAgICAgICBjYXNlIE5TRjMxRnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzMSI7Ci0gICAgICAgIGNhc2UgTlNGMzJGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjMyIjsKLSAgICAgICAgY2FzZSBOU0YzM0Z1
bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzMiOwotICAgICAgICBjYXNlIE5TRjM0
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzNCI7Ci0gICAgICAgIGNhc2UgTlNG
MzVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjM1IjsKLQotICAgICAgICAvLyBU
dXJuIDB4N0YgaW50byAweDA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdheXMgYmUg
MHgwOC4KLSAgICAgICAgY2FzZSAweDdGOgotICAgICAgICAgICAgcmV0dXJuICJVKzAwMDgiOwot
ICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgotICAgICAg
ICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7
Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gQWx3YXlzIHVzZSAweDA5IGZvciB0YWIgaW5zdGVh
ZCBvZiBBcHBLaXQncyBiYWNrdGFiIGNoYXJhY3Rlci4KLSAgICAgICAgY2FzZSBOU0JhY2tUYWJD
aGFyYWN0ZXI6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDAwOSI7Ci0KLSAgICAgICAgY2FzZSBO
U0JlZ2luRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNCcmVha0Z1bmN0aW9uS2V5OgotICAg
ICAgICBjYXNlIE5TQ2xlYXJEaXNwbGF5RnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNEZWxl
dGVDaGFyRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNEZWxldGVMaW5lRnVuY3Rpb25LZXk6
Ci0gICAgICAgIGNhc2UgTlNJbnNlcnRDaGFyRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNJ
bnNlcnRMaW5lRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNOZXh0RnVuY3Rpb25LZXk6Ci0g
ICAgICAgIGNhc2UgTlNQcmV2RnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNQcmludEZ1bmN0
aW9uS2V5OgotICAgICAgICBjYXNlIE5TUmVkb0Z1bmN0aW9uS2V5OgotICAgICAgICBjYXNlIE5T
UmVzZXRGdW5jdGlvbktleToKLSAgICAgICAgY2FzZSBOU1N5c1JlcUZ1bmN0aW9uS2V5OgotICAg
ICAgICBjYXNlIE5TU3lzdGVtRnVuY3Rpb25LZXk6Ci0gICAgICAgIGNhc2UgTlNVc2VyRnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBzb21ldGhpbmcgb3Ro
ZXIgdGhhbiB0aGUgdmVuZG9yLWFyZWEgVW5pY29kZSB2YWx1ZXMgZm9yIHRoZSBhYm92ZSBrZXlz
LgotICAgICAgICAgICAgLy8gRm9yIG5vdywganVzdCBmYWxsIHRocm91Z2ggdG8gdGhlIGRlZmF1
bHQuCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IlUrJTA0WCIsIHRvQVNDSUlVcHBlcihjKSk7Ci0gICAgfQorICAgIHJldHVybiBrZXlJZGVudGlm
aWVyRm9yS2V5Q2hhckNvZGUoYyk7CiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZv
cm1LZXlib2FyZEV2ZW50KFdlYkV2ZW50ICpldmVudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRN
YWMubW0KaW5kZXggYjgyNzkxOS4uMmRkNjVhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvS2V5RXZlbnRNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRN
YWMubW0KQEAgLTEyMiw2ICsxMjIsNTQgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdW5tb2RpZmll
ZFRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCiAgICAgcmV0dXJuIFtldmVudCBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnNdOwogfQogCitzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJG
b3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5T
RmxhZ3NDaGFuZ2VkKSAKKyAgICAgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKKyAgICAg
ICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKKyAgICAgICAgICAgIGNhc2UgNTU6IC8v
IExlZnQgQ29tbWFuZAorICAgICAgICAgICAgICAgIHJldHVybiAiTWV0YSI7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jaworICAgICAgICAgICAgICAg
IHJldHVybiAiQ2Fwc0xvY2siOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1
NjogLy8gTGVmdCBTaGlmdAorICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIlNoaWZ0IjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0CisgICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBB
bHQKKyAgICAgICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKKyAgICAgICAgICAgIGNhc2UgNjI6IC8vIFJp
Z2h0IEN0cmwKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKworICAgIE5T
U3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgaWYg
KFtzIGxlbmd0aF0gIT0gMSkgeworICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5l
eHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3Ro
XSk7CisgICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKKyAgICB9CisgICAgcmV0dXJuIGtl
eUlkZW50aWZpZXJGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKTsKK30KKworc3Rh
dGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAg
IGludCBjb2RlID0gd2luZG93c0tleUNvZGVGb3JLZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7Cisg
ICAgaWYgKGNvZGUpCisgICAgICAgIHJldHVybiBjb2RlOworICAgIAorICAgIE5TU3RyaW5nKiBz
ID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgaWYgKFtzIGxlbmd0
aF0gIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHdpbmRvd3NLZXlDb2RlRm9y
Q2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSk7Cit9CisKIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIDogbV90eXBl
KGlzS2V5VXBFdmVudChldmVudCkgPyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwIDogUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQogICAgICwgbV90ZXh0KHRleHRGcm9tRXZlbnQo
ZXZlbnQpKQo=
</data>
<flag name="review"
          id="33820"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51380</attachid>
            <date>2010-03-22 18:39:15 -0700</date>
            <delta_ts>2010-03-22 20:29:44 -0700</delta_ts>
            <desc>[PATCH] Upstream Minor Fixes to MatchDownstream</desc>
            <filename>fixes.patch</filename>
            <type>text/plain</type>
            <size>1725</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2I1YjExMy4uMTc1MTljOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMy0yMiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwc3RyZWFtIGlQaG9uZSBLZXlFdmVudCBwbGF0Zm9ybSBjb2Rl
IGFuZCBzaGFyZSB3aXRoIE1hYyBwbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NzAKKworICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS9L
ZXlFdmVudENvZGVzSVBob25lLmg6IEltcHJvcGVyIGNvbW1lbnQgZm9yICNlbmRpZi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pcGhvbmUvS2V5RXZlbnRJUGhvbmUubW06IEZpeGVkIGhlYWRlcnMuCisK
IDIwMTAtMDMtMjIgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2lwaG9uZS9LZXlFdmVudENvZGVzSVBob25lLmggYi9XZWJDb3JlL3BsYXRmb3JtL2lwaG9uZS9L
ZXlFdmVudENvZGVzSVBob25lLmgKaW5kZXggMDE2NmQ3MC4uMTgwZDcwOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9pcGhvbmUvS2V5RXZlbnRDb2Rlc0lQaG9uZS5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vaXBob25lL0tleUV2ZW50Q29kZXNJUGhvbmUuaApAQCAtMTE4LDQgKzExOCw0
IEBAIGVudW0gewogICAgIE5TRGVsZXRlQ2hhcmFjdGVyID0gMHgwMDdmCiB9OwogCi0jZW5kaWYg
IUtleUV2ZW50Q29kZXNJUGhvbmVfaAorI2VuZGlmIC8vIEtleUV2ZW50Q29kZXNJUGhvbmVfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pcGhvbmUvS2V5RXZlbnRJUGhvbmUubW0gYi9X
ZWJDb3JlL3BsYXRmb3JtL2lwaG9uZS9LZXlFdmVudElQaG9uZS5tbQppbmRleCAyNzUxMzYzLi5m
Mjk5OWQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2lwaG9uZS9LZXlFdmVudElQaG9u
ZS5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2lwaG9uZS9LZXlFdmVudElQaG9uZS5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDkg
QEAKIAogI2lmIFBMQVRGT1JNKElQSE9ORSkKIAotI2ltcG9ydCAiS2V5RXZlbnRDb2Rlc0lQaG9u
ZS5oIgorI2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiV2ViRXZlbnQuaCIKLSNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXVEY7CiAK
</data>
<flag name="review"
          id="34619"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>